邵成立,王智
(青島市勘察測繪研究院,山東青島 266032)
在工程測量和工業(yè)測量領域,經(jīng)常需要對不同的空間坐標系進行轉換,如WGS-84坐標系和1954年北京坐標系、地方坐標系和工程坐標系相互轉換,在攝影測量和GIS中,也經(jīng)常要對不同視角的坐標系進行轉換。以往的工作一般是采用布爾沙-沃爾夫等基于小角度的轉換模型,或將大角度先轉換為小角度再進行轉換[1],或是做非線性處理[2,3],或是應用羅德里格矩陣進行坐標轉換[4]。而在實際工程應用中,經(jīng)常遇到大角度的空間直角坐標轉換[5]。筆者根據(jù)方向余弦為參數(shù)、適用于任何角度旋轉的空間直角坐標轉換的算法用C#編寫了計算程序,詳細說明了程序設計和實現(xiàn)過程,并通過一個具體實例驗證了此程序的可行性。
設點A在空間直角坐標O-XYZ中的坐標為(Xa,Ya,Za),在空間直角坐標 O - X'Y'Z'中的坐標為(Xb,Yb,Zb),令 X'軸在 O -XYZ 中的方向余弦為(a1,b1,c1),Y'軸在 O -XYZ 中的方向余弦為(a2,b2,c2),Z'軸在O-XYZ中的方向余弦為(a3,b3,c3),而令X軸在O -X'Y'Z'中的方向余弦為(a1,a2,a3),Y 軸在 O -X'Y'Z'中的方向余弦為(b1,b2,b3),Z 軸在 O -X'Y'Z'中的方向余弦為(c1,c2,c3),O'點相對于O點的平移參數(shù)為(Xo,Yo,Zo),比例參數(shù)為 u。
圖1 坐標轉換模型示意圖
則兩個坐標系下同名點坐標可用矩陣表示為:
且旋轉矩陣是正交矩陣,則滿足下列條件:
對式(1)進行泰勒級數(shù)展開,可列出如下誤差方程形式:
式中,Vi=[VXiVYiVZi]T
根據(jù)式(3)可列出如下條件方程:
其中X的含義同上,B和W分別為:
上述各式中,上標為0的數(shù)為近似值,dX0、dY0、dZ0、du0、da1、da2、da3、db1、db2、db3、dc1、dc2、dc3為改正數(shù)。按附有條件的間接平差解算式(3)和式(4),就可得到 X[6]。
筆者使用Visual C#.net 2005作為開發(fā)工具編制了程序。Visual C#.net 2005是.NET平臺下最為強大的開發(fā)工具,它提供了包括設計、編碼、編譯調(diào)試和數(shù)據(jù)庫連接操作等基本功能,以及基于開放架構的服務器組件開發(fā)平臺、企業(yè)開發(fā)工具和應用程序重新發(fā)布工具及性能評測報告等高級功能[7]。此程序主要實現(xiàn)兩個功能:一是根據(jù)在兩個坐標系中3個以上的公共點坐標計算轉換參數(shù),二是根據(jù)算出的轉換參數(shù)實現(xiàn)對轉換點在兩個坐標系下進行轉換。程序界面如圖2所示。
圖2 程序主界面
具體實現(xiàn)過程如下(僅列出部分代碼加以說明):
(1)啟動 Visual C#.net 2005,新建項目,選擇“Windows”應用程序。如圖1所示在窗體上添加相應的 Label、Button、TextBox、PictureBox 等控件,并修改相應的屬性。程序中要用大量的矩陣運算,應添加矩陣類,雙擊Button控件,添加相應代碼。
(2)TextBox里的值為String類型,應首先把它轉化為double類型
(3)定義參數(shù),并賦初值,定義所需的相應矩陣
(4)進行迭代運算
根據(jù)附有條件的間接平差分別給誤差方程中的B、L以及條件方程中C、Wx矩陣賦值,并用矩陣類中的函數(shù)進行相應的計算。計算出參數(shù)改正值后使其加在初值上,迭代循環(huán)使用do…while()語句。While后面括號中的迭代條件這里取為旋轉矩陣中的任何一個元素大于0.001。最后通過ToString()函數(shù)把結果轉換為字符串類型并賦值到相應的TextBox里
(5)利用轉換參數(shù)計算任意點的坐標轉換值
為了檢驗該程序的效果,筆者在同濟大學彰武路校區(qū)里用索佳Set220全站儀對一構件進行觀測,采用坐標測量功能在兩個任意假定的不同空間直角坐標系下對其表面采集了10個數(shù)據(jù)點,其觀測結果如表1所示。
在兩個不同的空間直角坐標系下的坐標觀測值 表1
以點1~點4作為公共點利用該程序算出的轉換參數(shù)為:
u=1.001760538 迭代次數(shù)n=4
利用這些轉換參數(shù)可計算出各個點轉換值,結果如表2所示。
實測值和轉換值的比較 表2
計算結果表明,利用本文給出的程序能夠較好的實現(xiàn)空間任意角度的不同直角坐標轉換。
基于13參數(shù)的空間直角坐標轉換模型公式簡單,且易于程序實現(xiàn)。其轉換精度不僅和公共點個數(shù)有關而且和迭代條件有關。
[1]胡亞江,楊曉梅,沙月進.大歐拉角的空間直角坐標轉換方法探討[J].現(xiàn)代測繪,2006,11(6):10~12.
[2]胡志剛,花向紅,李海英.基于同倫算法的非線性坐標轉換模型研究[J].測繪工程,2008,17(6):24~28.
[3]周興華,趙吉先.淺談空間直角坐標系非線性坐標轉換[J].水利科技與經(jīng)濟,2005,11(4):210~212.
[4]張卡,張道俊,盛業(yè)華等.三維坐標轉換的兩種方法及其比較研究[J].數(shù)學的實踐與認識,2008,38(23):121~128.
[5]潘國榮,周瑩,張德海.坐標轉換模型在盾構姿態(tài)計算中的應用[J].大地測量與地球動力學,2006,8(3):0084 ~04.
[6]陳義,沈云中,劉大杰.適用于大旋轉角的三維基準轉換的一種簡便模型[J].武漢大學學報(信息科學版),2004,29(12):1101 ~1105.
[7]王超,潘楊,張維維.Visual C#通用范例開發(fā)金典[M].北京:電子工業(yè)出版社,2008.