張福利 李 奇 丁亞南
(河南省中緯測繪規劃信息工程有限公司,河南焦作 454000)
Trimble GPS&TGO(簡稱TGO)是當前測繪行業廣泛使用的GPS靜態數據處理軟件之一,可識別多種儀器導出的多個版本的RINEX文件,是多品牌GPS接收機聯合觀測,聯合平差的首選軟件之一,由于軟件設定了基線解算的GPS周不能超過1 652,所以UTC時間2011年9月10日以后的數據TGO不再解算基線。基于此狀況,本文先對RINEX文件的組織結構進行分析,然后介紹VB.NET程序的設計思路和代碼的組織編寫,幫助測量工作者方便快捷的解決這一問題。
RINEX 是“The Receiver Independent Exchange Format”(接收機通用數據交換格式)的縮寫,它已經成為GPS測量和精密導航應用等的標準交換和存儲格式文件。當前的RINEX格式文件主要由4種文本文件所組成,分別為O:觀測數據文件;N:導航數據文件;M:氣象數據文件;G:GLONASS導航數據文件。一般我們使用的主要是O文件、N文件和G文件(本文對G文件不做論述),由于不同接收機配備的軟件有其獨自的RINEX格式轉換模塊,本文以中海達儀器的O文件及N文件為例,重點對文件中與時間記錄相關的信息進行論述。
RINEX觀測數據文件由文件頭和數據區兩部分組成,文件頭的第1行用來標識文件的類型和文件版本,文件頭的結尾以“END OF HEADER”字符串為標識,在文件的中部以帶“MARKER NAME”的字符行標識GPS點號,以“TIME OF FIRST OBS”字符行標識GPS記錄的起始時間,以“TIME OF LAST OBS”字符行標識GPS記錄的結束時間。
不同的GPS軟件導出的O文件頭行數并不固定,但使用項目的RINEX星歷數據,生成GPS觀測時間區間的星歷數據所需的起止時間是不可缺少的,如圖1,圖2所示。

圖1 RINEX觀測值文件文件頭
RINEX導航文件也是由文件頭和數據區兩部分組成,通過文件頭的第1行來識別文件的類型和文件的版本,文件頭的結尾以“END OF HEADER”為標識。在數據區每段數據的第1行前19個字符“03 10 9 2 6 0 0.0”記錄了衛星的編號和記錄日期,第6行的第3列則記錄了GPS周數,如圖3所示。

圖2 RINEX觀測值文件數據區

圖3RINEX導航文件
RINEX格式是純ASCII碼的文本文件非常便于用程序代碼操作,VB.NET集成了豐富的內部函數,如:DATEADD,DATEDIFF可以方便的對時間進行換算,STRCOMP函數可以對兩個字符串進行比較,REPLACE函數可對一個字符串內的某個字符串進行替換。對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天(星期日)的數據,對于O文件的修改如下:
1)將文件頭中記錄觀測數據的起止時間:


程序的界面設計如圖4所示,界面上的命令按鈕讀者可只添加“打開RINEX文件”“保存文件夾”和“轉換”3個按鈕;添加的文本框控件用于輸入需提前的GPS周數量,添加的列表框控件用于顯示打開的文件列表及文件轉換后的結果。

圖4 程序設計界面
1)“打開RINEX文件”的代碼主要是對OpenFileDialog控件進行瀏覽選擇文件的操作,當設置OpenFileDialog.Multiselect=True時允許同時選中多個文件,當設置文件類型過濾器OpenFile-Dialog.Filter=“標準 RINEX 文件|* .OBS;* .??N;* .??O|所有文件(*.*)|*.*”時,可以瀏覽帶通配符的多種擴展名稱的文件。
2)“選擇保存文件夾”是引用FolderBrowserDialog控件在程序運行時通過FolderBrowserDialog.SelectedPath方法獲取一個保存路徑,這些是VB的基礎操作,在此不再贅述。
3)UTC時間與GPS周的相互運算。
要將UTC時間轉換為GPS周,首先要計算出GPS的UTC時間與GPS周起算的UTC時間的天數差;第二,以天數差為除數,每個GPS周7天為被除數,所求的整數即為GPS周數,余數為GPS周當中的第幾天(星期日為第1天)。在VBNET中DateDiff函數可以直接求得兩個時間的時間差,用MOD函數可求得兩個整數相除的余數。
代碼編寫如下:

5)程序的運行。
記錄靜態GPS網的RINEX文件比較多,程序代碼編寫時盡量設計為循環模式。文中的示例程序在打開文件時將選擇的多個RINEX文件的名稱和路徑添加到列表框控件中,代碼執行時循環讀取列表中的每個文件,通過讀文件頭判斷文件的格式,依據文件格式提取存儲GPS記錄的UTC時間和GPS周的字符串格式,進而用計算出的新時間字符替換舊時間字符,程序采用了順序文件的讀寫方法,運行速度理想,如圖5,圖6所示。

圖5 程序運行界面

圖6TGO基線解算固定界面
限于篇幅,未能列出完整的程序代碼,但對于長期從事測繪工程又有計算機基礎的人員,相信會有所獲,自行編寫出各種各樣的RINEX文件修改器應用到實際工作中,提高生產效率,節約資源投入。
[1]GB/T 18314-2009,全球定位系統(GPS)測量規范[S].
[2]曹祖圣.Visual Basic 2005完全開發指南[M].北京:科學出版社,2007.
[3]徐紹銓.GPS測量原理及應用[M].武漢:武漢大學出版社,2003.
[4]張 曜.Visual Basic函數實用手冊[M].北京:冶金工業出版社,2002.