成都理工大學(xué) 地球科學(xué)學(xué)院 魏 悅 秦巖賓 韓麗麗
基于VB程序的GPS基線向量網(wǎng)平差程序設(shè)計(jì)
成都理工大學(xué) 地球科學(xué)學(xué)院 魏 悅 秦巖賓 韓麗麗
基于VB開(kāi)發(fā)平臺(tái)的GPS基線向量網(wǎng)平差程序設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,操作方便,可以用來(lái)處理各種網(wǎng)型的GPS基線數(shù)據(jù)。本文,筆者主要介紹程序的設(shè)計(jì)流程。
1.基線數(shù)據(jù)格式的設(shè)計(jì)和讀入。
(1)數(shù)據(jù)文件的設(shè)計(jì)。GPS接受機(jī)觀測(cè)值經(jīng)過(guò)南方測(cè)繪GPS數(shù)據(jù)處理軟件預(yù)處理后,可以生成不同格式的基線解數(shù)據(jù)。如:PowerAdi3.0 Trimble ,南方格式,TGPPS Ski Pro等。本文,筆者采用南方格式的基線解數(shù)據(jù),每一行為每條基線的觀測(cè)信息,加入已知點(diǎn)數(shù)據(jù),用Excel進(jìn)行簡(jiǎn)單編輯,即可得到程序所需的格式(網(wǎng)名.txt)。程序運(yùn)用Do–Loop循環(huán)語(yǔ)句逐行讀入基線數(shù)據(jù)并分別進(jìn)行處理,結(jié)果用數(shù)組進(jìn)行保存。其數(shù)據(jù)文件格式為:已知點(diǎn)點(diǎn)名,已知點(diǎn)X,已知點(diǎn)Y;起點(diǎn)名,終點(diǎn)名,起點(diǎn)X,起點(diǎn)Y,起點(diǎn)Z,ΔX,ΔY,ΔZ。在每一個(gè)數(shù)據(jù)之間用“,”作為分隔符。
(2)數(shù)據(jù)文件的讀入。GPS基線數(shù)據(jù)的錄入要根據(jù)數(shù)據(jù)文件的格式來(lái)編寫(xiě)程序的讀入方式。根據(jù)數(shù)據(jù)文件的結(jié)構(gòu)特點(diǎn),采用數(shù)據(jù)逐行讀入并分別對(duì)其進(jìn)行處理,在讀入每一行數(shù)據(jù)后,根據(jù)該行中的分隔符來(lái)分離一行中的不同類型數(shù)據(jù),然后分別存儲(chǔ)在對(duì)應(yīng)的數(shù)組中。由于每一行的最后一個(gè)類型的數(shù)據(jù)不存在分隔符,所以要用另外一個(gè)語(yǔ)句來(lái)處理,可以采用right$(str,n)函數(shù),直接讀取每一行中最后一個(gè)類型的數(shù)據(jù)。
2.待測(cè)點(diǎn)近似坐標(biāo)的解算。首先定義點(diǎn)名數(shù)組,通過(guò)依次訪問(wèn)所有基線的起點(diǎn)點(diǎn)名數(shù)組、終點(diǎn)點(diǎn)名數(shù)組以及已知點(diǎn)點(diǎn)名數(shù)組,根據(jù)不重復(fù)不遺漏的原則,查詢所有點(diǎn)名(包括已知點(diǎn)),從而建立控制點(diǎn)點(diǎn)名數(shù)組,并保存控制點(diǎn)點(diǎn)名。假設(shè)第一點(diǎn)的平面坐標(biāo)為x(1)=100 000,y(1)=100 000,按基線條數(shù)循環(huán),判斷基線的起點(diǎn)和終點(diǎn)是否已經(jīng)計(jì)算出(如果起點(diǎn)坐標(biāo)已經(jīng)算出,那么終點(diǎn)坐標(biāo)就等于起點(diǎn)坐標(biāo)加上向量差;如果終點(diǎn)坐標(biāo)已經(jīng)算出,那么起點(diǎn)坐標(biāo)就等于終點(diǎn)坐標(biāo)減去向量差),依次循環(huán)所有的控制點(diǎn)數(shù)組,直到計(jì)算出所有的控制點(diǎn)坐標(biāo)。加入已知點(diǎn)的坐標(biāo),計(jì)算出兩個(gè)平面坐標(biāo)系的轉(zhuǎn)換參數(shù)(2個(gè)旋轉(zhuǎn),1個(gè)比例,1個(gè)尺度縮放),把假設(shè)坐標(biāo)轉(zhuǎn)換到已知點(diǎn)的坐標(biāo)系中。
3.列誤差方程及法方程組。該程序采用的平差模型是間接平差法。在列誤差方程時(shí),按觀測(cè)基線循環(huán),一條基線為一個(gè)誤差方程。在計(jì)算出誤差方程的系數(shù)及常數(shù)后,計(jì)算出法方程,并計(jì)算出法方程的系數(shù)陣元素。采用這種算法,只需要一個(gè)一維數(shù)組來(lái)臨時(shí)保存誤差方程系數(shù)元素,調(diào)用法方程組通用過(guò)程組成法方程。一條基線的誤差方程處理完畢,即進(jìn)入下一條基線,當(dāng)所有的基線處理完畢時(shí),完成法方程組成。
4.高斯約化法解算法方程組。使用高斯約化法解算法方程組,可按3個(gè)步驟進(jìn)行。
(1)利用循環(huán)語(yǔ)句約化法方程系數(shù)陣和常數(shù)項(xiàng),并回代求解未知參數(shù)。
(2)將約化后的法方程系數(shù)陣送入通用過(guò)程inversion()求逆。
(3)按點(diǎn)號(hào)循環(huán),求解待定點(diǎn)坐標(biāo)中誤差。其中,法方程系數(shù)陣元素存儲(chǔ)采用上三角一維數(shù)組存儲(chǔ),其目的是節(jié)省存儲(chǔ)空間,最初保存法方程系數(shù)陣,約化后保存法方程系數(shù)陣消化方程,求逆完畢后再保存法方程系數(shù)陣逆陣元素,最大程度地節(jié)省內(nèi)存。
高斯約化共有3重循環(huán),最外層循環(huán)控制約化次數(shù),第二層循環(huán)控制約化的行數(shù),最內(nèi)層循環(huán)控制一行中所約化的元素?;卮蠼馕粗獏?shù)時(shí),采用2重循環(huán),外層循環(huán)控制求解未知數(shù),內(nèi)層循環(huán)控制回代次數(shù)。法方程系數(shù)陣求逆是利用高斯約化后系數(shù)陣,以單位陣的一列為常數(shù)項(xiàng),回代求解得到逆陣元素。
5.平差成果輸出。平差成果文件格式為txt,其中包括點(diǎn)名、x坐標(biāo)和y坐標(biāo)以及點(diǎn)位中誤差mp。用總控制點(diǎn)數(shù)做循環(huán)次數(shù),把每組數(shù)據(jù)都寫(xiě)入文本文件中,得到最終的平差文件,并將其保存在指定路徑中。
用南方測(cè)繪GPS數(shù)據(jù)處理軟件處理相同的數(shù)據(jù),得到的平差結(jié)果與運(yùn)行本文程序得到的平差結(jié)果進(jìn)行比較,以確定該程序的正確性。具體結(jié)果見(jiàn)表1。
表1 平差結(jié)果比較
由表1可知,兩種程序所得的結(jié)果在X方向的差值為分米級(jí),Y方向的差值為厘米級(jí)。出現(xiàn)這一結(jié)果的原因有二:一是采用的算法不同,二是本文中,筆者用的程序沒(méi)有處理觀測(cè)值的各種誤差,如電離層、對(duì)流層折射誤差等。
GPS基線向量網(wǎng)平差程序能完成任意GPS基線向量網(wǎng)平差數(shù)據(jù)的處理,在使用性方面能基本滿足用戶的需要,但與商品化程序相比還有許多方面需要改進(jìn),筆者將對(duì)其進(jìn)行不斷改進(jìn)和完善。