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