APP下载

CAD地形图高程信息快速提取的技术与实现

2015-04-10

地理空间信息 2015年1期
关键词:二次开发高程组件

杨 婷

(1.广东省国土资源测绘院,广东 广州 510500)

CAD地形图高程信息快速提取的技术与实现

杨 婷1

(1.广东省国土资源测绘院,广东 广州 510500)

针对CAD地形图数据中高程点和高程标注分开存储的不便及容易造成高程信息丢失等问题,提出一套快速提取高程信息的技术及其实现流程,该技术基于AutoCAD.NET API和ArcEngine二次开发组件,并在AutoCAD软件平台上开发了相应的数据提取和转换操作面板。实验证明,该工具能快速批量提取高程信息,并能转换成相应的GIS格式数据。

地形图;高程;信息提取;AutoCAD.NET API

目前,我国大部分城市的地形图数据使用标准的DWG文件格式存储,与GIS数据要求图形和属性信息一体化存储不同,CAD数据在属性信息存储方面相对较弱,一般只要求图形符合制图规范即可,容易导致其在格式转换或信息提取过程中出现信息丢失的情况。例如,在地形图数据中,一般只记录高程点的二维平面坐标值,而点所对应的高程值并没有记录在自身的第三维坐标中,取而代之的是使用高程标注(文字)或者符号块的块属性来记录。因此,在进行数据格式转换或高程值提取时,不仅需要获取高程点的信息,还要关联它对应的块属性或标注,增加了数据处理的难度,且容易造成信息丢失。

针对上述问题,本文提出了一种能快速提取高程点高程信息的技术,该技术基于AutoCAD.NET API,结合ArcEngine二次开发组件,在AutoCAD 2008软件平台上开发了数据提取和转换的操作面板,并最终转换成GIS格式数据,方便更高级的数据处理与分析。

1 AutoCAD.NET API简介及基本方法

1.1 AutoCAD.NET API简介

AutoCAD具有强大而完善的图形绘制与编辑功能。在该平台上,用户可以使用多种编程方式,如AutoLISP、ObjectARX等进行二次开发或功能定制,以增强其数据交换能力和平台适用性。从2006年开始,Autodesk公司为其开发增加了.NET API组件。该组件提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可以在.NET框架下,使用任何支持.NET的语言,如C#、VB.NET等对AutoCAD进行二次开发。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有入门简单、方便易用的特点,是较理想的AutoCAD二次开发工具。

1.2 基本方法与应用

AutoCAD.NET API组件可以读取DWG文件中包含的所有图形、样式、组织结构、图形显示等记录,并将其解析成对象类型。通过调用这些对象的属性和方法,可以便捷地获取用户所需信息。在.NET API中,常用的基本方法包括图形选择、符号块属性查询、空间查询、扩展记录读写。另外,还可以结合GIS二次开发组件,如ArcEngine组件等进行高级开发应用。

1)图形选择。图形选择是.NET API中较为常用的功能之一。当用户需要读取同一类实体,例如仅读取高程点图层中的点实体或者高程注记等内容时,只需调用Editor类中的GetSelection()方法,并设置其过滤条件SelectionFilter,即可获得相关记录。

2)符号块属性查询。在CASS软件中,一般使用块参照来绘制高程点,同时将高程值存储在块参照的块属性中,除了CASS软件能识别该属性外,只能通过编写程序读取。因此,为了便于用户读取高程信息,可以通过定制窗体,让用户选择要读取的块参照以及块属性名称,相关读取功能由API组件负责实现。

3)空间查询。空间查询能方便用户快速获取指定空间范围或者满足一定空间约束条件的图形。利用API中Editor类的SelectWindow()、SelectCrossingWindow()、SelectWindowPolygon()、SelectCrossingPolygon()等方法,通过构造多边形和矩形选择框来选择包含于其中或者与之相交的图形,极大方便了获得高程点邻近的高程标注(文字)。

4) 扩展记录读写。相比于GIS数据的属性存储功能,CAD数据由于受限于平台特点,往往只允许用户将属性值写入已有的一些属性字段中,如厚度等,或者将属性名称和属性值并列写入每个图形的XDATA中。前者由于字段个数少且属性名称难以匹配,使用非常不便;而后者在读写过程中,需要频繁地匹配属性的名称,才能得到其中的属性值,因而读写速度较慢。基于.NET API组件,可将属性以扩展记录(Xrecord)的方式添加进用户自定义的扩展字典中。其中,扩展记录的Name属性用于存储属性名称,其Data属性则存储属性值,详细的读写流程见图1。通过该方法,能大大提高属性值的读写速度。

5)结合ArcEngine组件进行高级二次开发应用。ArcEngine是ESRI公司开发的一个完整嵌入式GIS组件库。基于该组件库,开发者能将CAD数据完好无损地转成GIS数据,同时,还能把ArcGIS软件的空间分析模块、三维分析模块等集成到AutoCAD软件平台中,便于更高级的数据处理和分析。

图1 扩展记录的读写流程

2 地形图高程信息快速提取的技术与实现

从上文可知,地形图的高程信息使用2种方式存储与表达,一是将高程点用块参照表示,其高程值存储在块参照的某个属性字段中;二是使用标注显示高程值,并将其绘制在以高程点为中心的一定半径的圆形缓冲区内。因此,在提取高程信息时,需要设计2类算法流程。

2.1 提取块参照的高程值

基于块参照提取高程值的流程包括以下步骤:

步骤1:用户在操作面板中选择存储高程点信息的块参照名称及其块属性名称。

步骤2:在DWG文件中获取指定块参照名称的所有块参照。

步骤3:遍历每一个块参照,读取其二维平面坐标,并判断其第三维坐标是否为空。如为空,进入步骤4;否则,跳至步骤5。

步骤4:获得块参照中指定属性名称的块属性,读取其高程值,并跳至步骤6。

步骤5: 读取第三维坐标值作为高程值,进入步骤6。步骤6:将该高程点的坐标、高程值等以GIS格式输出,或者将高程值存储于块参照的扩展记录中,便于日后数据的处理与分析。

步骤7:判断是否遍历完所有块参照,如果已经遍历完,结束算法;否则,返回步骤3。

具体的流程如图2所示。

图2 提取块参照高程值流程

2.2 提取高程标注的高程值

基于高程标注提取高程值的流程包括以下步骤:

步骤1:用户在操作面板中选择存储高程点的CAD图层名称。

步骤2:在DWG文件中获取指定图层名称的所有高程点。

步骤3:遍历每一个高程点,读取其二维平面坐标,并判断其第三维坐标是否为空,如为空,进入步骤4;否则,跳至步骤6。

步骤4:以高程点为中心,构造指定半径的圆形(多边形)缓冲区,利用该缓冲区作空间查询,获得包含于其中的或者与之相交的高程标注集合。

步骤5:如果该集合的个数为1,则认为该标注与高程点一一对应,直接将标注内容作为高程值,进入步骤7;如果集合个数大于1,则视集合中的标注是否已被选择,只选择未被读取的标注,进入步骤7;一旦多于1个标注未被读取过,则标记该高程点异常,跳至步骤8。

步骤6: 读取第三维坐标值作为高程值,进入步骤7。

步骤7:将该高程点的坐标、高程值等以GIS格式输出,或者将高程值存储于块参照的扩展记录中,便于日后的数据处理与分析。

步骤8:判断是否遍历完所有块参照,如果已经遍历完,结束算法;否则,返回步骤3。

具体流程如图3所示。

图3 提取高程标注高程值流程图

3 应用实例

为了验证算法的有效性,将程序编译生成DLL动态链接库,在AutoCAD 2008平台中加载并弹出了自定义的菜单项与操作面板,用户可以根据数据实际情况选择相应的提取方法。本文以某地的1∶500地形图数据为例,其高程值存储在块参照中,但其第三维坐标值为空,可利用本文所提出的算法将所有高程点的高程值提取并生成为GIS格式数据,如图4所示。

4 结 语

基于AutoCAD的二次开发平台,定制各种用于解决实际应用问题的功能和操作界面,能大大提高业务人员的工作效率,具有较高的应用价值。本文针对CAD地形图数据中高程点高程值提取的难题,设计了一套快速提取高程信息的技术,利用AutoCAD.NET API提供的基本方法,结合ArcEngine组件的GIS数据处理模块,优化了高程点高程信息提取的流程,有利于更高级的数据处理和分析。

图4 高程点信息提取结果

[1] 王海英,韦廖军.地形图高程点高程自动提取的程序设计与实现[J].城市勘测,2011(5):135-138

[2] 袁源琳,张新长,黄健锋.AutoCAD地形图数据规整入库的研究与应用[J].测绘通报,2013(5):84-88

[3] 李冠亿.深入浅出AutoCAD.NET二次开发[M].北京:中国建筑工业出版社,2012

[4] 申胜利,李华.基于ArcEngine的ArcGIS与AutoCAD数据转换研究[J].测绘通报,2007(2):41-43

[5] 张叶,孙毅中,陈年松.CAD城市基础数据到GIS转换的有关问题探讨[J].测绘与空间地理信息,2007,30(1):94-97

[6] 张雪松,张友安,邓敏.AutoCAD环境中组织GIS数据的方法[J].测绘通报,2004(11):45-48

[7] 李勇平.DWG到SHP数据的一种实用转换方法[J].国土资源信息化,2010(3):29-32

[8] 王波,张亮,孙霞.CAD向GIS数据的转换入库[J].地理空间信息,2011,9(3):24-26

P208

B

1672-4623(2015)01-0162-03

10.3969/j.issn.1672-4623.2015.01.054

杨婷,硕士,研究方向为地图学与地理信息系统。

2014-10-15。

猜你喜欢

二次开发高程组件
无人机智能巡检在光伏电站组件诊断中的应用
8848.86m珠峰新高程
新型碎边剪刀盘组件
浅谈基于Revit平台的二次开发
U盾外壳组件注塑模具设计
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
GPS高程拟合算法比较与分析
风起新一代光伏组件膜层:SSG纳米自清洁膜层
SDCORS高程代替等级水准测量的研究