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