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