测绘地理信息   2021, Vol. 46 Issue (4): 116-118
0
一种从CAD到ArcGIS数据转化方法研究[PDF全文]
夏振1, 陈起谟2, 刘金沧1    
1. 广东省国土资源测绘院,广东 广州,510500;
2. 惠州市国土资源勘察测绘院,广东 惠州,516001
摘要: 为较好的实现空间数据从CAD(computer aided design)格式转到ArcGIS格式,最大限度地保留感兴趣信息,以AutoLisp和ArcObjects为基础探索转换方法,提出了一种从CAD到ArcGIS数据转化方法。以层为单元,解析CAD实体内部数据结构,以文本文件为中间媒介,编写从dwg图层到shp图层的转化函数,制作插件嵌入ArcGIS,最后在ArcGIS中检查并分层整饰地形图。该转换方法能快捷方便的实现大批量空间数据转换。
关键词: CAD    ArcGIS    AutoLisp    数据转换方法    
A Conversion Method from CAD Data to ArcGIS
XIA Zhen1, CHEN Qimo2, LIU Jincang1    
1. Guangdong province Surveying and Mapping Institute of Land and Resource, Guangzhou 510500, China;
2. Huizhou Institute of Land and Resources Survey and Mapping, Huizhou 516001, China
Abstract: To convert spatial data from CAD to ArcGIS while retaining most of original data interest part, this paper puts forward a conversion method based on AutoLisp and ArcObjects developer toolkits. This method first analyzes the internal data structure of CAD entities in layers, then writes conversion functions from dwg layer to shp with text file as intermediate medium, and makes plugin embedded in ArcGIS Desktop, finally it checks data and configures layer in ArcGIS. The research can provide fast and convenient tool support for large-scale convension.
Key words: CAD    ArcGIS    AutoLisp    data conversion method    

在各种地理信息系统数据库建设和地图制图中,空间数据格式是多种多样的,南方CASS绘制的数字线划图是其中最为重要的一种。CAD(computer aided design)以图层组织空间数据,不同类型的要素(点、线、多边形等)可以共层,其实体采用三维坐标描述,实体间不具备拓扑描述信息[1]。CAD软件并非是天然的测绘软件,虽然有坐标信息,但是属性管理较弱,不具备空间分析和决策支持能力[2]。而ArcGIS不仅具有强大的空间数据属性管理功能还具备大量的空间分析功能。如何实现CAD到ArcGIS数据转化成为应用的主要技术问题。

目前主流的转化途径主要有3大类。一是直接采用ArcGIS工具箱转换,往往导致图层混乱和属性丢失,后续处理困难;二是借助其他软件实现。比如采用输出MIF格式数据, 借助MapInfo最终形成TAB格式的GIS数据[3],采FME软件通过Workbeanch转换模版建立字段映射关系实现转换[4-6];三是直接开发软件实现,比如直接解析CAD的复杂冗长的DXF文件,或者借助中间类库实现转化[7],过程相对复杂,编写难度大。这几种方式要么无法完美实现,要么编写复杂,或需借助第三方软件。为此,本文立足CAD和ArcGIS软件本身,以CAD内嵌的AutoLisp解析CAD实体,提取关键信息,然后用ArcObjects高效重建地理实体[8, 9]。既保留了感兴趣的信息,避免解析复杂冗长的DXF文件,且无需借助第三方软件。编译后可嵌入ArcGIS作为命令工具,简单易用,其实现思路可为直接实现二者数据转换提供参考。

1 转化思路

若能直接从CAD获取数字线划图的关键感兴趣要素信息,以某文本文件为媒介加以记录,然后再在ArcGIS中根据这些感兴趣关键信息予以要素重建,即可较好的完成数据转换任务。为此,在CAD中采用AutoLisp解析CAD实体,将感兴趣要素写入到文本文件中。然后采用基于ArcObjects编写的系列函数读取文本文件,生成图层、点、线、面、注记、地物类型、地物编码、地物名称等信息,可以细粒度控制数据转化过程,实现感兴趣信息的无损转换。其技术流程如图 1所示。

图 1 技术流程 Fig.1 Flow Chart of Technical Process

2 实现过程 2.1 AutoLisp导出数字线划图文件

按照分类转换的原则,以点、线、面、文字、块等为基本单元分别编写自定义函数。采用ssget函数选定选择集,entget函数获取地物实体详细信息,assoc函数获取地物实体的各个组码。依据CAD帮助文档参照组码对应表(见表 1),按顺序将地物所在图层、类型、闭合性、坐标、扩展属性等感兴趣信息写入到文本文件(结构见表 2)中存储。

表 1 组码对应关系表 Tab.1 Corresponding Relation Table of Group Code

表 2 文本文件结构 Tab.2 Text File Structure

对于数字线划图来说,最容易丢失的就是南方CASS地物编码,提取的关键代码如下:

(setq ent (ssget))

(setq ent1 (ssname ent 0))

(setq e1 (entget ent1 ’(“SOUTH”)))

(setq wb (member (assoc 10 e1) e1))

(setq len (length wb))

; ;;获取图形扩展属性

(setq tp (assoc-3 e1))

(write-line “扩展属性:” f)

(setq a1 (nth 1 tp))

(setq xx (cdr a1))

(write-line (cdr (car xx)) f)

2.2 ArcGIS读取数字线划图文件

自定义List < Entity>集合记录文本文件同类实体所有信息。每一个Entity中含有实体的起始和最终节点坐标索引、是否闭合特性、地物编码和其它感兴趣属性。根据Entity实体中的地物编码和南方CASS编码与实体名称对应关系,查询得到地物名称。调取ArcObjects函数重新生成要素图层并向图层添加要素,填写属性字段值。其流程图如图 2所示。

图 2 读取数字线划图文件流程 Fig.2 Flow of Reading Digital Line Graph

以形成面状数据为例,关键代码如下:

IFeatureClass pFeatureClass;

pFeatureClass = FWS.CreateFeatureClass(shapeName, pFields, null, null, esriFeatureType.esriFTSimple, “Shape”, “”);

pFeatureLayer.Name = shapeName;

pFeatureLayer.FeatureClass = pFeatureClass;

IGeometryCollection pointPolygon = new PolygonClass();

pointPolygon.AddGeometry(ring1 as IGeometry, ref missing, ref missing);

IPolygon polyGonGeo = pointPolygon as IPolygon;

IFeature pFeature = pFeatureClass.CreateFeature();

pFeature.Shape = polyGonGeo;

int filedIndex_DWMC = pFeature.Fields.FindField(“地物名称”);

pFeature.set_Value(filedIndex_DWMC, getEntityNameByCoding(cpoly.coding));

pFeature.Store();

在Visual Studio2010中编译后,以addin插件方式加载到ArcGIS桌面版软件中,其转换界面如图 3所示。

图 3 转换插件界面 Fig.3 Conversion Plug-in Interface

2.3 文件整理

在完成分层转换,检查完地物不缺少,图层属性正确的前提下,根据数据实际情况设置地理坐标系和投影坐标系,根据需要制作专题图。

2.4 转换实例

以珠海市某地形图为例,选取30 000个分布在居民地、道路、独立地物、水系等图层的地物,提取关键有用信息,形成文本文件,再在ArcGIS中要素重建,分层设色配置地图,即完成转换工作。其局部转换前如图 4所示,转换后如图 5所示。

图 4 转换前原始数据 Fig.4 Original Data Before Conversion

图 5 转换后数据 Fig.5 Converted Data

3 结束语

本文论述了当前CAD数字线划图转到ArcGIS的主要方法,提出了一种直接基于CAD和ArcGIS实现感兴趣空间属性信息完整高效转换的方法,以层为单位,转化效率高,思路清晰,具备自由控制感兴趣字段优点。目前该软件尚需分点、线、面、文字注记等不同类型分别转化,仍需进一步优化成熟。

参考文献
[1]
薄伟伟, 丁俊杰, 王爱萍. CAD数据向GIS数据的转换方法[J]. 地理空间信息, 2013, 11(6): 94-95.
[2]
孟妮娜, 周校东. GIS空间数据转换为DXF格式的方法研究[J]. 测绘科学, 2007(2): 105-107.
[3]
刘阳, 刘允, 刘宓, 等. CAD数据向GIS数据转换方法的研究[J]. 城市勘测, 2012(2): 81-85.
[4]
吴聪聪, 蓝贵文, 耿继军, 等. CAD数据向GIS数据转换的方法比较[J]. 测绘科学, 2017, 42(2): 183-186.
[5]
黄永芳. AutoCAD与ArcGIS数据转换方法研究[J]. 测绘标准化, 2018, 34(2): 27-30.
[6]
孙正林, 邹峥嵘, 曾毅. 基于FME的城镇地籍空间数据转换研究[J]. 测绘信息与工程, 2011, 36(2): 16-18.
[7]
于艳超, 许捍卫, 杜婵娟. 基于DWGDirect的CAD到GIS数据转换研究[J]. 地理空间信息, 2015, 13(1): 84-86.
[8]
董玉德, 赵韩. CAD二次开发理论与技术[M]. 合肥: 合肥工业大学出版社, 2012.
[9]
牟乃夏, 王海银, 李丹, 等. ArcGIS Engine地理信息系统开发教程[M]. 北京: 测绘出版社, 2015.