楊 鋒
(中鐵二院工程集團(tuán)有限責(zé)任公司,四川成都 610031)
An Easily Implemented Projection and Transformation Software for Railway Engineering Topographic Map
YANG Feng
一種易實(shí)現(xiàn)的鐵路工程地形圖投影變換軟件
楊鋒
(中鐵二院工程集團(tuán)有限責(zé)任公司,四川成都610031)
An Easily Implemented Projection and Transformation Software for Railway Engineering Topographic Map
YANG Feng
摘要針對(duì)鐵路工程領(lǐng)域中,基于同一地理橢球構(gòu)建的不同坐標(biāo)系或采用以某一地理橢球?yàn)榛鶞?zhǔn),保證橢球中心位置、定向和扁率不變,僅改變長(zhǎng)、短半軸的方式構(gòu)造的工程橢球形成的不同坐標(biāo)系之間投影變換的需求,直接以AutoCAD軟件為平臺(tái),設(shè)計(jì)、開(kāi)發(fā)地形圖投影變換軟件,并采用ArcEngine庫(kù)提供的坐標(biāo)正反算函數(shù)進(jìn)行運(yùn)算。這種實(shí)現(xiàn)方式無(wú)需對(duì)復(fù)雜的投影變換公式進(jìn)行編碼,可以更多地關(guān)注業(yè)務(wù)流,降低了開(kāi)發(fā)難度,易于實(shí)現(xiàn),而且不損失數(shù)據(jù)和信息。
關(guān)鍵詞AutoCADArcEngine地理橢球投影變換
1概述
工程領(lǐng)域一般采用AutoCAD軟件加載其固有格式(*.DWG或*.DXF)的數(shù)字地形圖進(jìn)行設(shè)計(jì),但該軟件未能提供針對(duì)地形圖數(shù)據(jù)投影變換的功能[1]。通常的處理方法是將數(shù)據(jù)轉(zhuǎn)換到GIS軟件中進(jìn)行投影變換,然后再轉(zhuǎn)回AutoCAD格式。此方法步驟繁瑣,易出錯(cuò),且來(lái)回轉(zhuǎn)換會(huì)造成數(shù)據(jù)、信息丟失。
針對(duì)鐵路工程領(lǐng)域中,基于同一地理橢球構(gòu)建的不同坐標(biāo)系或采用以某一地理橢球?yàn)榛鶞?zhǔn),保證橢球中心位置、定向和扁率不變,僅改變長(zhǎng)、短半軸的方式構(gòu)造的工程橢球,形成的不同坐標(biāo)系之間投影變換的需求,直接以AutoCAD軟件為平臺(tái),設(shè)計(jì)、開(kāi)發(fā)地形圖投影變換軟件,并采用ArcEngine庫(kù)提供的坐標(biāo)正反算函數(shù)進(jìn)行運(yùn)算。這種實(shí)現(xiàn)方式無(wú)需對(duì)復(fù)雜的投影變換公式進(jìn)行編碼,可以更多的關(guān)注業(yè)務(wù)流,降低了開(kāi)發(fā)難度,而且不損失數(shù)據(jù)和信息。
2鐵路工程獨(dú)立坐標(biāo)系建立方法
地形圖投影的投影面高程H為大地高,通常情況下H=0。鐵路建設(shè)工程中,為了滿足投影長(zhǎng)度變形小于限差的要求,需要改變投影面高程H=h進(jìn)行投影。為了便于計(jì)算,可以以參考橢球?yàn)榛鶞?zhǔn),采用橢球膨脹法構(gòu)建一個(gè)新的工程橢球,然后在新的工程橢球中,利用投影面高程H′=0進(jìn)行投影計(jì)算。橢球膨脹法是以一個(gè)參考橢球?yàn)榛鶞?zhǔn),采用保證橢球中心位置、定向、扁率不變,僅改變長(zhǎng)、短半軸長(zhǎng)度的方法構(gòu)建一個(gè)新的工程橢球。新建工程橢球長(zhǎng)半軸增量Δa與h之間存在相關(guān)關(guān)系,可以用函數(shù)Δa=f(h)表示。
梅熙[2]、鄧興升[3]等詳細(xì)論述了在一個(gè)已知的橢球中,若投影面高程H=h時(shí),可以采用“保證橢球中心位置、方向、扁率不變,橢球長(zhǎng)半軸直接加投影面大地高”的方法構(gòu)建新的工程橢球,即可以得到
Δa=f(h)=h
該方法滿足長(zhǎng)度投影變形限差要求,適合帶狀的鐵路工程,新建工程橢球與參考橢球之間的關(guān)系如圖1所示。
圖1 參考橢球面與工程橢球面
3AutoCAD和ArcEngine開(kāi)發(fā)方法
AutoCAD是工程領(lǐng)域被廣泛使用的CAD設(shè)計(jì)軟件,具有強(qiáng)大的制圖功能和開(kāi)放的體系結(jié)構(gòu),易使用,其本身是一個(gè)插件框架系統(tǒng),允許用戶和開(kāi)發(fā)者對(duì)其進(jìn)行編碼擴(kuò)充和修改[4,5]。AutoCAD不僅提供AutoLISP腳本語(yǔ)言[6],而且還支持高級(jí)語(yǔ)言開(kāi)發(fā),提供了大量的開(kāi)發(fā)接口,較常用的如ObjectArx.NET接口,支持.NET語(yǔ)言開(kāi)發(fā)[7,8]。通過(guò)ObjectArx.NET,用戶可以方便高效地訪問(wèn)和修改DWG,DXF數(shù)據(jù)中的點(diǎn)、線、塊、圓弧、文本、填充等實(shí)體的幾何和屬性信息[9]。因此,本文采用ObjectArx.NET進(jìn)行AutoCAD數(shù)據(jù)中實(shí)體幾何信息的獲取和修改。
ArcEngine是ESRI公司封裝的一套GIS運(yùn)行庫(kù),在測(cè)繪領(lǐng)域具有廣泛的應(yīng)用[10]。它提供了大量的空間分析與計(jì)算的接口和方法,可以采用C++、.NET等高級(jí)語(yǔ)言開(kāi)發(fā)[11]。本文采用其提供的坐標(biāo)投影變換功能進(jìn)行坐標(biāo)投影正反算。C#代碼如下:
private IPoint GetProject(double x, double y)
{
IPoint pt=new PointClass();
pt.PutCoords(x, y);
IGeometry geo=(IGeometry)pt;
geo.SpatialReference=origSP;
geo.Project(destSP);
return pt;
}
geo.SpatialReference=origSP是為幾何對(duì)象定義一個(gè)坐標(biāo)系統(tǒng);geo.Project(destSP)將幾何對(duì)象從origSP坐標(biāo)系統(tǒng)投影變換至destSP坐標(biāo)系統(tǒng),origSP和destSP必須保證橢球參數(shù)一致。
4軟件設(shè)計(jì)與實(shí)現(xiàn)
該地形圖投影變換軟件將加載地形圖數(shù)據(jù)文件,然后依次遍歷每一個(gè)實(shí)體,獲得其位置或者節(jié)點(diǎn)坐標(biāo),然后進(jìn)行投影變換操作,利用變換后的坐標(biāo)值修改實(shí)體位置或者節(jié)點(diǎn)坐標(biāo),整個(gè)過(guò)程都在AutoCAD軟件中完成,流程如圖2所示。
圖2 軟件流程
針對(duì)鐵路工程的地形圖投影變換,假設(shè):參考橢球長(zhǎng)半軸為a,短半軸為b。則
扁率
第一偏心率
該橢球中,某投影方式下坐標(biāo)為(X,Y,Z)的點(diǎn)P,通過(guò)坐標(biāo)反算可以得到其經(jīng)度為L(zhǎng),緯度為B。且該點(diǎn)處子午圈曲率半徑M為
(1)
其中,W2=1-e2sin2B。
該點(diǎn)卯酉圈曲率半徑N為
(2)
在該橢球中,需要以另外一種投影方式,且投影面高程H=h,將點(diǎn)P進(jìn)行投影變換。
首先新建工程橢球:相對(duì)于投影變換前的橢球,新建的工程橢球長(zhǎng)半軸a工=a+Δa=a+h,由大地微分公式可知:當(dāng)橢球中心位置、定向、扁率不變,僅改變長(zhǎng)半軸時(shí),點(diǎn)P在新的工程橢球中,相對(duì)于原始橢球,點(diǎn)位的大地經(jīng)度L不變,緯度B將發(fā)生變化[12,13]。變化量ΔB為
(3)
那么,在新的工程橢球中,點(diǎn)P對(duì)應(yīng)的經(jīng)度為L(zhǎng),緯度為B+ΔB。
最后,在新的工程橢球中,以投影面高程H′=0,按照選擇的目標(biāo)投影方式進(jìn)行坐標(biāo)正算,得到投影變換后的坐標(biāo)。“投影變換”的詳細(xì)流程如圖3所示。
圖3 投影變換流程
地形圖投影變換軟件采用C#語(yǔ)言開(kāi)發(fā),通過(guò)ObjectArx.NET在AutoCAD軟件中直接訪問(wèn)地形圖數(shù)據(jù)文件中的實(shí)體,并利用ArcEngine進(jìn)行投影變換計(jì)算,然后修改實(shí)體節(jié)點(diǎn)坐標(biāo)。軟件界面如圖4所示。
圖4 軟件界面
軟件不僅能夠直接從PRJ文件中獲得坐標(biāo)信息,而且支持自定義橢球及投影坐標(biāo)系統(tǒng),如圖5所示。
圖5 坐標(biāo)系統(tǒng)設(shè)置
5精度驗(yàn)證
為了驗(yàn)證轉(zhuǎn)換精度,選取某海外鐵路CPII控制點(diǎn)610個(gè),采用“WGS84橢球、投影面高程H=100 m,蘭勃特等角切圓錐投影”坐標(biāo)系統(tǒng),依工程需要將其轉(zhuǎn)換為“WGS84橢球、投影面高程H=0 m,標(biāo)準(zhǔn)UTM投影”坐標(biāo)系統(tǒng)。分別采用本文設(shè)計(jì)并實(shí)現(xiàn)的軟件和TGO[14]軟件進(jìn)行數(shù)據(jù)處理,統(tǒng)計(jì)兩份結(jié)果控制點(diǎn)坐標(biāo)的距離差,如表1所示。
表1 距離差統(tǒng)計(jì)結(jié)果 mm
由距離統(tǒng)計(jì)結(jié)果可知:坐標(biāo)轉(zhuǎn)換精度較高,能夠滿足鐵路設(shè)計(jì)各階段地形圖投影變換的要求。
參考文獻(xiàn)
[1]湯小林.AutoCAD下圖形高斯投影換帶方法的實(shí)現(xiàn)[J].礦山測(cè)量,2008(2):24-26
[2]梅熙,王國(guó)祥.高速鐵路坐標(biāo)轉(zhuǎn)換方法探討[J].高速鐵路技術(shù),2012(4):6-10
[3]鄧興升,湯仲安,花向紅,等.橢球變換后的高斯投影正反算算法[J].大地測(cè)量與地球動(dòng)力學(xué),2010(2):49-52
[4]林春峰,黃華平,閔世平.基于AutoCAD平臺(tái)的線路橫斷面線提取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵道勘察,2013(4):6-8
[5]楊鋒,林春峰,程昂.基于ObjectArx地形圖數(shù)據(jù)標(biāo)準(zhǔn)統(tǒng)一軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵道勘察,2014(5):5-7
[6]劉喜平.基于AutoLISP的AutoCAD二次開(kāi)發(fā)技術(shù)[J]. 機(jī)械制造與自動(dòng)化,2011(4):128-129
[7]杜剛,劉學(xué)東,張磊.基于ObjectArx的AutoCAD二次開(kāi)發(fā)及應(yīng)用實(shí)例[J].機(jī)械設(shè)計(jì)與制造,2004(3):30-32
[8]于蕭榕,郭昌言,陳剛.結(jié)合Objectarx和C#進(jìn)行AutoCAD二次開(kāi)發(fā)框架的研究[J].科學(xué)技術(shù)與工程,2010(20):5085-5090
[9]AutoCAD R13/R14/R2000 DWG file Spercification Version 2.0. Published by OpenDWG Alliance[EB/OL]. www.openDwg.org 2002年2月
[10]任學(xué)申,張?jiān)孪?基于ArcEngine的CAD數(shù)據(jù)與ArcGIS數(shù)據(jù)互換[J].鐵道勘察,2014(5):8-11
[11]謝小蕙,向南平.基于ArcGIS Engine的開(kāi)發(fā)原理和方法的探討[J].城市勘測(cè),2006(2):46-48
[12]邊少鋒,柴洪洲,金際航.大地坐標(biāo)系與大地基準(zhǔn)[M].北京:國(guó)防工業(yè)出版社,2005
[13]邱云峰,倪津.不同投影歸算面間的坐標(biāo)換算[J].測(cè)繪通報(bào),2001(9):12-13
[14]張述清.全球定位系統(tǒng)的數(shù)據(jù)處理系統(tǒng)——TGO功能擴(kuò)展應(yīng)用[J].測(cè)繪通報(bào),2006(10):36-38
中圖分類號(hào):P209; P226+.3
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-7479(2015)01-0001-03
作者簡(jiǎn)介:楊鋒(1965—),男,1987年畢業(yè)于西南交通大學(xué)鐵道航空勘察專業(yè),工學(xué)學(xué)士,高級(jí)工程師。
收稿日期:2014-12-12