吳厚清 蔡以雷
(浙江省測繪資料檔案館 浙江杭州 310000)
四參數(shù)仿射變換在大數(shù)據(jù)整合中的實踐與探討
吳厚清蔡以雷
(浙江省測繪資料檔案館浙江杭州310000)
摘要:根據(jù)布爾莎七參數(shù)模型轉(zhuǎn)換原理,靈活運用四參數(shù)模型對未知坐標系的空間數(shù)據(jù)進行了轉(zhuǎn)換糾正,采用迭代方式保證其轉(zhuǎn)換成果的精度,能滿足測繪與地理信息部門在大數(shù)據(jù)時代對獲取的數(shù)據(jù)進行整合利用的需求,并為未知坐標系的數(shù)據(jù)整合提供新的思路。
關(guān)鍵詞:數(shù)據(jù)整合;布爾莎七參數(shù);坐標轉(zhuǎn)換
在大數(shù)據(jù)時代,測繪與地理信息部門即是數(shù)據(jù)的生產(chǎn)者,也是數(shù)據(jù)的整合者。在工作實踐中,往往要探討對不同部門和行業(yè)獲取的數(shù)據(jù)進行整合,數(shù)據(jù)整合的前提是對不同的數(shù)據(jù)進行統(tǒng)一的坐標定位,也即必須進行坐標轉(zhuǎn)換。
來自不同部門和行業(yè)的數(shù)據(jù),通常具有不同的坐標系,基本的有大地坐標系和平面直角坐標系二大類,而大地坐標系又分地心坐標系和參心坐標系,采用不同的橢球幾何參數(shù)。常見的有1984世界大地坐標系 (即WGS-84坐標系)、1954年北京坐標系、1980西安坐標系、2000國家大地坐標系等。
目前世界各國采用最廣泛的高斯-克呂格投影和墨卡托投影(utm)均是正形投影(等角投影),即該投影在小區(qū)域范圍內(nèi)使平面圖形與橢球面上的圖形保持相似。為了限制長度變形,根據(jù)國際測量協(xié)會規(guī)定,將全球按一定經(jīng)差分成若干帶。我國采用6度分帶或3度分帶。
高斯平面直角坐標系一般以中央經(jīng)線投影為縱軸x,赤道投影為橫軸y,兩軸交點即為各帶的坐標原點。為了避免橫坐標出現(xiàn)負值,在投影中規(guī)定將坐標縱軸西移500公里當作起始軸。為了區(qū)別某一坐標系統(tǒng)屬于哪一帶,通常在橫軸坐標前加上帶號,如(4231898m,21655933m),其中21即為帶號。城建坐標多采用三度帶的高斯-克呂格投影。同一坐標系下的大地坐標(即經(jīng)緯度坐標b,l)與其對應的高斯平面直角坐標(x,y)有嚴格的轉(zhuǎn)換關(guān)系。
關(guān)于坐標轉(zhuǎn)換,首先要搞清楚轉(zhuǎn)換的嚴密性問題,即在同一個橢球里的坐標轉(zhuǎn)換都是相對嚴密的,而在不同的橢球之間的轉(zhuǎn)換是相對近似的。例如,由1954北京坐標系的大地坐標轉(zhuǎn)換到1954北京坐標系的高斯平面直角坐標是在同一參考橢球體范疇內(nèi)的坐標轉(zhuǎn)換,其轉(zhuǎn)換過程是嚴密的。由WGS-84的大地坐標轉(zhuǎn)換到1954北京坐標系,就屬于不同橢球體間的轉(zhuǎn)換。
不同橢球體間的坐標轉(zhuǎn)換在局部地區(qū)的采用的常用辦法是相似變換法,即利用部分分布相對合理高等級公共點求出相應的轉(zhuǎn)換參數(shù)。一般而言,比較嚴密的是用布爾莎七參數(shù)的相似變換法,即x平移,y平移,z平移,x旋轉(zhuǎn),y旋轉(zhuǎn),z旋轉(zhuǎn),尺度變化k。要求得七參數(shù)就需要在一個地區(qū)需要3個以上的已知點,如果區(qū)域范圍不大,最遠點間的距離不大于30km(經(jīng)驗值),這可以用三參數(shù),即x平移,y平移,z平移,而將x旋轉(zhuǎn),y旋轉(zhuǎn),z旋轉(zhuǎn),尺度變化k視為0,所以三參數(shù)只是七參數(shù)的一種特例。很多研究表明,使用七參數(shù)模型換算時,大地高對于其平面坐標換算的結(jié)果即平面坐標(x,y)影響不大;如果不考慮高程的影響,對于不同橢球體下的高斯平面直角坐標可采用四參數(shù)的相似變換法,即四參數(shù)(x平移,y平移,尺度變化m,旋轉(zhuǎn)角度α)。如果用戶要求的精度低于20米,在一定范圍(2'*2')內(nèi),就直接可以用二參數(shù)法(δb,δl)或(δx,δy)修正。但在實際操作中,這也取決于選取的公共點是否合理,并保證其足夠的精度。
對未知坐標系數(shù)據(jù)的轉(zhuǎn)換,在無需考慮高程的影響下,可采用四參數(shù)仿射變換,即四參數(shù)(x平移,y平移,尺度變化k,旋轉(zhuǎn)角度α)來轉(zhuǎn)換未知坐標系統(tǒng)的數(shù)據(jù),同時可適當增加選取公共點,來保證其足夠的精度。在浙江省地理空間數(shù)據(jù)交換和共享平臺數(shù)據(jù)整合實踐中,獲取了浙江省統(tǒng)計局的第三次經(jīng)濟普查工作中產(chǎn)生的浙江省范圍內(nèi)的建筑物地址數(shù)據(jù)(不屬于2000坐標系數(shù)據(jù)),這些地址數(shù)據(jù)都存在相應的普查區(qū)工作邊界,而普查區(qū)工作邊界與浙江省縣及鄉(xiāng)鎮(zhèn)級以上的行政區(qū)域境界存在高度的相關(guān)性,利用邊界之間的相關(guān)性來獲取全省不同區(qū)域多個同名控制點,在實際操作中,為提高轉(zhuǎn)換精度,將浙江省區(qū)域范圍按第三次經(jīng)濟普查工作劃分的普查工作區(qū)為基本單元,運用四參數(shù)仿射變換并采用迭代方式,分別求得每個基本單元的轉(zhuǎn)換參數(shù),就可以得到我們需要的2000坐標系成果。
4.1技術(shù)路線
由于矢量數(shù)據(jù)都是由點組成,只要利用點數(shù)據(jù)就可以根據(jù)四參數(shù)的仿射變換的計算公式進行轉(zhuǎn)換。其中最關(guān)鍵的是找出同名控制點在兩個不同坐標系中的不同坐標。四參數(shù)的仿射變換的計算公式如下:x1=a*x0+b*y0+c,y1=m*x0+n* y0+d,其中(a,b,c,m,n,d)就是需要求的參數(shù),其實中間是有內(nèi)在關(guān)系可以省略掉兩個參數(shù)的,最后需要求一個旋轉(zhuǎn)角度、兩個偏移參數(shù),再加一個尺度變化。
4.2程序?qū)崿F(xiàn)
4.2.1獲取同名控制點
首先利用普查區(qū)工作邊界跟浙江省縣及鄉(xiāng)鎮(zhèn)級以上的境界的高度相關(guān)性的特點,各自取得界線相交點作為同名控制點在不同坐標系中的坐標數(shù)據(jù)組,控制點部分截圖示例如圖1
4.2.2獲取旋轉(zhuǎn)角度
根據(jù)對角兩個控制點數(shù)據(jù)獲取旋轉(zhuǎn)角度參數(shù)。
'〈summary〉
'獲取旋轉(zhuǎn)角度
'〈/summary〉
'〈paramname="fromCoordPoint1"〉源點 1〈/ param〉
'〈paramname="toCoordPoint1"〉目標點 1〈/ param〉
'〈paramname="fromCoordPoint2"〉源點 2〈/ param〉
'〈paramname="toCoordPoint2"〉目標點 2〈/ param〉
'〈returns〉返回旋轉(zhuǎn)角度〈/returns〉
PrivateFunctionGetRotation(fromPoint1As IPoint,toPoint1AsIPoint,fromPoint2AsIPoint, toPoint2AsIPoint)AsDouble
Dima,bAsDouble
a=(toPoint2.y-toPoint1.y)*(fromPoint2.xfromPoint1.x)-(toPoint2.x-toPoint1.x)*(fromPoint2.y-fromPoint1.y)
b=(toPoint2.x-toPoint1.x)*(fromPoint2.xfromPoint1.x)+(toPoint2.y-toPoint1.y)*(fromPoint2.y-fromPoint1.y)
If(Math.Abs(b)〉0)Then
GetRotation=Math.Tan(a/b)
Else
GetRotation=Math.Tan(0)
EndIf
EndFunction
4.2.3獲取縮放比例
'〈summary〉
'根據(jù)對角兩個控制點數(shù)據(jù)和旋轉(zhuǎn)角度獲取尺度變化參數(shù)。
'〈/summary〉
'〈paramname="fromCoordPoint1"〉源點 1〈/ param〉
'〈paramname="toCoordPoint1"〉目標點 1〈/ param〉
'〈paramname="fromCoordPoint2"〉源點 2〈/ param〉
'〈paramname="toCoordPoint2"〉目標點 2〈/ param〉
'〈paramname="rotation"〉旋轉(zhuǎn)角度〈/param〉
'〈returns〉返回縮放比例〈/returns〉
PrivateFunctionGetScale(fromPoint1AsIPoint, toPoint1AsIPoint,fromPoint2AsIPoint,toPoint2As IPoint,rotationAsDouble)AsDouble
Dima,bAsDouble
a=toPoint2.x-toPoint1.x
b=(fromPoint2.x-fromPoint1.x)*Math.Cos(rotation)-(fromPoint2.y-fromPoint1.y)*Math.Sin(rotation)
If(Math.Abs(b)〉0)Then
GetScale=a/b
Else
GetScale=0
EndIf
EndFunction
4.2.4獲取X、Y偏移量
'〈summary〉
'根據(jù)一個控制點數(shù)據(jù)、旋轉(zhuǎn)角度和尺度變化獲取X、Y兩個方向的偏移量參數(shù)。
'〈/summary〉
'〈paramname="fromCoordPoint1"〉源點 1〈/ param〉
'〈paramname="toCoordPoint1"〉目標點 1〈/ param〉
'〈paramname="rotation"〉旋轉(zhuǎn)角度〈/param〉
'〈paramname="scale"〉尺度變化〈/param〉
'〈returns〉返回X方向偏移量〈/returns〉
PrivateFunctionGetXTranslation(fromPoint1As IPoint,toPoint1AsIPoint,rotationAsDouble,scale1 AsDouble)AsDouble
GetXTranslation=(toPoint1.x-scale1*(fromPoint1.x*Math.Cos(rotation)-fromPoint1.y* Math.Sin(rotation)))
EndFunction
'〈summary〉
'得到Y(jié)方向偏移量
'〈/summary〉
'〈paramname="fromCoordPoint1"〉源點 1〈/ param〉
'〈paramname="toCoordPoint1"〉目標點 1〈/ param〉
'〈paramname="rotation"〉旋轉(zhuǎn)角度〈/param〉
'〈paramname="scale"〉尺度變化〈/param〉
'〈returns〉返回Y方向偏移量〈/returns〉
PrivateFunctionGetYTranslation(fromPoint1As IPoint,toPoint1AsIPoint,rotationAsDouble,scale1 AsDouble)AsDouble
GetYTranslation=(toPoint1.y-scale1*(fromPoint1.x*Math.Sin(rotation)+fromPoint1.y* Math.Cos(rotation)))
EndFunction
4.2.5調(diào)用四參數(shù)變換模型
'說明:采用相似變換模型(四參數(shù)變換模型)
'X=ax-by+c
'Y=bx+ay+d
PrivateFunctionUnaffineTransformation(pPoint AsIPoint)AsIPoint
DimaAsDouble,bAsDouble
DimtPointAsIPoint
GetFourParampPoint'得到四參數(shù)
a=m_Scale*Math.Cos(m_RotationAngle)b=m_Scale*Math.Sin(m_RotationAngle)SettPoint=NewPoint
tPoint.x=a*pPoint.x-b*pPoint.y+m_DX tPoint.y=b*pPoint.x+a*pPoint.y+m_DY SetUnaffineTransformation=tPoint EndFunction
4.3坐標轉(zhuǎn)換的成果
通過對浙江省統(tǒng)計局全省普查邊界數(shù)據(jù)的轉(zhuǎn)換,進而獲取普查工作區(qū)范圍內(nèi)的2000坐標系的建筑物地址數(shù)據(jù)。經(jīng)檢測,經(jīng)坐標轉(zhuǎn)換后的數(shù)據(jù)平均誤差在3米以內(nèi),滿足同比例尺地形圖的精度要求。如下:圖2為轉(zhuǎn)換前局部數(shù)據(jù)截圖,其平均誤差在500多米,圖3為轉(zhuǎn)換后局部數(shù)據(jù)截圖,平均誤差在3米以內(nèi)。
經(jīng)過浙江省統(tǒng)計局的第三次經(jīng)濟普查工作產(chǎn)生的數(shù)據(jù)轉(zhuǎn)換項目,我們可以更深的理解不同坐標系之間的轉(zhuǎn)換其實是兩種不同的橢球參數(shù)之間的轉(zhuǎn)換。其中七參數(shù)的布爾莎模型,是比較嚴密的轉(zhuǎn)換模型,不管是四參數(shù)、三參數(shù)、二參數(shù)都是其特定情況的簡化轉(zhuǎn)換公式。在轉(zhuǎn)換未知坐標系數(shù)據(jù)過程中,靈活套用布爾莎模型的簡化轉(zhuǎn)換公式,是一種比較經(jīng)濟實用的選擇。
參考文獻:
[1]陳俊勇.《測繪通報》2003年02期《世界大地坐標系1984的最新精化》
[2]程鵬飛,文漢江,成英燕,王華.《測繪學報》2009年03期《2000國家大地坐標系橢球參數(shù)與GRS80和WGS84的比較》
[3]徐登云,郝麗娟.《西部資源》2012年02期 《2000國家大地坐標系與GRS80及WGS84的比較》