張福利 李 奇 丁亞南
(河南省中緯測繪規(guī)劃信息工程有限公司,河南焦作 454000)
Trimble GPS&TGO(簡稱TGO)是當前測繪行業(yè)廣泛使用的GPS靜態(tài)數(shù)據(jù)處理軟件之一,可識別多種儀器導出的多個版本的RINEX文件,是多品牌GPS接收機聯(lián)合觀測,聯(lián)合平差的首選軟件之一,由于軟件設(shè)定了基線解算的GPS周不能超過1 652,所以UTC時間2011年9月10日以后的數(shù)據(jù)TGO不再解算基線?;诖藸顩r,本文先對RINEX文件的組織結(jié)構(gòu)進行分析,然后介紹VB.NET程序的設(shè)計思路和代碼的組織編寫,幫助測量工作者方便快捷的解決這一問題。
RINEX 是“The Receiver Independent Exchange Format”(接收機通用數(shù)據(jù)交換格式)的縮寫,它已經(jīng)成為GPS測量和精密導航應(yīng)用等的標準交換和存儲格式文件。當前的RINEX格式文件主要由4種文本文件所組成,分別為O:觀測數(shù)據(jù)文件;N:導航數(shù)據(jù)文件;M:氣象數(shù)據(jù)文件;G:GLONASS導航數(shù)據(jù)文件。一般我們使用的主要是O文件、N文件和G文件(本文對G文件不做論述),由于不同接收機配備的軟件有其獨自的RINEX格式轉(zhuǎn)換模塊,本文以中海達儀器的O文件及N文件為例,重點對文件中與時間記錄相關(guān)的信息進行論述。
RINEX觀測數(shù)據(jù)文件由文件頭和數(shù)據(jù)區(qū)兩部分組成,文件頭的第1行用來標識文件的類型和文件版本,文件頭的結(jié)尾以“END OF HEADER”字符串為標識,在文件的中部以帶“MARKER NAME”的字符行標識GPS點號,以“TIME OF FIRST OBS”字符行標識GPS記錄的起始時間,以“TIME OF LAST OBS”字符行標識GPS記錄的結(jié)束時間。
不同的GPS軟件導出的O文件頭行數(shù)并不固定,但使用項目的RINEX星歷數(shù)據(jù),生成GPS觀測時間區(qū)間的星歷數(shù)據(jù)所需的起止時間是不可缺少的,如圖1,圖2所示。
圖1 RINEX觀測值文件文件頭
RINEX導航文件也是由文件頭和數(shù)據(jù)區(qū)兩部分組成,通過文件頭的第1行來識別文件的類型和文件的版本,文件頭的結(jié)尾以“END OF HEADER”為標識。在數(shù)據(jù)區(qū)每段數(shù)據(jù)的第1行前19個字符“03 10 9 2 6 0 0.0”記錄了衛(wèi)星的編號和記錄日期,第6行的第3列則記錄了GPS周數(shù),如圖3所示。
圖2 RINEX觀測值文件數(shù)據(jù)區(qū)
圖3RINEX導航文件
RINEX格式是純ASCII碼的文本文件非常便于用程序代碼操作,VB.NET集成了豐富的內(nèi)部函數(shù),如:DATEADD,DATEDIFF可以方便的對時間進行換算,STRCOMP函數(shù)可以對兩個字符串進行比較,REPLACE函數(shù)可對一個字符串內(nèi)的某個字符串進行替換。對RINEX文件的修改主要就是時間字符串的替換,由于GPS周的起點為UTC時間的1980年1月6日,我們就可將2個文件的每個觀測值時標更換為GPS周1 653之前的某n周,保持相同的星期幾;將2個文件的每個觀測值的UTC時間更換為某n周之前的UTC時間,保持相同的時刻,如2012年1月1日,是1 669周第1天(星期日),可將其更換為20周前的時間,即2011年8月14日,GPS周1 649周第1天(星期日)的數(shù)據(jù),對于O文件的修改如下:
1)將文件頭中記錄觀測數(shù)據(jù)的起止時間:
程序的界面設(shè)計如圖4所示,界面上的命令按鈕讀者可只添加“打開RINEX文件”“保存文件夾”和“轉(zhuǎn)換”3個按鈕;添加的文本框控件用于輸入需提前的GPS周數(shù)量,添加的列表框控件用于顯示打開的文件列表及文件轉(zhuǎn)換后的結(jié)果。
圖4 程序設(shè)計界面
1)“打開RINEX文件”的代碼主要是對OpenFileDialog控件進行瀏覽選擇文件的操作,當設(shè)置OpenFileDialog.Multiselect=True時允許同時選中多個文件,當設(shè)置文件類型過濾器OpenFile-Dialog.Filter=“標準 RINEX 文件|* .OBS;* .??N;* .??O|所有文件(*.*)|*.*”時,可以瀏覽帶通配符的多種擴展名稱的文件。
2)“選擇保存文件夾”是引用FolderBrowserDialog控件在程序運行時通過FolderBrowserDialog.SelectedPath方法獲取一個保存路徑,這些是VB的基礎(chǔ)操作,在此不再贅述。
3)UTC時間與GPS周的相互運算。
要將UTC時間轉(zhuǎn)換為GPS周,首先要計算出GPS的UTC時間與GPS周起算的UTC時間的天數(shù)差;第二,以天數(shù)差為除數(shù),每個GPS周7天為被除數(shù),所求的整數(shù)即為GPS周數(shù),余數(shù)為GPS周當中的第幾天(星期日為第1天)。在VBNET中DateDiff函數(shù)可以直接求得兩個時間的時間差,用MOD函數(shù)可求得兩個整數(shù)相除的余數(shù)。
代碼編寫如下:
5)程序的運行。
記錄靜態(tài)GPS網(wǎng)的RINEX文件比較多,程序代碼編寫時盡量設(shè)計為循環(huán)模式。文中的示例程序在打開文件時將選擇的多個RINEX文件的名稱和路徑添加到列表框控件中,代碼執(zhí)行時循環(huán)讀取列表中的每個文件,通過讀文件頭判斷文件的格式,依據(jù)文件格式提取存儲GPS記錄的UTC時間和GPS周的字符串格式,進而用計算出的新時間字符替換舊時間字符,程序采用了順序文件的讀寫方法,運行速度理想,如圖5,圖6所示。
圖5 程序運行界面
圖6TGO基線解算固定界面
限于篇幅,未能列出完整的程序代碼,但對于長期從事測繪工程又有計算機基礎(chǔ)的人員,相信會有所獲,自行編寫出各種各樣的RINEX文件修改器應(yīng)用到實際工作中,提高生產(chǎn)效率,節(jié)約資源投入。
[1]GB/T 18314-2009,全球定位系統(tǒng)(GPS)測量規(guī)范[S].
[2]曹祖圣.Visual Basic 2005完全開發(fā)指南[M].北京:科學出版社,2007.
[3]徐紹銓.GPS測量原理及應(yīng)用[M].武漢:武漢大學出版社,2003.
[4]張 曜.Visual Basic函數(shù)實用手冊[M].北京:冶金工業(yè)出版社,2002.