基于ARX 开发环境下的AUTO CAD数据转换MAPGIS数据程序开发

时间:2022-07-12 01:45:32

基于ARX 开发环境下的AUTO CAD数据转换MAPGIS数据程序开发

摘要

本文阐述了利用AutoCAD下二次开发平台ObjectARX环境进行AutoCAD数据向MAPGIS数据进行直接数据转换的程序开发方法;设计在AutoCAD 图形系统和MapGIS 地理信息系统平台和二者之间跨平台进行统一编程。将CAD 图形和GIS 空间数据有效对应起来,使AutoCAD最大限度无损失的进行数据转换,是实现空间数据仓库建立和数据更新的关键技术。

关键词:MAPGIS 、ARX、数据格式转换

Abstract

This paper describes the AutoCAD data using the ObjectARX environment development platform AutoCAD two times for program development method of direct data conversion to MAPGIS data; design between AutoCAD system and MapGIS geographic information system platform and the two platform for unified programming. The CAD graphics and GIS spatial data corresponding to the maximum, AutoCAD without loss of data conversion, is a key technology to realize spatial data warehouse and data updating.

Keywords: MAPGIS, ARX, data format conversion

中图分类号:P25文献标识码:A文章编号:2095-2104(2013)

概述

地理信息系统(GeographicInformation System,简称GIS)的广泛应用为各种行业用户带来了更多的选择[1];在GIS数据中一部分是某特定GIS 软件的标准格式,另一部分为非标准格式如AutoCAD的DWG格式等。在地籍调查中大量使用的为DWG格式的测量成果,其中要素的属性采用CAD软件中XDATA属性进行存放,也有部分采用自定义类进行存放属性。本文基于AutoCAD平台利用Object ARX开发环境及MAPGIS二次开发环境使DWG数据直接转换为MAPGIS格式数据;在AutoCAD图形系统和MapGIS 地理信息系统平台二者之间跨平台进行混合编程。将CAD图形和GIS空间数据对应起来,实现CAD与GIS异构空间数据的无损失交换。

AutoCAD数据与MAPGIS数据转换

MapGIS是武汉中地数码科技有限公司的专业GIS软件。以MapGlS为平台,公司已推出系列应用软件,广泛应用于国土、管线、电信、石油、电力、环保、军事以及海洋等众多领域。MapGIS提供了完整的二次开发函数库,用户完全可以在MapGIS平台上开发面向各自领域的应用系统。目前MapGIS二次开发库主要以API函数、MFC类库、Com组件及AetiveX控件4种方式提供。开发库被封装在若干动态链接库(DLL)中。[2]

在MapGIS系统中数字化地形图一般由3部分组成,即一个图形由线文件(*.WL)、点文件(*.WT)和区文件(*.WP)组成:而AutoCAD中,一般由1个文件构成,即线、点和面(填充面)等都由一个DWG表示。

AutoCAD软件中要素较为复杂,以线要素为例在AutoCAD中就线要素来分析可分为直线、多段线、曲线、园等各种不同的矢量要素。

而AutoCAD数据转换为MAPGIS数据采用传统方法操作复杂,均需要转换为中间交换格式DXF进行数据的转换;而且还需要在MapGIS软件下制作对应关系表。

为更高效且无损的对AutoCAD数据转换为MAPGIS数据;因此利用AutoCAD及MAPGIS的二次开发平台进行整合,即在AutoCAD二次开发平台中嵌入MAPGIS二次开发环境;这样可以有效利用不同开发平台对数据支持完整性,对数据不形成中间转换文件及对应表等,而直接获取AutoCAD平台下各种要素,通过对应关系直接写为MAPGIS所需要的格式。同时还可直接获取到AutoCAD平台下的XDATA扩展数据属性作为GIS数据的必要属性。

利用Object ARX进行数据转换开发

利用Object ARX可快速高效的读取AutoCAD图形数据信息,如数据类型、坐标位置、扩展属性等。对于不同数据类型转换进行分别开发。以下为文字基本属性输出代码:

else if ( pEntity->isKindOf( AcDbText::desc() ) )

{ AcDbText* ptext = AcDbText::cast(pEntity);

AcGePoint3d pt = ptext->position();

pPntInfo->put_type(gisPNT_NOTE);

pPntInfo->put_iclr(0);

pPntInfo->put_ovprnt(0);

pPntInfo->put_layer(8);

可直接读取AutoCAD中文字数据的各项类型直接安装相关要去转入到GIS数据中。

输出效果见下图:

结论

实验证明采用Object ARX在AutoCAD下开发CAD数据转换MAPGIS数据是可行的,同时具有速度快,无需转换为中间交换格式,可附加自定义及系统属性,转换数据无损失,转换效率高等特点;但是也存在对前期系统开发难度大,需要定制特定转换模型通用性小等缺点。而作为在AutoCAD平台下可高效快速的进行GIS数据转换本方法可以作为大型GIS项目生产过程中一种可取的有效方案。

参考文献

[1] 李冀,谢帮华,尚裕民GIS与CAD异构空间数据的无损失变换,软件导刊2006 1月号,15-16

[2] 罗建新,CAD和MapGIS数据转换方法探讨,测绘空间与地理信息,2009 12月,124-126

上一篇:浅谈规范施工图设计审查的信息管理 下一篇:滨海地区软基条件下路基处理的研究