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

表1 平差結果比較
由表1可知,兩種程序所得的結果在X方向的差值為分米級,Y方向的差值為厘米級。出現這一結果的原因有二:一是采用的算法不同,二是本文中,筆者用的程序沒有處理觀測值的各種誤差,如電離層、對流層折射誤差等。
GPS基線向量網平差程序能完成任意GPS基線向量網平差數據的處理,在使用性方面能基本滿足用戶的需要,但與商品化程序相比還有許多方面需要改進,筆者將對其進行不斷改進和完善。