張 妮,王標(biāo)標(biāo)
(1.西安工業(yè)大學(xué) 北方信息工程學(xué)院,陜西 西安 710025;2.中國人民解放軍96275部隊 河南 洛陽 471003)
全球定位系統(tǒng)GPS (Global Positioning System)以其具有多維,全天候的連續(xù)、實時導(dǎo)航、定位、定時功能,可為各類用戶實時地提供精研的三維坐標(biāo)、速度和時間等優(yōu)點而廣泛應(yīng)用于民用和軍用領(lǐng)域。為了能統(tǒng)一使用來自不同接收機的數(shù)據(jù),目前普遍采用一種與接收機無關(guān)的接收機自主交換格式 RINEX(The Receiver Independent Exchange Format)。目前,RINEX數(shù)據(jù)的讀取方法很多,例如利用Visual Basic和Visual C++來實現(xiàn),但這些方法都存在不能快速地從表面上分析出接收機接收的數(shù)據(jù)質(zhì)量,編程代碼煩瑣,循環(huán)結(jié)構(gòu)過多,而且不同的GPS網(wǎng)仍需選用不同的軟件進(jìn)行數(shù)據(jù)處理,兼容性很差[1]等缺點。本文提出了一種基于Matlab讀取RINEX文件的方法。
本機格式是指接收機存儲數(shù)據(jù)的格式,存儲方式為二進(jìn)制存儲,存儲的數(shù)據(jù)內(nèi)容包括:觀測值、廣播星歷、電離層信息、氣象元素等,并具有如下特點:1)不同廠家的接收機具有不同的本機格式;2)與接收機配套的數(shù)據(jù)處理軟件(隨機軟件/商用軟件)一般可以直接讀取自身本機格式的數(shù)據(jù),而不能讀取其他廠家的本機格式的數(shù)據(jù);3)不利于多種型號的接收機聯(lián)合作業(yè)。
RINEX格式為純ASCII碼文本文件,是與接收機無關(guān)的數(shù)據(jù)交換格式[3]。存儲內(nèi)容包括:觀測值、星歷(導(dǎo)航信息)、氣象數(shù)據(jù)、鐘數(shù)據(jù)等。它具有如下特點:1)通用性強;2)利于多種型號的接收機聯(lián)合作業(yè);3)大多數(shù)軟件能夠處理。
RINEX格式文件類型有:1)觀測數(shù)據(jù)文件:GPS觀測值;2)導(dǎo)航電文文件:GPS衛(wèi)星導(dǎo)航電文;3)氣象數(shù)據(jù)文件:在測站處所測定的氣象數(shù)據(jù);4)GLONASS導(dǎo)航電文文件:GLONASS衛(wèi)星導(dǎo)航電文;5)GEO導(dǎo)航電文文件:增強系統(tǒng)中搭載有類GPS信號發(fā)生器的地球同步衛(wèi)星(GEO)的導(dǎo)航電文;6)衛(wèi)星和接收機鐘文件:衛(wèi)星和接收機時鐘信息的。
RINEX格式文件有規(guī)定的命名方法,簡稱8+3文件名,即ssssdddf.yyt[2]。具體命名方法如圖1所示。
圖1RINEX格式文件命名規(guī)則Fig.1 Named Rule of RINEX format file
RINEX格式文件結(jié)構(gòu)是以節(jié)、記錄、字段和列為單位逐級組織的。所有類型的RINEX文件均分為2節(jié):文件頭和數(shù)據(jù)記錄。每個記錄占一行,不超過80列寬。RINEX格式的頭文件用于存放整個文件有關(guān)的全局性信息,位于每個文件的最前部,其最后一個記錄為“END OF HEADER”。文件頭中每個記錄的第61~80列為標(biāo)簽,用于說明相應(yīng)行上第1~60列中所表示的內(nèi)容。RINEX格式文件的記錄數(shù)據(jù)緊跟在文件頭的后面,隨文件類型的不同,所存放數(shù)據(jù)的內(nèi)容和具體格式也不相同[4]。
由于在實際定位中,主要使用觀測數(shù)據(jù)文件和導(dǎo)航文件,其他文件的讀取和處理與這兩類文件類似。因此,這里著重以導(dǎo)航文件為例說明RINEX格式文件的讀取方法。
衛(wèi)星星歷是取自衛(wèi)星的廣播導(dǎo)航電文,導(dǎo)航文件像其他文件一樣由頭文件和星歷數(shù)據(jù)組成,是地面位置計算的基礎(chǔ)數(shù)據(jù)。由于觀測數(shù)據(jù)內(nèi)容比較復(fù)雜,而且具有相似的數(shù)據(jù)塊。在數(shù)據(jù)文件中數(shù)據(jù)之間的間隔是以空格或回車換行字符隔開的,所以在數(shù)據(jù)讀取過程中根據(jù)這些特殊字符進(jìn)行控制。導(dǎo)航文件的頭文件主要包括RINEX版本號、觀測類型、文件綱要名稱、文件機構(gòu)名稱、文件建立日期、載波和天線的介紹內(nèi)容、電離層參數(shù)時間改正參數(shù)和秒跳。星歷數(shù)據(jù)主要包括衛(wèi)星號、星歷時間和位置參數(shù)。
RINEX格式文件讀取時可以根據(jù)衛(wèi)星、歷元信息來存儲數(shù)據(jù)。用Matlab讀取RINEX文件的方式即就是用Matlab由程序命令按字符串進(jìn)行讀取。一般情況下,當(dāng)讀取指定的字符串(如“END OF HEADER”)時,開始讀取有效數(shù)據(jù),即星歷數(shù)據(jù)。根據(jù)RINEX格式文件結(jié)構(gòu)特點,導(dǎo)航文件中有效數(shù)據(jù)為字符串“END OF HEADER”以后的數(shù)據(jù)。
導(dǎo)航文件讀取時,以“END OF HEADER”作為特殊字符串,標(biāo)識導(dǎo)航文件中頭文件與星歷數(shù)據(jù)的分界點,通過簡單的循環(huán)結(jié)構(gòu),并利用Matlab強大的矩陣優(yōu)勢,將星歷數(shù)據(jù)存放于結(jié)構(gòu)體數(shù)組(其中共有38個字段名,分別存放星歷數(shù)據(jù)中的衛(wèi)星號、星歷的時間和位置參數(shù)),以方便獲取衛(wèi)星參數(shù),求取衛(wèi)星坐標(biāo)。具體代碼實現(xiàn)如下:
1)存放星歷數(shù)據(jù)的結(jié)構(gòu)體數(shù)組創(chuàng)建 結(jié)構(gòu)體數(shù)組的創(chuàng)建采用了struct函數(shù)[5],具體代碼示例如下:
所創(chuàng)建結(jié)構(gòu)體的字段名,如‘prn’,‘year’,..,類型均為NaN,共38個,在讀取RINEX的觀測文件和導(dǎo)航文件時,可將數(shù)據(jù)根據(jù)衛(wèi)星的屬性存儲至相應(yīng)的字段名。
2)打開文件,獲取星歷數(shù)據(jù)開始位置[6]利用findstr及循環(huán)語句逐行查找字符串“END OF HEADER”,獲取星歷數(shù)據(jù)開始位置。具體代碼示例如下:
3)獲取星歷數(shù)據(jù),并存放至結(jié)構(gòu)體數(shù)組 首先通過簡單的循環(huán)語句獲取數(shù)據(jù)行數(shù),計算出衛(wèi)星個數(shù),再按照衛(wèi)星編號將數(shù)據(jù)存放至所定義的結(jié)構(gòu)體數(shù)組中,部分具體代碼如下:
星歷數(shù)據(jù)的讀取采用結(jié)構(gòu)體數(shù)組顯示的相關(guān)命令讀取,若要獲取某個衛(wèi)星的相關(guān)參數(shù)可輸入如示例命令:>>navdata(1)。獲取結(jié)果如圖2所示,為1號衛(wèi)星參數(shù)讀取結(jié)果。
圖21號衛(wèi)星參數(shù)讀取結(jié)果Fig.2 Reading result of parameter of satliete NO.1
也可利用Matlab元包數(shù)組,將數(shù)據(jù)存放并顯示出來,具體實現(xiàn)代碼如下:
讀取結(jié)果如圖3所示。
采用Matlab軟件讀RINEX導(dǎo)航文件,可以將文件所有的數(shù)據(jù)用矩陣保存,數(shù)據(jù)的顯示精度不僅不會影響計算精度,而且可以隨時修改,并可根據(jù)衛(wèi)星坐標(biāo)的計算公式和步驟,利用Matlab矩陣的計算優(yōu)勢,很方便地計算不同時刻衛(wèi)星的坐標(biāo),此外,還可方便查看衛(wèi)星導(dǎo)航表層信息,判斷導(dǎo)航數(shù)據(jù)的質(zhì)量。
圖3讀取星歷數(shù)據(jù)結(jié)果Fig.3 Reading result of ephemeris data
利用Matlab以矩陣為單位進(jìn)行計算的優(yōu)勢對RINEX文件進(jìn)行讀取,較其他語言簡單易行,結(jié)果精確,程序可移植性好,便于后續(xù)數(shù)據(jù)處理,同時還可利用Matlab的仿真功能,實現(xiàn)衛(wèi)星動態(tài)變化的實時模擬。
[1]陳東銀,劉立龍,陳雷.GPS導(dǎo)航定位技術(shù)中面向?qū)ο笞x取 RINEX 格式數(shù)據(jù)[J].測繪與空間地理信,2009(6):41-43.CHEN Dong-yin,LIU Li-long,CHEN Lei.An object-oriented method of reading RINEX formatdat in GPS navigation technology[J].Geomatics and Spatial Information Technology,2009(6):41-43.
[2]Gurtner W.RINEX:The receiver independent exchange format:Version 2.10[M]Canada:Astronomical Institute University of Berne,2002.
[3]孟廣祥,郭標(biāo)明.GPS接收機(OEM)二進(jìn)制文件向RINEX文件的轉(zhuǎn)換[J].測繪工程,2009(10):18-21.MENG Guang-xiang,GUO Biao-ming.The transformation from GPS receiver(OEM) binary data to RINEX file[J].Engineering of Surveyying and Mapping, 2009(10):18-21.
[4]陳桂珍,戴建軍.GPS-OEM原始數(shù)據(jù)向RINEX格式轉(zhuǎn)換的方法[J].測繪技術(shù)裝備,2006(4):26-27.CHENG Gui-zhen,DAI Jian-jun.The transformation from GPS-OEM orignal data to RINEX Format[J].Surveying technical equipment, 2006(4):26-27.
[5]張志涌.精通 Matlab 6.5[M].北京:北京航空航天大學(xué)出版社,2004.
[6]Chapman Stephen J.Matlab Programming for engineers[M].北京:科學(xué)出版社,2003.