胡圣武 鞠全泰 張其華
(河南理工大學 測繪與國土信息工程學院, 河南 焦作 454000)
在測量工作中導致控制網布設選點困難的情況是很常見的,例如:礦井隧道下測量、坑道中測量、植被茂密的山區測量以及建筑物分布復雜的城區測量。為了應對實際測量工作中出現的復雜環境、有效控制點數量少以及通視條件差的問題,無定向附合導線憑借其無須測定連接角、已知控制點間不需要通視、布設靈活方便、外業觀測工作量小以及適合編程計算的優點脫穎而出并被廣泛應用[1-3]。無定向附合導線的應用縮短測量周期、提高工作效率,適應經濟建設快速發展的需求。
在無定向附合導線平差的程序編制上,現有成果多是以矩陣實驗室[4](matrix laboratory,MATLAB)、Excel VBA[5]和自動計算機輔助設計軟件[6](autodesk computer aided design,AutoCAD)等相關軟件自帶編程語言編寫的程序,大多運用近似平差和概略平差的原理,適用于較低精度的情況。雖然在一定程度上能夠減少編程代碼量,減少工作量,在一定的具體的工作環境中可能很適用,但是卻少了程序“通用且可移植”的特性對應用程序的使用條件提出較高的要求。顯然這并不利于其發展,本文考慮到這些限制特選擇高級腳本語言Python對無定向附合導線的嚴密平差計算進行程序編寫,使其擁有代碼簡單易讀、可移植性強且界面美觀的特性。更加適應現代信息交換頻繁、復雜的環境。
因此,對無定向附合導線平差計算的討論研究以及程序編制對于地形測量、工程測量、城市地籍測量和軍控測量等應用有著十分重要的意義。
無定向附合導線即是由于測區環境復雜、控制點破壞、控制點稀少以及控制點間通視條件差而導致的附合導線兩端控制點無法形成定向邊的情況(圖1)。在這種情況下以傳統觀點看來是難以進行計算的,而根據測量平差的原理在假定起始方位角、假定坐標系的條件下該導線也可以進行理論嚴密且精度可以達到一級導線網的要求[7]。

圖1 無定向附合導線示意圖

(1)檢核觀測數據、起始數據正確性
① 在數據正確的情況下,按照下述步驟計算出起始邊AP1的方位角的近似值[10-12]。

(1)

則計算各邊假定方位角為
(2)
② 又根據各邊端點縱橫坐標差、邊長觀測值和其假定方位角的數學關系,則有
(3)
式中,Li為第i條邊長觀測值;ΔXi、ΔYi分別為第i條邊的縱橫坐標差。


計算出兩者的差值,即
(6)

(7)

(2)列出條件方程式并化簡
① 以初始邊近似方位角為基礎再次根據方位角遞推公式,則有
(8)
據此推導出各邊近似方位角為
(9)
再次根據各邊端點縱橫坐標差、邊長觀測值和其近似方位角的數學關系,可得
(10)
計算求得各邊的縱橫坐標差ΔXi、ΔYi,進而結合初始A點坐標推導求得各待求點近似坐標Pi(Xi,Yi)。
② 根據導線A、B兩點縱橫坐標閉合條件,列出條件方程式并線性化,可得
(11)
即
(12)
將式(12)微分則可得
(13)
再令
(14)
式中,wx為x坐標的閉合差;wy為y坐標的閉合差。
則式(13)變為
(15)
又根據式(3)得到式(15)的微分量為
(16)
式中,ρ取值為206 265。
由式(9)可知
(17)
將式(17)代入式(16)可得
(18)
對式(18)進一步化簡可得
(19)
式(19)代入式(15)的第一式可得
(20)
同理可得式(15)的第二式為
(21)
結合式(20)和式(21)并考慮到附有參數的條件平差條件方程矩陣為
(22)
對式(22)整理可得條件方程中各矩陣為
(23)
③ 結合測角、測邊中誤差確定權矩陣
設測角中誤差為σβ,測距中誤差計算式為(a+b×S)mm,則各測邊中誤差為
(26)
由式(26)計算出各邊長觀測值中誤差時,Li的單位是km。
又因為測角中誤差是一樣的,因此,設Pβi=1,則有
(27)
根據式(27)所計算邊長的權是有單位的,一般是(s2/mm2)。
因此,可得到權矩陣P為
(28)
(3)按照附有參數的條件平差方式進行平差計算,可得式(29)。
(29)
式中,vx為參數的改正數;V為觀測值的改正數;K為聯系向量;W為閉合差;Q為協因數矩陣。式(29)中的Naa、Nbb的含義以及求法見文獻[9]。
精度評定按式(31)計算。
(30)

(1)程序中的矩陣類的代碼
由于無定向附合導線的平差運算中涉及大量的矩陣和坐標點的運算及轉換,為了便于編碼,則需要利用到矩陣類和點類。坐標點類可以通過簡單的自定義編碼來實現,而自定義一個矩陣類需要較多的代碼才能實現,這就需要一個擁有較為成熟的矩陣類的編碼環境進行程序編寫。
(2)數據的輸入與計算結果輸出
由于觀測值數據量常常是較多的,若是全靠鍵盤輸入對用戶來說是不現實的,而且在輸入中容易發生錯誤,因此,在數據的輸入方式上除鍵盤輸入以外應該設有特定格式限制的文件數據導入選項;輸入數據的讀取方式上在限制用戶輸入格式的情況下最好能夠盡量規避包括中英文字符、多余字符和空格使用不當等不規范輸入而造成的程序報錯;而在結果的輸出顯示方式上應盡量方便用戶的閱讀和拷貝。
(3)界面友好易于使用
考慮到本程序應該擁有良好的交互效果和用戶使用體驗,因此,必須設計GUI可視化交互界面,盡量以鼠標為主要操作選擇。
在充分考慮以上編程重點難點需求、程序的可移植性以及較為容易的編碼難度,最終決定選用腳本語言Python作為開發語言。利用Python語言中眾多拓展模塊中NumPy模塊的矩陣類(matrix),進行關于矩陣運算的程序編寫;著力運用Python中的Qt應用程序開發框架進行GUI編程來實現無定向附合導線嚴密平差的界面設計以及運行;利用正則表達式實現輸入數據的讀取、整理操作;利用json數據文件實現觀測值數據的文件導入。達到程序設計界面簡潔友好,操作簡單,用多種數據輸入模式可供選擇的目標。
程序邏輯流程如圖2所示。

圖2 程序邏輯流程圖
程序界面設計如圖3所示。

圖3 程序界面關系圖
操作系統:Windows10。
編譯軟件:PyCharm。
編程語言:Python。
庫函數:PyQt5、NumPy、re、sys、math、json。
實例數據如表1所示。

表1 實例觀測值數據
測角中誤差為:2″,測邊中誤差為:(5+5·S)mm。
實例如圖4所示。

圖4 實例點位示意圖
使用過程如下:
(1)打開軟件,如圖5所示。

圖5 程序主界面
(2)輸入參數及數據,如圖6所示。

圖6 輸入參數和觀測值數據界面
(3)開始計算并顯示結果,如圖7所示。

圖7 結果顯示
(4)符合精度要求退出程序。
本文在詳細分析無定向附和導線的解算原理基礎上,編制了無定向附和導線計算程序。通過實例計算證明了本程序的正確性。但本程序還存在一些問題,如大量觀測數據如何自動輸入,程序界面還不是很完善等,因此,對無定向導線程序的計算今后還需要繼續優化。