曹解放,韓雪峰,劉雪瑞,張偉民
(61365部隊,天津 300140)
GNSS野外測量人員在采集完數(shù)據(jù)以后,必須對所采集的數(shù)據(jù)進(jìn)行質(zhì)量檢查,以檢核數(shù)據(jù)是否合格,作為遷站或者加測的依據(jù)[1]。在實際的野外作業(yè)中,通常采用TEQC軟件對觀測數(shù)據(jù)進(jìn)行質(zhì)量檢查,該軟件是一款功能強(qiáng)大且簡單易用的GNSS數(shù)據(jù)預(yù)處理公開免費(fèi)軟件,它的應(yīng)用非常廣泛,主要功能有格式轉(zhuǎn)換、編輯和質(zhì)量檢核等。它對數(shù)據(jù)質(zhì)量的檢核可以反映GNSS數(shù)據(jù)的電離層延遲、多路徑影響、接收機(jī)周跳、衛(wèi)星信號信噪比等信息[2]。
然而,在Windows操作系統(tǒng)下使用TEQC軟件,只能通過DOS窗口發(fā)送命令,人機(jī)交互性差。給部分計算機(jī)知識匱乏的野外作業(yè)人員帶來極大不便,增加了作業(yè)的難度。而且在DOS窗口下無法完成多級目錄下原始數(shù)據(jù)的檢索和自動批量處理,檢查結(jié)果顯示不夠直觀,無法完成大量數(shù)據(jù)的質(zhì)量檢查結(jié)果統(tǒng)計[3]。
為此,本文根據(jù)多年的野外GNSS數(shù)據(jù)采集作業(yè)經(jīng)驗和實際作業(yè)需求,開發(fā)了具有可視化界面、可批量快速質(zhì)量檢查、結(jié)果Excel報表輸出功能的數(shù)據(jù)質(zhì)量檢查程序。
程序主要分為數(shù)據(jù)檢索、質(zhì)量檢查和結(jié)果輸出三個功能。
數(shù)據(jù)檢索功能主要是完成對在指定目錄(包含子目錄)下特定格式數(shù)據(jù)文件的搜索,并記錄他們的路徑,以便下一步的數(shù)據(jù)質(zhì)量檢查。
在C#語言中,通過System IO命名空間下的FileSystemInfo類保存文件的基本信息(文件名、大小、路徑等),利用循環(huán)、遞歸調(diào)用、判斷等方法,可以檢索到指定目錄下符合用戶要求的所有文件[4-5]?;谝陨显?本程序設(shè)計了“數(shù)據(jù)類型選擇”和“所在目錄選擇”兩組控件,以便用戶查找數(shù)據(jù)。部分代碼如下:
private void SearchFiles(string filePath, ref List
{
DirectoryInfo dirif=new DirectoryInfo(filePath);
FileSystemInfo[]fsi=dirif.GetFileSystemInfos();
//獲取文件夾下的文件
foreach (FileSystemInfo i in fsi)
{
if (i is DirectoryInfo)//如果i是文件夾
{
SearchFiles(i.FullName, ref filesNames);
//遞歸調(diào)用
}
else
if(Path.GetExtension(i.FullName)==".tps")
filesNames.Add(i.FullName);
}
}
以上代碼中,利用一次遞歸調(diào)用實現(xiàn)了對主目錄下所有子目錄的搜索,利用Path.GetExtension()函數(shù)獲取文件的后綴名,記錄后綴名為“.tps”的文件,返回到字符串集合filesNames中。通過上述方法可以搜索目錄下指定文件類型的所有文件。
本程序在數(shù)據(jù)類型選擇時可選擇標(biāo)準(zhǔn)格式O文件,也可以選擇接收機(jī)自定義格式tps文件。前者可直接進(jìn)行數(shù)據(jù)質(zhì)量檢查,后者需先進(jìn)行格式轉(zhuǎn)換再進(jìn)行下一步,格式轉(zhuǎn)換通過TEQC軟件或者TOPCON公司自帶的tps2rin.exe工具完成。
在完成對數(shù)據(jù)的檢索以后,可以通過TEQC軟件進(jìn)行質(zhì)量檢查。TEQC進(jìn)行數(shù)據(jù)質(zhì)量檢查的命令格式為
teqc+qc Ofile
在C#程序中,可以開辟獨(dú)立線程調(diào)用DOS控制臺,并向DOS控制臺輸入自定義的命令,以此完成對指定數(shù)據(jù)文件的數(shù)據(jù)質(zhì)量檢查。部分代碼為
teqcProcess.StartInfo.FileName="cmd.exe";
//打開DOS控制平臺
teqcProcess.StartInfo.UseShellExecute=false;
teqcProcess.StartInfo.CreateNoWindow=true;
//是否顯示DOS窗口,true代表隱藏;
teqcProcess.StartInfo.RedirectStandardInput=true;
teqcProcess.StartInfo.RedirectStandardOutput=true;
teqcProcess.StartInfo.RedirectStandardError=false;
teqcProcess.Start();
teqcProcess.StandardInput.WriteLine(dosRoot);
teqcProcess.StandardInput.WriteLine("cd "+"""+teqcPath+""");
teqcProcess.StandardInput.WriteLine(teqcComLine);
teqcProcess.StandardInput.WriteLine("exit");
以上代碼中,dosRoot表示數(shù)據(jù)文件所在的盤符(C、D、E、F);teqcPath表示數(shù)據(jù)文件的路徑;teqcComLine為數(shù)據(jù)檢查的命令:teqc+qc Ofile.
在完成數(shù)據(jù)質(zhì)量檢查以后,通過搜索檢查結(jié)果中每行信息的關(guān)鍵字,如“Receiver type”、“Time of start of window”、“MARKER NUMBER”等,讀取指定的關(guān)鍵字并利用添加的Microsoft.Office.Interop.Excel引用,將檢查結(jié)果按行輸出到Excel文件中。
根據(jù)設(shè)計的功能,本程序可用于大批量GNSS觀測數(shù)據(jù)的質(zhì)量檢查工作中,并在本單位的2014年GPS測前儀器檢驗工作中得到了實際應(yīng)用。
打開程序后,如圖1所示,首先選擇數(shù)據(jù)類型為*.??o;再選擇數(shù)據(jù)所在目錄,本程序自動搜索該目錄(包括子目錄)下所有O文件,顯示在listview控件中,并計算文件數(shù)量顯示在狀態(tài)欄左下方;再點(diǎn)擊“質(zhì)量檢查”按鈕,程序?qū)λ羞x中的數(shù)據(jù)文件進(jìn)行質(zhì)量檢查,片刻之后即可檢查完畢;最后點(diǎn)擊“保存到Excel”按鈕,所有檢查結(jié)果自動保存到Excel報表中,結(jié)果輸出報表情況如圖2、圖3所示
圖1 程序運(yùn)行界面
圖2 檢查結(jié)果輸出一
圖3 檢查結(jié)果輸出二
通過C#編程,集成TEQC軟件,本程序?qū)崿F(xiàn)了GNSS數(shù)據(jù)的快速、大批量質(zhì)量檢查功能,并將檢查結(jié)果保存在Excel報表中,對重點(diǎn)檢查的項目,例如時段長度、采樣率、中斷次數(shù)、有效率、MP1、MP2等逐項進(jìn)行判斷,如不符合一定的標(biāo)準(zhǔn),則突出相應(yīng)單元格的顏色,使用戶能夠?qū)λ袛?shù)據(jù)的檢查情況一目了然,極大提高數(shù)據(jù)成果質(zhì)量檢查的效率和準(zhǔn)確度。
[1]中國地殼運(yùn)動觀測技術(shù)規(guī)程[S]. 北京: 中國環(huán)境科學(xué)出版社, 2004.
[2]TEQC——The Tooklitfor GPS/GLONASS/Galileo/SBAS Data [EB/OL]. http://facility. unavco. org/software/teqc/teqc. html.
[3]李 沖,何鑫星. TEQC在GPS數(shù)據(jù)質(zhì)量檢查中的常見問題及解決方案[J]. 全球定位系統(tǒng),2010,35(5):48-50.
[4]王小科.C#開發(fā)實戰(zhàn)寶典[M]. 北京:清華大學(xué)出版社,2010.
[5]黃勝忠.C# 4.0從入門到精通[M]. 北京:機(jī)械工業(yè)出版社,2011.