張顯云,姚黔貴,張鵬飛,黃安信,張 俊
(1. 貴州大學(xué) 礦業(yè)學(xué)院,貴州 貴陽550025; 2. 貴州省非金屬礦產(chǎn)資源綜合利用重點(diǎn)實(shí)驗(yàn)室,貴州 貴陽 550003; 3. 貴州電力建設(shè)第二工程公司,貴州 貴陽 550002)
如何對(duì)GNSS原始觀測(cè)值質(zhì)量作出快速、準(zhǔn)確的評(píng)價(jià),繼而剔除觀測(cè)質(zhì)量較差的數(shù)據(jù),為基線向量的解算提供較為“干凈”的數(shù)據(jù)源,成為高精度GNSS定位首先需解決的問題。TEQC可用于檢核雙頻接收機(jī)的動(dòng)態(tài)和靜態(tài)數(shù)據(jù)質(zhì)量,利用偽距觀測(cè)值和載波相位觀測(cè)值的線形組合來進(jìn)行GNSS數(shù)據(jù)的誤差估計(jì),在快速評(píng)定GNSS數(shù)據(jù)質(zhì)量方面有著非常大的優(yōu)勢(shì):一方面速度快,沒有繁瑣的操作步驟,只用幾條簡(jiǎn)單的命令即可;另一方面能對(duì)GNSS觀測(cè)數(shù)據(jù)進(jìn)行多角度全方位的質(zhì)量分析,分別從衛(wèi)星高度角、方位角、多路徑效應(yīng)、電離層延遲誤差、電離層延遲變化率、信噪比等方面反映GNSS觀測(cè)數(shù)據(jù)的質(zhì)量,并可借助第三方軟件(如QcView軟件)對(duì)檢核結(jié)果進(jìn)行可視化表達(dá)[1-4]。然而,TEQC不具備可視性,交互性差,且可視化分析需借助第三方軟件,這些均給實(shí)際操作帶來不便。此外,TEQC不能禁用單顆衛(wèi)星部分歷元質(zhì)量不高的觀測(cè)值,只能禁用全部觀測(cè)值,這對(duì)衛(wèi)星數(shù)較少的情況極為不利。筆者以Visual C#為開發(fā)平臺(tái),采用Chart控件,開發(fā)可視化GNSS數(shù)據(jù)質(zhì)量分析與預(yù)處理軟件,實(shí)現(xiàn)對(duì)TEQC核心功能的可視化封裝,并擴(kuò)展禁用單顆衛(wèi)星部分歷元觀測(cè)數(shù)據(jù)的功能。
TEQC能實(shí)現(xiàn)GNSS原始數(shù)據(jù)的格式轉(zhuǎn)換、數(shù)據(jù)的質(zhì)量檢查與編輯等,鑒于大多數(shù)商用隨機(jī)軟件已具備格式轉(zhuǎn)換的動(dòng)能,本文主要以TEQC的數(shù)據(jù)編輯和質(zhì)量檢查功能為封裝對(duì)象,開發(fā)基于TEQC的GNSS數(shù)據(jù)質(zhì)量分析及預(yù)處理軟件Chart-QC,其功能模塊主要包括:GNSS原始數(shù)據(jù)質(zhì)量檢查、數(shù)據(jù)質(zhì)量檢查結(jié)果的可視化表達(dá)和GNSS數(shù)據(jù)編輯。限于篇幅,本文僅以多路徑誤差為例,來闡述軟件的實(shí)現(xiàn)過程。
TEQC質(zhì)量檢查根據(jù)是否使用導(dǎo)航文件,分為qc2lite和qc2full兩種檢核方式。在缺省狀態(tài)下,qc2lite方式會(huì)生成質(zhì)量檢核摘要文件、電離層延遲誤差、電離層延遲變化率、L1和L2載波上P碼偽距的多路徑效應(yīng)(包括接收機(jī)噪聲)、L1和L2載波的信噪比。如使用了導(dǎo)航電文,則采用qc2full方式進(jìn)行質(zhì)量檢查,它除生成qc2lite方式下的所有文件外,還將產(chǎn)生衛(wèi)星和接收機(jī)天線的位置信息,以及方位角和高度角兩個(gè)數(shù)據(jù)文件。
TEQC實(shí)質(zhì)上是一個(gè)可執(zhí)行文件(exe文件),通過設(shè)置不同的參數(shù),在DOS環(huán)境下可完成TEQC的數(shù)據(jù)質(zhì)量檢查、數(shù)據(jù)編輯、單點(diǎn)定位等功能。Chart-QC軟件則采用進(jìn)程Process類調(diào)用TEQC命令,對(duì)TEQC功能進(jìn)行封裝,后臺(tái)完成GNSS數(shù)據(jù)的檢查,從而避免了中間諸多的步驟與設(shè)置。質(zhì)量檢查部分代碼如下[5]
private void QCheck(string filename)
{
Process myprocess=new Process():∥定義進(jìn)程Process類對(duì)象
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;∥可執(zhí)行程序文件名
myprocess.StartInfo.Argument="+qc"+""+filenme;∥TEQC參數(shù)設(shè)置
myprocess.StartInfo.CreateNoWindow=true;∥不顯示DOS窗口
myprocess.StartInfo.UseShellExecute=false;∥不使用系統(tǒng)外殼程序啟動(dòng)
try
{
myprocess.Start();∥啟動(dòng)進(jìn)程
myprocess.WaitForExit();∥等待檢查執(zhí)行結(jié)果
}
catch(Exception ex)
{
MessageBox.Show("執(zhí)行失敗,"+"失敗的原因:"+ex.ToString());
}
finally
{
myprocess.Close();∥關(guān)閉進(jìn)程
myprocess.Dispose;∥釋放系統(tǒng)資源
}
}
代碼中質(zhì)量檢查參數(shù)是按qc2lite方式進(jìn)行設(shè)置的,經(jīng)驗(yàn)證知:只要導(dǎo)航文件與觀測(cè)值文件位于同一目錄下,質(zhì)量檢查同樣按qc2full方式進(jìn)行。
Chart-QC軟件界面如圖1所示。
圖1 Chart-QC軟件界面
數(shù)據(jù)檢核的目的是為了評(píng)價(jià)觀測(cè)值文件的質(zhì)量,以便對(duì)其進(jìn)行編輯,刪除質(zhì)量不高的部分觀測(cè)值。為了便捷、直觀地分析觀測(cè)值的質(zhì)量,需將各種檢核結(jié)果文件繪制成圖像。Chart-QC軟件采用微軟Chart控件來實(shí)現(xiàn)對(duì)分析結(jié)果的可視化表達(dá)。下面以多路徑效應(yīng)檢核文件為例,闡述Chart控件圖像繪制的實(shí)現(xiàn)過程。
(1) 多路徑效應(yīng)文件結(jié)構(gòu)解析
在繪制圖像前,首先需對(duì)文件結(jié)構(gòu)進(jìn)行了解,以便對(duì)文件進(jìn)行讀取。多路徑效應(yīng)文件結(jié)構(gòu)如圖2所示。
圖2 多路徑效應(yīng)文件結(jié)構(gòu)圖
多路徑效應(yīng)文件與其他檢核結(jié)果文件結(jié)構(gòu)相同,文件頭部分含義一樣。圖2中,“SVS”表示衛(wèi)星及編號(hào);“T_SAMP”表示采樣間隔,以秒為單位,本例中為5 s;“START_TIME_MJD”表示觀測(cè)值文件中第一個(gè)觀測(cè)記錄的時(shí)刻,為修正的儒略日期;衛(wèi)星標(biāo)識(shí)“9 01 07 08 11 17 19 20 28 32”中,第一個(gè)數(shù)字“9”表示觀測(cè)并記錄了9顆衛(wèi)星,其余數(shù)字表示記錄的衛(wèi)星編號(hào),一般只有在觀測(cè)衛(wèi)星或總的觀測(cè)衛(wèi)星數(shù)發(fā)生變化時(shí),文件中才會(huì)重新標(biāo)識(shí)此信息;衛(wèi)星標(biāo)識(shí)下一行為多路徑效應(yīng),一顆衛(wèi)星一個(gè)歷元對(duì)應(yīng)一個(gè)值。
(2)多路徑效應(yīng)的可視化表達(dá)
為直觀表達(dá)觀測(cè)值質(zhì)量,需對(duì)衛(wèi)星各歷元的多路徑效應(yīng)、信噪比、衛(wèi)星高度角和方位角、電離層誤差進(jìn)行讀取,并計(jì)算對(duì)應(yīng)的歷元時(shí)刻。鑒于每個(gè)觀測(cè)值文件中記錄每顆衛(wèi)星的檢測(cè)結(jié)果均包括以上元素,歷元時(shí)刻可根據(jù)衛(wèi)星是否記錄進(jìn)行推算。因此,可定義一個(gè)衛(wèi)星類(Satellite類),并采用索引的方式,獲取類中相關(guān)字段的值。Satellite類結(jié)構(gòu)如下[6]
class Satellite
{
public float Mp1;∥P1 多路徑效應(yīng)
public float Mp2;∥P2 多路徑效應(yīng)
.........................................................
public static Int32[] SatNo:∥觀測(cè)衛(wèi)星編號(hào)
∥構(gòu)造函數(shù)
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("下標(biāo)越界!");
}
}
set
{
switch(index)
{
cass 0:Mp1=value;break;
cass 1:Mp2=value;break;
......................................................
default
throw new IndexOutOfRangeException("下標(biāo)越界!");
}
}
}
}
為方便獲取各衛(wèi)星的相關(guān)信息,并顧及每顆衛(wèi)星可能包含若干歷元的信息、且歷元間可能不連續(xù),主程序采用List類定義了32個(gè)satellite數(shù)組
List
∥實(shí)例化32個(gè)Satellite類對(duì)象
for(int i=0;i<32;i++)
{
satellite[i]=new List
}
satellite 數(shù)組中每個(gè)元素均為L(zhǎng)ist類的實(shí)例,每個(gè)數(shù)組又以Satellite類實(shí)例對(duì)象為元素,從而可采用List類中的Add方法,以衛(wèi)星編號(hào)為索引,實(shí)現(xiàn)對(duì)記錄衛(wèi)星檢核結(jié)果文件中各個(gè)歷元相關(guān)信息的讀取,并采用類索引獲取所需信息,關(guān)鍵代碼如下
Satellite G=new Satellite(b,c,0,0,0,0,0,0,time);∥創(chuàng)建對(duì)象G
satellite[(Satellite.SatNo[k]-1)].Add(G);∥將對(duì)象G添加到第SatNo[k]個(gè)List數(shù)組中
在讀取完一個(gè)文件后,便可利用類索引獲得所需元素,并利用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為衛(wèi)星編號(hào);satellite [j].Count為該衛(wèi)星的歷元數(shù);satellite [j] [i] [0]為衛(wèi)星j第i個(gè)歷元的L1多路徑效應(yīng);satellite [j] [i] [1]為衛(wèi)星j第i個(gè)歷元的L2多路徑效應(yīng);satellite [j] [i] [8]為衛(wèi)星j第i個(gè)歷元對(duì)應(yīng)的歷元時(shí)刻。 對(duì)檢核結(jié)果文件可視化表達(dá)后,便可直觀地對(duì)觀測(cè)值文件進(jìn)行質(zhì)量分析,從而對(duì)質(zhì)量較差的數(shù)據(jù)進(jìn)行編輯。數(shù)據(jù)的編輯包括RINEX文件的切割與合并、衛(wèi)星的選擇和禁用、高度角的設(shè)置等,同樣可通過調(diào)用TEQC命令來實(shí)現(xiàn)。如要禁用某顆GPS衛(wèi)星全部觀測(cè)值,可設(shè)置TEQC參數(shù)為 teqc - G# 輸入文件> 輸出文件 其中,參數(shù)“G”表示GPS衛(wèi)星;“#”表示衛(wèi)星編號(hào)。 然而,TEQC對(duì)衛(wèi)星的禁用是禁用該衛(wèi)星的全部觀測(cè)數(shù)據(jù),這對(duì)觀測(cè)條件不好、衛(wèi)星較少時(shí)的情況非常不利。Chart-QC軟件在分析RINEX文件結(jié)構(gòu)的基礎(chǔ)上,結(jié)合可視化圖形,實(shí)現(xiàn)了對(duì)單顆衛(wèi)星部分觀測(cè)值進(jìn)行禁用的功能,在改善原始觀測(cè)值質(zhì)量的同時(shí),提高了觀測(cè)數(shù)據(jù)的利用率?;舅悸窞椋?/p> 1) 判斷多路徑誤差大小。 2) 獲取異常多路徑誤差對(duì)應(yīng)的歷元。 3) 刪除RINEX文件中對(duì)應(yīng)歷元的衛(wèi)星標(biāo)識(shí)及觀測(cè)值。 4) 保存RINEX文件。 數(shù)據(jù)編輯完成后,還需將編輯后的數(shù)據(jù)進(jìn)行存盤。Chart-QC提供3種保存方式,即替換存盤、更改路徑存盤、改名存盤。 采用某GPS控制網(wǎng)29個(gè)觀測(cè)值文件對(duì)Chart-QC軟件的功效進(jìn)行測(cè)試,主要是對(duì)電離層跳變嚴(yán)重、多路徑效應(yīng)較大、衛(wèi)星失鎖頻繁的觀測(cè)值進(jìn)行編輯??梢越脝晤w衛(wèi)星觀測(cè)值,也可禁用觀測(cè)文件某連續(xù)時(shí)間段內(nèi)的所有衛(wèi)星觀測(cè)值,或者禁用單顆衛(wèi)星部分歷元觀測(cè)值,需具體情況具體分析。 將原始觀測(cè)值數(shù)據(jù)與經(jīng)Chart-QC軟件編輯后的觀測(cè)值數(shù)據(jù)間的多路徑效應(yīng)、觀測(cè)值總數(shù)與發(fā)生周跳觀測(cè)值個(gè)數(shù)之比進(jìn)行對(duì)比分析,部分結(jié)果見表1。 表1 GNSS數(shù)據(jù)編輯前后質(zhì)量比對(duì) 對(duì)結(jié)果進(jìn)行分析可知,預(yù)處理后數(shù)據(jù)的觀測(cè)質(zhì)量相對(duì)于原始數(shù)據(jù)質(zhì)量有了大幅度的提高。首先,從有效率指標(biāo)來看,數(shù)據(jù)文件中有效率有的減小了,有的增大了,但整體上有效率普遍保持不變;其次,從多路徑誤差來看,mp1值普遍減小,其中減小值最小為5.3%、最大為33.3%;mp2值同樣普遍減小,減小值最小為17.7%、最大為46.9%;最后,從觀測(cè)值總數(shù)與發(fā)生周跳觀測(cè)值個(gè)數(shù)之比(o/slps)來看,o/slps值普遍增大,且增幅很大。顯然,Chart-QC軟件實(shí)現(xiàn)了GPS觀測(cè)數(shù)據(jù)預(yù)處理的目的。 為進(jìn)一步評(píng)價(jià)Chart-QC軟件在GNSS數(shù)據(jù)質(zhì)量分析與編輯方面的功效,在保持相同的高度角、采樣間隔、電離層模型等基線處理參數(shù)設(shè)置的情況下,采用GPS數(shù)據(jù)處理軟件對(duì)所有基線按兩種方案進(jìn)行一次性處理。 方案1:對(duì)原始GPS觀測(cè)值文件進(jìn)行基線解算。 方案2:對(duì)經(jīng)Chart-QC軟件編輯后的觀測(cè)值文件進(jìn)行基線解算。 基線質(zhì)量的絕對(duì)質(zhì)量指標(biāo)是判定基線質(zhì)量合格與否的重要參數(shù),包括獨(dú)立環(huán)閉合差和復(fù)測(cè)基線長(zhǎng)度較差[7-10]。此處主要以這兩個(gè)指標(biāo)來評(píng)價(jià)Chart-QC的功效。根據(jù)文獻(xiàn)[6],獨(dú)立環(huán)閉合差限差為 復(fù)測(cè)基線長(zhǎng)度較差限差為 式(1)、式(2)中,σ為基線測(cè)量精度;其余符號(hào)含義可參見文獻(xiàn)[6]。σ可按下式進(jìn)行計(jì)算 由于編輯前后的文件均由相同的GPS接收機(jī)進(jìn)行施測(cè),且同名基線弦長(zhǎng)一致,故基線測(cè)量精度σ相同,繼而復(fù)測(cè)基線長(zhǎng)度較差之限差也相同;此外,同名獨(dú)立環(huán)基線邊數(shù)相同,且為相同的基線,故獨(dú)立環(huán)閉合差限差也相同。因此,將編輯前后文件進(jìn)行基線處理所得獨(dú)立環(huán)閉合差、復(fù)測(cè)基線長(zhǎng)度較差之絕對(duì)值進(jìn)行比較,其中的較小者,更容易滿足限差要求,數(shù)據(jù)質(zhì)量自然較高。于是,為宏觀評(píng)價(jià)上述指標(biāo)值的大小,將方案2結(jié)果之絕對(duì)值減方案1結(jié)果之絕對(duì)值,結(jié)果如圖3和圖4所示。 圖3 異步環(huán)及分量閉合差絕對(duì)值之差 圖4 復(fù)測(cè)基線長(zhǎng)度較差之差 由圖3、圖4可以看出,獨(dú)立環(huán)分量閉合差及環(huán)閉合差、復(fù)測(cè)基線長(zhǎng)度較差之絕對(duì)值之差大都小于0,也即方案2結(jié)果之絕對(duì)值大都小于方案1結(jié)果之絕對(duì)值,說明經(jīng)由Chart-QC軟件編輯后的數(shù)據(jù)整體質(zhì)量有所改善,從而說明了基于TEQC的Chart-QC軟件能對(duì)GNSS觀測(cè)數(shù)據(jù)的質(zhì)量進(jìn)行檢查、并能根據(jù)可視化分析結(jié)果優(yōu)化觀測(cè)值質(zhì)量。差值等于0是因某些原始觀測(cè)數(shù)據(jù)質(zhì)量本身較高,沒有對(duì)其進(jìn)行編輯處理所致。 在分析TEQC軟件優(yōu)缺點(diǎn)的基礎(chǔ)上,結(jié)合Visual C#面向?qū)ο蟪绦蛟O(shè)計(jì)的方法,對(duì)TEQC進(jìn)行了基于Windows界面的可視化封裝,采用Chart控件實(shí)現(xiàn)了質(zhì)量檢核結(jié)果的可視化表達(dá),實(shí)現(xiàn)了GNSS觀測(cè)數(shù)據(jù)預(yù)處理過程的簡(jiǎn)潔化。程序運(yùn)行及處理結(jié)果表明:Chart-QC操作簡(jiǎn)單、界面友好;質(zhì)量檢核結(jié)果可視化圖形美觀、易于分析;能在檢查與分析觀測(cè)值質(zhì)量的基礎(chǔ)上,對(duì)觀測(cè)數(shù)據(jù)進(jìn)行編輯,繼而改善基線質(zhì)量,為網(wǎng)平差提供質(zhì)量較好的觀測(cè)值,從而有利于提高定位精度,從而也驗(yàn)證了TEQC軟件自身在數(shù)據(jù)分析與編輯方面的功效。 參考文獻(xiàn): [1] 趙紅強(qiáng),郭際明,李宗華,等.繪圖工具QCVIEW在GPS數(shù)據(jù)預(yù)處理中的應(yīng)用[J].測(cè)繪通報(bào),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軟件的應(yīng)用與數(shù)據(jù)分析[J].地理空間信息,2012,10(4):76-78. [4] 王建軍,吳北平,馮?。甌EQC和QCVIEW32在GPS觀測(cè)數(shù)據(jù)預(yù)處理中的應(yīng)用[J].工程地球物理學(xué)報(bào),2010,7(5):634-638. [5] 楊宏偉,李晶.C#程序員開發(fā)手冊(cè)[M].北京:科學(xué)出版社,2006:612-619. [6] 梁斌玉.叩響C#之門[M].北京:電子工業(yè)出版社,2009:137-162. [7] 張勤,李家權(quán).GPS 測(cè)量原理及應(yīng)用[M].北京:科學(xué)出版社,2005:171-172. [8] 李征航,黃勁松.GPS測(cè)量與數(shù)據(jù)處理[M].2版. 武漢:武漢大學(xué)出版社,2010:282-286. [9] 中華人民共和國(guó)國(guó)家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局.GB/T 18314—2009全球定位系統(tǒng)(GPS)測(cè)量規(guī)范[S].北京:中國(guó)標(biāo)準(zhǔn)出版社,2009. [10] 魏二虎,王中平,龔真春,等.TEQC軟件用于GPS控制網(wǎng)數(shù)據(jù)質(zhì)量檢測(cè)的研究[J].測(cè)繪通報(bào),2008(9):6-9.3. GNSS觀測(cè)數(shù)據(jù)的編輯
4. 數(shù)據(jù)的保存
三、軟件性能整體測(cè)試
四、結(jié)束語