陳 浩歲秀珍虞獻軍樓亨龐
1義烏市大地數(shù)字測繪有限公司,浙江 義烏,322000
2義烏市地理信息中心,浙江 義烏,322000
3義烏市勘測設(shè)計研究院,浙江 義烏,322000
為滿足城市建設(shè)需要,我國使用的坐標(biāo)系統(tǒng)有1954北京坐標(biāo)系、1980西安坐標(biāo)系以及各個城市的地方獨立坐標(biāo)系,隨著2000國家坐標(biāo)系在全國范圍內(nèi)全面啟用,以往坐標(biāo)系統(tǒng)紛紛退出歷史舞臺[1-3]。在投影中央子午線相同的前提下,將原有坐標(biāo)系統(tǒng)轉(zhuǎn)換為國家2000坐標(biāo)系的過程中,經(jīng)常會遇到選取的公共點坐標(biāo)精度不一致,公共點誤差較大,公共點控制范圍不夠等眾多原因,從而導(dǎo)致轉(zhuǎn)換的坐標(biāo)精度低的問題。經(jīng)典參數(shù)轉(zhuǎn)換模型[4]采用最小二乘法,其抗粗差性能較弱,一旦公共點存在粗差,會出現(xiàn)病態(tài)轉(zhuǎn)換模型,可能導(dǎo)致整個轉(zhuǎn)換結(jié)果無法達到精度要求。因此本文提出基于選權(quán)迭代法改進模型來提高坐標(biāo)轉(zhuǎn)換模型的抗粗差能力,進一步提高坐標(biāo)轉(zhuǎn)換的精度。
坐標(biāo)轉(zhuǎn)換模型應(yīng)用最為廣泛的有四參數(shù)模型、七參數(shù)模型,在區(qū)域坐標(biāo)轉(zhuǎn)換過程中,四參數(shù)模型因其轉(zhuǎn)換精度較高,簡便易掌握而被采用。四參數(shù)轉(zhuǎn)換模型是將不同的高斯投影平面坐標(biāo)利用2個平移參數(shù)、1個旋轉(zhuǎn)參數(shù)和1個尺長因子進行轉(zhuǎn)換。其數(shù)學(xué)模型如下:
式中,X1、Y1為待轉(zhuǎn)換坐標(biāo);X2、Y2為目標(biāo)轉(zhuǎn)換坐標(biāo);Δx0、Δy0為 平 移 參 數(shù);m為 尺 長 因 子;R(θ)為 旋 轉(zhuǎn)矩陣。
由誤差方程:
式中,a=(1+m)cosθ,b=(1+m)sinθ。由間接平差法及最小二乘法可計算四參數(shù),其公式為:
利用兩個以上公共點,根據(jù)式(5)可以計算出經(jīng)典坐標(biāo)轉(zhuǎn)換四參數(shù)。
在實際測量工作中,通常選取的坐標(biāo)轉(zhuǎn)換公共點沒有理論上的精度,經(jīng)常會混入一些粗差點,如若采用經(jīng)典坐標(biāo)轉(zhuǎn)換模型進行轉(zhuǎn)換,根據(jù)現(xiàn)代測量平差理論[5],由于最小二乘法抗粗差性能差,公共點的精度較低或誤差較大勢必會降低整個模型的轉(zhuǎn)換精度。
選權(quán)迭代法的抗差估計是利用權(quán)函數(shù)對公共點進行重新定權(quán)比,降低粗差公共點在參數(shù)計算中的作用,以此來提高轉(zhuǎn)換模型的精度。先利用最小二乘法解算的參數(shù)估值對公共點進行坐標(biāo)轉(zhuǎn)換,當(dāng)某個公共點精度較低,坐標(biāo)轉(zhuǎn)換后的估值與原值差值較大,則認(rèn)為此公共點存在異常,根據(jù)選權(quán)迭代法重新定權(quán),重新解算參數(shù)估值。
令
1)Tukey權(quán)函數(shù)法:
2)Huber權(quán)函數(shù)法:
3)IGG1權(quán)函數(shù)法:
式中,c0、k0、k1稱為調(diào)和系數(shù);σ0為公共點中誤差。
選權(quán)迭代坐標(biāo)轉(zhuǎn)換模型的計算方法與步驟:
1)初始默認(rèn)公共點精度相同,制定初始權(quán)矩陣P0為單位矩陣;
2)運用式(5)計算初始4個參數(shù)值,并求出公共點擬合殘差,根據(jù)選權(quán)迭代法式(7)~式(9),選擇合適方案,計算調(diào)節(jié)權(quán)重比因子ω,代入式(6)求出新的權(quán)矩陣P1;
3)多次重復(fù)步驟2),直至4個參數(shù)值的2次迭代變化值小于δ(一般取δ=10-4)停止迭代,得到的最終擬合參數(shù)即為最終值。
進行迭代解算時,由于迭代次數(shù)較多,需要選擇合適的編程語言進行解算,MATLAB在解算矩陣運算時,簡潔快速,但要與ObjectARX.NET技術(shù)結(jié)合難度較大,同時MATLAB軟件龐大不利于快速安裝使用。因此,選擇采用.NET作為開發(fā)平臺,編程語言采用C#,在進行矩陣解算時,引入MathNet外部接口,其中LinearAlgebra.Double和LinearAlgebra.Generic兩個函數(shù)類提供了選權(quán)迭代運算需要的各矩陣運算方法。
測量中大量的圖件是使用AutoCAD進行數(shù)字化存儲,對AutoCAD圖件進行坐標(biāo)轉(zhuǎn)換,國內(nèi)已有大量科研工作者發(fā)表相關(guān)文獻[7-11],但大多數(shù)是將AutoCAD圖件存儲為dxf格式文件,dxf文件是二進制格式,通過分析dxf文件中的“組碼”,應(yīng)用編程語言提取相應(yīng)節(jié)點坐標(biāo),對節(jié)點坐標(biāo)進行坐標(biāo)轉(zhuǎn)換,得到的新坐標(biāo)替換原dxf文件中的節(jié)點坐標(biāo),以此來實現(xiàn)AutoCAD圖件的坐標(biāo)轉(zhuǎn)換工作。此方法在處理過程中需要遍歷整個dxf文件組碼,根據(jù)“組碼”特征值分多種情況進行實體節(jié)點坐標(biāo)轉(zhuǎn)換,整個過程轉(zhuǎn)換關(guān)系復(fù)雜,考慮因素眾多,且用戶界面互操作性差,無法依據(jù)用戶要求選擇指定圖元進行坐標(biāo)轉(zhuǎn)換。
本文使用ObjectARX.NET技術(shù)生成動態(tài)數(shù)據(jù)鏈接庫DLL文件,進行AutoCAD圖件的坐標(biāo)轉(zhuǎn)換工作。AutoCAD二次開發(fā)工具有VBA、LISP和ObjectARX,其中ObjectARX功能強大,快速訪問圖形數(shù)據(jù)庫,在.NET框架下使用ObjectARX能夠支持創(chuàng)建用戶界面、訪問數(shù)據(jù)庫并支持開發(fā)大型程序。ObjectARX.NET技術(shù)實現(xiàn)坐標(biāo)轉(zhuǎn)換的核心方法為:AutoCAD的dwg格式主要由實體對象(如線、圓弧、文本文件等)及非實體對象(如顏色、線寬、圖層等)構(gòu)建而成。每一個實體對象有唯一的標(biāo)識碼ObjectID,可以通過ObjectARX提供的GetObject()函數(shù)獲取相應(yīng)實體,再對實體進行坐標(biāo)轉(zhuǎn)換。在ObjectARX專門提供了仿射變換TransformBy()函數(shù)與Matrix3d()(三維矩陣)類,Matrix3d類可以用于幾何對象的平移、旋轉(zhuǎn)、投影、縮放、鏡像等功能。通過測量學(xué)中四參數(shù)模型將平移、旋轉(zhuǎn)、縮放的參數(shù)解算出來,再將其代入Matrix3d類函數(shù)以此實現(xiàn)坐標(biāo)轉(zhuǎn)換工作,測量學(xué)四參數(shù)模型與仿射變換三維矩陣轉(zhuǎn)換函數(shù)式為:
Matrix3d zbcs=Matrix3d.Scaling(scaleFactor,movepoint).
PostMultiplyBy(Matrix3d.Rotation(rotateAngle,Vector3d.ZAxis,movepoint)).
PostMultiplyBy(Matrix3d.Displacement(moveStartPnt.GetVectorTo(movepoint)));
上述函數(shù)式中movepoint為四參數(shù)求解得到的(Δy0,Δx0),因大地測量坐標(biāo)系與AutoCAD成圖坐標(biāo)系中X、Y方向相反,在此要變換;moveStartPnt為原轉(zhuǎn)換坐標(biāo)原點(0,0);rotateAngle為四參數(shù)解算的旋轉(zhuǎn)角θ;scaleFactor為四參數(shù)解算的尺長因子m;Displacement()為平移函數(shù);Rotation()為旋轉(zhuǎn)函數(shù);Scaling()為縮放函數(shù)。
因四參數(shù)轉(zhuǎn)換過程中不涉及Z值的轉(zhuǎn)換,在變換過程中先獲取實體Z值屬性,最后再將其數(shù)值賦回。結(jié)合抗差估計算法的整個轉(zhuǎn)換流程如圖1所示。
圖1 圖件轉(zhuǎn)換流程Fig.1 Flow Chart of Map Conversion
本程序提供兩個控制點錄入方式,一是事先編寫txt文本文件,根據(jù)文本文件錄入控制點坐標(biāo),二是直接根據(jù)DWG文件在圖件上拾取控制點坐標(biāo)信息。
根據(jù)控制點坐標(biāo)錄入信息及抗差估計算法,提供4種抗差估計算法模型,進行粗差的探測及剔除粗差后,參數(shù)解算結(jié)果同時具有圖元坐標(biāo)轉(zhuǎn)換及存盤功能。
利用本文研制的軟件與現(xiàn)今應(yīng)用廣泛的Arc-GIS、南方CASS軟件進行坐標(biāo)轉(zhuǎn)換成果比較,驗證軟件的可行性,通過轉(zhuǎn)換控制點中有粗差和無粗差兩種情況進行精度分析,具體結(jié)果見表1。
表1 圖件轉(zhuǎn)換坐標(biāo)檢測差值/mmTab.1 Test of the Coordinates of Map Conversion/mm
對表1特征點進行坐標(biāo)轉(zhuǎn)換中誤差計算可知,在控制點無粗差的情況下,本文研制的軟件與Arc-GIS、南方CASS軟件在圖件轉(zhuǎn)換精度上高度吻合,中誤差在2 mm以內(nèi),表明本文軟件具有可行性,在圖件轉(zhuǎn)換過程中不存在額外精度損失,轉(zhuǎn)換方式可行;當(dāng)控制點中含有粗差,ArcGIS、南方CASS軟件的轉(zhuǎn)換精度明顯下降,圖件的轉(zhuǎn)換中誤差在5 cm以上,這兩種軟件不具有抵抗粗差的能力,而本文研制的軟件轉(zhuǎn)換的圖件坐標(biāo)精度損失不大,中誤差控制在5 mm內(nèi),擁有抵抗粗差的能力。
本文對經(jīng)典四參數(shù)模型進行改進,提出抗差估計的迭代坐標(biāo)轉(zhuǎn)換模型。此模型與ObjectARX.NET技術(shù)結(jié)合研制了基于抗差估計算法的Auto-CAD圖件轉(zhuǎn)換軟件,經(jīng)過與商業(yè)軟件對比,本軟件具有抵抗粗差的能力,圖件轉(zhuǎn)換精度較高。在局部區(qū)域控制點稀少同時摻入異常值時,本軟件能發(fā)揮出抵抗粗差的性能,提高整體轉(zhuǎn)換精度。隨著2000國家坐標(biāo)系使用,在偏遠地區(qū)小范圍勘查時,往往缺少高精度轉(zhuǎn)換控制點的情況下,適宜采用此方法來提高整個轉(zhuǎn)換區(qū)域的精度。