張顯云,姚黔貴,張鵬飛,黃安信,張 俊
(1. 貴州大學 礦業學院,貴州 貴陽550025; 2. 貴州省非金屬礦產資源綜合利用重點實驗室,貴州 貴陽 550003; 3. 貴州電力建設第二工程公司,貴州 貴陽 550002)
如何對GNSS原始觀測值質量作出快速、準確的評價,繼而剔除觀測質量較差的數據,為基線向量的解算提供較為“干凈”的數據源,成為高精度GNSS定位首先需解決的問題。TEQC可用于檢核雙頻接收機的動態和靜態數據質量,利用偽距觀測值和載波相位觀測值的線形組合來進行GNSS數據的誤差估計,在快速評定GNSS數據質量方面有著非常大的優勢:一方面速度快,沒有繁瑣的操作步驟,只用幾條簡單的命令即可;另一方面能對GNSS觀測數據進行多角度全方位的質量分析,分別從衛星高度角、方位角、多路徑效應、電離層延遲誤差、電離層延遲變化率、信噪比等方面反映GNSS觀測數據的質量,并可借助第三方軟件(如QcView軟件)對檢核結果進行可視化表達[1-4]。然而,TEQC不具備可視性,交互性差,且可視化分析需借助第三方軟件,這些均給實際操作帶來不便。此外,TEQC不能禁用單顆衛星部分歷元質量不高的觀測值,只能禁用全部觀測值,這對衛星數較少的情況極為不利。筆者以Visual C#為開發平臺,采用Chart控件,開發可視化GNSS數據質量分析與預處理軟件,實現對TEQC核心功能的可視化封裝,并擴展禁用單顆衛星部分歷元觀測數據的功能。
TEQC能實現GNSS原始數據的格式轉換、數據的質量檢查與編輯等,鑒于大多數商用隨機軟件已具備格式轉換的動能,本文主要以TEQC的數據編輯和質量檢查功能為封裝對象,開發基于TEQC的GNSS數據質量分析及預處理軟件Chart-QC,其功能模塊主要包括:GNSS原始數據質量檢查、數據質量檢查結果的可視化表達和GNSS數據編輯。限于篇幅,本文僅以多路徑誤差為例,來闡述軟件的實現過程。
TEQC質量檢查根據是否使用導航文件,分為qc2lite和qc2full兩種檢核方式。在缺省狀態下,qc2lite方式會生成質量檢核摘要文件、電離層延遲誤差、電離層延遲變化率、L1和L2載波上P碼偽距的多路徑效應(包括接收機噪聲)、L1和L2載波的信噪比。如使用了導航電文,則采用qc2full方式進行質量檢查,它除生成qc2lite方式下的所有文件外,還將產生衛星和接收機天線的位置信息,以及方位角和高度角兩個數據文件。
TEQC實質上是一個可執行文件(exe文件),通過設置不同的參數,在DOS環境下可完成TEQC的數據質量檢查、數據編輯、單點定位等功能。Chart-QC軟件則采用進程Process類調用TEQC命令,對TEQC功能進行封裝,后臺完成GNSS數據的檢查,從而避免了中間諸多的步驟與設置。質量檢查部分代碼如下[5]
private void QCheck(string filename)
{
Process myprocess=new Process():∥定義進程Process類對象
string path=Application.Startup Path;
path=path.Remove(path.LastIndexOf("\"));
path=path.Remove(path.LastIndexOf("\"));
path=path+"\"+"teqe.exe";∥TEQC路徑及TEQC命令
myprocess.StartInfo.filename=path;∥可執行程序文件名
myprocess.StartInfo.Argument="+qc"+""+filenme;∥TEQC參數設置
myprocess.StartInfo.CreateNoWindow=true;∥不顯示DOS窗口
myprocess.StartInfo.UseShellExecute=false;∥不使用系統外殼程序啟動
try
{
myprocess.Start();∥啟動進程
myprocess.WaitForExit();∥等待檢查執行結果
}
catch(Exception ex)
{
MessageBox.Show("執行失敗,"+"失敗的原因:"+ex.ToString());
}
finally
{
myprocess.Close();∥關閉進程
myprocess.Dispose;∥釋放系統資源
}
}
代碼中質量檢查參數是按qc2lite方式進行設置的,經驗證知:只要導航文件與觀測值文件位于同一目錄下,質量檢查同樣按qc2full方式進行。
Chart-QC軟件界面如圖1所示。

圖1 Chart-QC軟件界面
數據檢核的目的是為了評價觀測值文件的質量,以便對其進行編輯,刪除質量不高的部分觀測值。為了便捷、直觀地分析觀測值的質量,需將各種檢核結果文件繪制成圖像。Chart-QC軟件采用微軟Chart控件來實現對分析結果的可視化表達。下面以多路徑效應檢核文件為例,闡述Chart控件圖像繪制的實現過程。
(1) 多路徑效應文件結構解析
在繪制圖像前,首先需對文件結構進行了解,以便對文件進行讀取。多路徑效應文件結構如圖2所示。

圖2 多路徑效應文件結構圖
多路徑效應文件與其他檢核結果文件結構相同,文件頭部分含義一樣。圖2中,“SVS”表示衛星及編號;“T_SAMP”表示采樣間隔,以秒為單位,本例中為5 s;“START_TIME_MJD”表示觀測值文件中第一個觀測記錄的時刻,為修正的儒略日期;衛星標識“9 01 07 08 11 17 19 20 28 32”中,第一個數字“9”表示觀測并記錄了9顆衛星,其余數字表示記錄的衛星編號,一般只有在觀測衛星或總的觀測衛星數發生變化時,文件中才會重新標識此信息;衛星標識下一行為多路徑效應,一顆衛星一個歷元對應一個值。
(2)多路徑效應的可視化表達
為直觀表達觀測值質量,需對衛星各歷元的多路徑效應、信噪比、衛星高度角和方位角、電離層誤差進行讀取,并計算對應的歷元時刻。鑒于每個觀測值文件中記錄每顆衛星的檢測結果均包括以上元素,歷元時刻可根據衛星是否記錄進行推算。因此,可定義一個衛星類(Satellite類),并采用索引的方式,獲取類中相關字段的值。Satellite類結構如下[6]
class Satellite
{
public float Mp1;∥P1 多路徑效應
public float Mp2;∥P2 多路徑效應
.........................................................
public static Int32[] SatNo:∥觀測衛星編號
∥構造函數
public Satellite(float a,float b,float c,float d,float e,float f,float g,float h,float t)
{
Mp1=a;
Mp2=b;
.........................................................
}
∥類索引
public float this [int index]
{
get
{
switch(index)
{
case 0:return Mp1;
case 1:return Mp2;
.....................................................
default:
throw new IndexOutOfRangeException("下標越界!");
}
}
set
{
switch(index)
{
cass 0:Mp1=value;break;
cass 1:Mp2=value;break;
......................................................
default
throw new IndexOutOfRangeException("下標越界!");
}
}
}
}
為方便獲取各衛星的相關信息,并顧及每顆衛星可能包含若干歷元的信息、且歷元間可能不連續,主程序采用List類定義了32個satellite數組
List
∥實例化32個Satellite類對象
for(int i=0;i<32;i++)
{
satellite[i]=new List
}
satellite 數組中每個元素均為List類的實例,每個數組又以Satellite類實例對象為元素,從而可采用List類中的Add方法,以衛星編號為索引,實現對記錄衛星檢核結果文件中各個歷元相關信息的讀取,并采用類索引獲取所需信息,關鍵代碼如下
Satellite G=new Satellite(b,c,0,0,0,0,0,0,time);∥創建對象G
satellite[(Satellite.SatNo[k]-1)].Add(G);∥將對象G添加到第SatNo[k]個List數組中
在讀取完一個文件后,便可利用類索引獲得所需元素,并利用chart控件繪制圖形,代碼如下
for(int i=0;i { series1.Points.AddXY (satellite [j] [i] [8], satellite [j] [i] [0]); series2.Points.AddXY (satellite [j] [i] [8], satellite [j] [i] [1]); } 代碼中,j為衛星編號;satellite [j].Count為該衛星的歷元數;satellite [j] [i] [0]為衛星j第i個歷元的L1多路徑效應;satellite [j] [i] [1]為衛星j第i個歷元的L2多路徑效應;satellite [j] [i] [8]為衛星j第i個歷元對應的歷元時刻。 對檢核結果文件可視化表達后,便可直觀地對觀測值文件進行質量分析,從而對質量較差的數據進行編輯。數據的編輯包括RINEX文件的切割與合并、衛星的選擇和禁用、高度角的設置等,同樣可通過調用TEQC命令來實現。如要禁用某顆GPS衛星全部觀測值,可設置TEQC參數為 teqc - G# 輸入文件> 輸出文件 其中,參數“G”表示GPS衛星;“#”表示衛星編號。 然而,TEQC對衛星的禁用是禁用該衛星的全部觀測數據,這對觀測條件不好、衛星較少時的情況非常不利。Chart-QC軟件在分析RINEX文件結構的基礎上,結合可視化圖形,實現了對單顆衛星部分觀測值進行禁用的功能,在改善原始觀測值質量的同時,提高了觀測數據的利用率。基本思路為: 1) 判斷多路徑誤差大小。 2) 獲取異常多路徑誤差對應的歷元。 3) 刪除RINEX文件中對應歷元的衛星標識及觀測值。 4) 保存RINEX文件。 數據編輯完成后,還需將編輯后的數據進行存盤。Chart-QC提供3種保存方式,即替換存盤、更改路徑存盤、改名存盤。 采用某GPS控制網29個觀測值文件對Chart-QC軟件的功效進行測試,主要是對電離層跳變嚴重、多路徑效應較大、衛星失鎖頻繁的觀測值進行編輯。可以禁用單顆衛星觀測值,也可禁用觀測文件某連續時間段內的所有衛星觀測值,或者禁用單顆衛星部分歷元觀測值,需具體情況具體分析。 將原始觀測值數據與經Chart-QC軟件編輯后的觀測值數據間的多路徑效應、觀測值總數與發生周跳觀測值個數之比進行對比分析,部分結果見表1。 表1 GNSS數據編輯前后質量比對 對結果進行分析可知,預處理后數據的觀測質量相對于原始數據質量有了大幅度的提高。首先,從有效率指標來看,數據文件中有效率有的減小了,有的增大了,但整體上有效率普遍保持不變;其次,從多路徑誤差來看,mp1值普遍減小,其中減小值最小為5.3%、最大為33.3%;mp2值同樣普遍減小,減小值最小為17.7%、最大為46.9%;最后,從觀測值總數與發生周跳觀測值個數之比(o/slps)來看,o/slps值普遍增大,且增幅很大。顯然,Chart-QC軟件實現了GPS觀測數據預處理的目的。 為進一步評價Chart-QC軟件在GNSS數據質量分析與編輯方面的功效,在保持相同的高度角、采樣間隔、電離層模型等基線處理參數設置的情況下,采用GPS數據處理軟件對所有基線按兩種方案進行一次性處理。 方案1:對原始GPS觀測值文件進行基線解算。 方案2:對經Chart-QC軟件編輯后的觀測值文件進行基線解算。 基線質量的絕對質量指標是判定基線質量合格與否的重要參數,包括獨立環閉合差和復測基線長度較差[7-10]。此處主要以這兩個指標來評價Chart-QC的功效。根據文獻[6],獨立環閉合差限差為 復測基線長度較差限差為 式(1)、式(2)中,σ為基線測量精度;其余符號含義可參見文獻[6]。σ可按下式進行計算 由于編輯前后的文件均由相同的GPS接收機進行施測,且同名基線弦長一致,故基線測量精度σ相同,繼而復測基線長度較差之限差也相同;此外,同名獨立環基線邊數相同,且為相同的基線,故獨立環閉合差限差也相同。因此,將編輯前后文件進行基線處理所得獨立環閉合差、復測基線長度較差之絕對值進行比較,其中的較小者,更容易滿足限差要求,數據質量自然較高。于是,為宏觀評價上述指標值的大小,將方案2結果之絕對值減方案1結果之絕對值,結果如圖3和圖4所示。 圖3 異步環及分量閉合差絕對值之差 圖4 復測基線長度較差之差 由圖3、圖4可以看出,獨立環分量閉合差及環閉合差、復測基線長度較差之絕對值之差大都小于0,也即方案2結果之絕對值大都小于方案1結果之絕對值,說明經由Chart-QC軟件編輯后的數據整體質量有所改善,從而說明了基于TEQC的Chart-QC軟件能對GNSS觀測數據的質量進行檢查、并能根據可視化分析結果優化觀測值質量。差值等于0是因某些原始觀測數據質量本身較高,沒有對其進行編輯處理所致。 在分析TEQC軟件優缺點的基礎上,結合Visual C#面向對象程序設計的方法,對TEQC進行了基于Windows界面的可視化封裝,采用Chart控件實現了質量檢核結果的可視化表達,實現了GNSS觀測數據預處理過程的簡潔化。程序運行及處理結果表明:Chart-QC操作簡單、界面友好;質量檢核結果可視化圖形美觀、易于分析;能在檢查與分析觀測值質量的基礎上,對觀測數據進行編輯,繼而改善基線質量,為網平差提供質量較好的觀測值,從而有利于提高定位精度,從而也驗證了TEQC軟件自身在數據分析與編輯方面的功效。 參考文獻: [1] 趙紅強,郭際明,李宗華,等.繪圖工具QCVIEW在GPS數據預處理中的應用[J].測繪通報,2008(11):44-46. [2] UNAVCO Facility. TEQC-Tutorial [EB/OL].2007-06-20[2013-01-05]. http:∥facility. unavco.org/software/teqc/tutorial.html. [3] 廖文兵,余紅舉,王斌,等.TEQC軟件的應用與數據分析[J].地理空間信息,2012,10(4):76-78. [4] 王建軍,吳北平,馮健.TEQC和QCVIEW32在GPS觀測數據預處理中的應用[J].工程地球物理學報,2010,7(5):634-638. [5] 楊宏偉,李晶.C#程序員開發手冊[M].北京:科學出版社,2006:612-619. [6] 梁斌玉.叩響C#之門[M].北京:電子工業出版社,2009:137-162. [7] 張勤,李家權.GPS 測量原理及應用[M].北京:科學出版社,2005:171-172. [8] 李征航,黃勁松.GPS測量與數據處理[M].2版. 武漢:武漢大學出版社,2010:282-286. [9] 中華人民共和國國家質量監督檢驗檢疫總局.GB/T 18314—2009全球定位系統(GPS)測量規范[S].北京:中國標準出版社,2009. [10] 魏二虎,王中平,龔真春,等.TEQC軟件用于GPS控制網數據質量檢測的研究[J].測繪通報,2008(9):6-9.3. GNSS觀測數據的編輯
4. 數據的保存
三、軟件性能整體測試



四、結束語