杨 锋
(中铁二院工程集团有限责任公司,四川成都 610031)
An Easily Implemented Projection and Transformation Software for Railway Engineering Topographic Map
YANG Feng
一种易实现的铁路工程地形图投影变换软件
杨锋
(中铁二院工程集团有限责任公司,四川成都610031)
An Easily Implemented Projection and Transformation Software for Railway Engineering Topographic Map
YANG Feng
摘要针对铁路工程领域中,基于同一地理椭球构建的不同坐标系或采用以某一地理椭球为基准,保证椭球中心位置、定向和扁率不变,仅改变长、短半轴的方式构造的工程椭球形成的不同坐标系之间投影变换的需求,直接以AutoCAD软件为平台,设计、开发地形图投影变换软件,并采用ArcEngine库提供的坐标正反算函数进行运算。这种实现方式无需对复杂的投影变换公式进行编码,可以更多地关注业务流,降低了开发难度,易于实现,而且不损失数据和信息。
关键词AutoCADArcEngine地理椭球投影变换
1概述
工程领域一般采用AutoCAD软件加载其固有格式(*.DWG或*.DXF)的数字地形图进行设计,但该软件未能提供针对地形图数据投影变换的功能[1]。通常的处理方法是将数据转换到GIS软件中进行投影变换,然后再转回AutoCAD格式。此方法步骤繁琐,易出错,且来回转换会造成数据、信息丢失。
针对铁路工程领域中,基于同一地理椭球构建的不同坐标系或采用以某一地理椭球为基准,保证椭球中心位置、定向和扁率不变,仅改变长、短半轴的方式构造的工程椭球,形成的不同坐标系之间投影变换的需求,直接以AutoCAD软件为平台,设计、开发地形图投影变换软件,并采用ArcEngine库提供的坐标正反算函数进行运算。这种实现方式无需对复杂的投影变换公式进行编码,可以更多的关注业务流,降低了开发难度,而且不损失数据和信息。
2铁路工程独立坐标系建立方法
地形图投影的投影面高程H为大地高,通常情况下H=0。铁路建设工程中,为了满足投影长度变形小于限差的要求,需要改变投影面高程H=h进行投影。为了便于计算,可以以参考椭球为基准,采用椭球膨胀法构建一个新的工程椭球,然后在新的工程椭球中,利用投影面高程H′=0进行投影计算。椭球膨胀法是以一个参考椭球为基准,采用保证椭球中心位置、定向、扁率不变,仅改变长、短半轴长度的方法构建一个新的工程椭球。新建工程椭球长半轴增量Δa与h之间存在相关关系,可以用函数Δa=f(h)表示。
梅熙[2]、邓兴升[3]等详细论述了在一个已知的椭球中,若投影面高程H=h时,可以采用“保证椭球中心位置、方向、扁率不变,椭球长半轴直接加投影面大地高”的方法构建新的工程椭球,即可以得到
Δa=f(h)=h
该方法满足长度投影变形限差要求,适合带状的铁路工程,新建工程椭球与参考椭球之间的关系如图1所示。
图1 参考椭球面与工程椭球面
3AutoCAD和ArcEngine开发方法
AutoCAD是工程领域被广泛使用的CAD设计软件,具有强大的制图功能和开放的体系结构,易使用,其本身是一个插件框架系统,允许用户和开发者对其进行编码扩充和修改[4,5]。AutoCAD不仅提供AutoLISP脚本语言[6],而且还支持高级语言开发,提供了大量的开发接口,较常用的如ObjectArx.NET接口,支持.NET语言开发[7,8]。通过ObjectArx.NET,用户可以方便高效地访问和修改DWG,DXF数据中的点、线、块、圆弧、文本、填充等实体的几何和属性信息[9]。因此,本文采用ObjectArx.NET进行AutoCAD数据中实体几何信息的获取和修改。
ArcEngine是ESRI公司封装的一套GIS运行库,在测绘领域具有广泛的应用[10]。它提供了大量的空间分析与计算的接口和方法,可以采用C++、.NET等高级语言开发[11]。本文采用其提供的坐标投影变换功能进行坐标投影正反算。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是为几何对象定义一个坐标系统;geo.Project(destSP)将几何对象从origSP坐标系统投影变换至destSP坐标系统,origSP和destSP必须保证椭球参数一致。
4软件设计与实现
该地形图投影变换软件将加载地形图数据文件,然后依次遍历每一个实体,获得其位置或者节点坐标,然后进行投影变换操作,利用变换后的坐标值修改实体位置或者节点坐标,整个过程都在AutoCAD软件中完成,流程如图2所示。
图2 软件流程
针对铁路工程的地形图投影变换,假设:参考椭球长半轴为a,短半轴为b。则
扁率
第一偏心率
该椭球中,某投影方式下坐标为(X,Y,Z)的点P,通过坐标反算可以得到其经度为L,纬度为B。且该点处子午圈曲率半径M为
(1)
其中,W2=1-e2sin2B。
该点卯酉圈曲率半径N为
(2)
在该椭球中,需要以另外一种投影方式,且投影面高程H=h,将点P进行投影变换。
首先新建工程椭球:相对于投影变换前的椭球,新建的工程椭球长半轴a工=a+Δa=a+h,由大地微分公式可知:当椭球中心位置、定向、扁率不变,仅改变长半轴时,点P在新的工程椭球中,相对于原始椭球,点位的大地经度L不变,纬度B将发生变化[12,13]。变化量ΔB为
(3)
那么,在新的工程椭球中,点P对应的经度为L,纬度为B+ΔB。
最后,在新的工程椭球中,以投影面高程H′=0,按照选择的目标投影方式进行坐标正算,得到投影变换后的坐标。“投影变换”的详细流程如图3所示。
图3 投影变换流程
地形图投影变换软件采用C#语言开发,通过ObjectArx.NET在AutoCAD软件中直接访问地形图数据文件中的实体,并利用ArcEngine进行投影变换计算,然后修改实体节点坐标。软件界面如图4所示。
图4 软件界面
软件不仅能够直接从PRJ文件中获得坐标信息,而且支持自定义椭球及投影坐标系统,如图5所示。
图5 坐标系统设置
5精度验证
为了验证转换精度,选取某海外铁路CPII控制点610个,采用“WGS84椭球、投影面高程H=100 m,兰勃特等角切圆锥投影”坐标系统,依工程需要将其转换为“WGS84椭球、投影面高程H=0 m,标准UTM投影”坐标系统。分别采用本文设计并实现的软件和TGO[14]软件进行数据处理,统计两份结果控制点坐标的距离差,如表1所示。
表1 距离差统计结果 mm
由距离统计结果可知:坐标转换精度较高,能够满足铁路设计各阶段地形图投影变换的要求。
参考文献
[1]汤小林.AutoCAD下图形高斯投影换带方法的实现[J].矿山测量,2008(2):24-26
[2]梅熙,王国祥.高速铁路坐标转换方法探讨[J].高速铁路技术,2012(4):6-10
[3]邓兴升,汤仲安,花向红,等.椭球变换后的高斯投影正反算算法[J].大地测量与地球动力学,2010(2):49-52
[4]林春峰,黄华平,闵世平.基于AutoCAD平台的线路横断面线提取系统的设计与实现[J].铁道勘察,2013(4):6-8
[5]杨锋,林春峰,程昂.基于ObjectArx地形图数据标准统一软件的设计与实现[J].铁道勘察,2014(5):5-7
[6]刘喜平.基于AutoLISP的AutoCAD二次开发技术[J]. 机械制造与自动化,2011(4):128-129
[7]杜刚,刘学东,张磊.基于ObjectArx的AutoCAD二次开发及应用实例[J].机械设计与制造,2004(3):30-32
[8]于萧榕,郭昌言,陈刚.结合Objectarx和C#进行AutoCAD二次开发框架的研究[J].科学技术与工程,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]任学申,张月香.基于ArcEngine的CAD数据与ArcGIS数据互换[J].铁道勘察,2014(5):8-11
[11]谢小蕙,向南平.基于ArcGIS Engine的开发原理和方法的探讨[J].城市勘测,2006(2):46-48
[12]边少锋,柴洪洲,金际航.大地坐标系与大地基准[M].北京:国防工业出版社,2005
[13]邱云峰,倪津.不同投影归算面间的坐标换算[J].测绘通报,2001(9):12-13
[14]张述清.全球定位系统的数据处理系统——TGO功能扩展应用[J].测绘通报,2006(10):36-38
中图分类号:P209; P226+.3
文献标识码:B
文章编号:1672-7479(2015)01-0001-03
作者简介:杨锋(1965—),男,1987年毕业于西南交通大学铁道航空勘察专业,工学学士,高级工程师。
收稿日期:2014-12-12