基于DWGDirect的CAD到GIS数据转换研究
2015-04-10于艳超许捍卫杜婵娟
于艳超,许捍卫,杜婵娟
(1.河海大学 地球科学与工程学院,江苏 南京 210098;
2.河南省地质矿产勘查开发局 第四地质矿产调查院,河南 商丘 476000)
基于DWGDirect的CAD到GIS数据转换研究
于艳超1,许捍卫1,杜婵娟2
(1.河海大学 地球科学与工程学院,江苏 南京 210098;
2.河南省地质矿产勘查开发局 第四地质矿产调查院,河南 商丘 476000)
针对CAD数据到GIS数据的转换中大量存在的信息缺失、效率低下、更新困难等诸多问题,提出基于DWGDirect类库,结合ArcEngine实现CAD数据到GIS数据的转换,很大程度上解决了上述各种问题,确保了数据转换的科学性和高效性。
DWGDirect;OpenDWG;CAD;GIS;AE;数据转换
数据的采集和获取是GIS建设的基础工作。为了计算机辅助绘图的方便,我国测绘部门常使用诸如CAD 之类的绘图软件制作DLG[1,2],使得数据的维护、更新变得极其不便。张叶等论述了城市基础CAD到GIS数据转换的一些问题,并介绍了基于Geoway进行数据转换的方法,但存在编码不规范、构面工作量大等问题[3];任东风等通过AO+VB设计了数据转换程序,实现AutoCAD 环境下的大比例尺地形图数据向GIS 数据格式的转换[4];李金朋等通过插件式GIS实现CAD数据到GIS数据的转换[5]。基于上述研究,本文采用DWGDirect 类库,成功地解决了2种数据模型之间的无损转换。
1 CAD与GIS数据模型的区别
传统的CAD模型设计的目的是方便制图,它往往只注重图面效果,而忽略要素属性信息,且只以文件形式存储。而GIS数据模型设计的目的主要是为了数据分析和挖掘等,能同时兼顾图形和属性信息的表达,它不仅支持文件存储,而且可以依赖关系数据库模型而存储。CAD处理的多为规则图形,而GIS多为非规则图形。CAD图形功能强而属性处理能力弱,而GIS图形与属性操作比较频繁,且专业化特征比较强,CAD则不具备地理意义上的查询和分析能力[6]。
1.1 CAD数据模型
以DWG为后缀的图形文件是由CAD生成的一种二进制文件,包括Header、Entities、Tables、Blocks和Contingency Header,分别是头部、实体部、表部、块实体部以及应急头部。Entities中存储的是该DWG中的全部Entity,Entity头部长度是一定的,而且对每一个Entity都是相同的;而Entity尾部,CAD公司为了节省资源,采用了极为紧凑的格式,它描述了Entity的主要集合参数。
CAD图形是一些对象的集合,这些对象存储在数据库(AcDbDatabase)中,实体、符号表和数据词典是数据库中最基本的对象。AcDbDatabase中的所有图形元素均被称为实体(Entity),每一种实体都被系统赋予唯一的类型名称,通过访问CAD实体,我们可以把外部信息附加到文件中,这是简化复杂制图工作的一种最有效的途径。AcDbDatabase中所有实体的关系如图1所示。
图1 AcDbDatabase中实体的关系
1.2 Geodatabase模型
Geodatabase是一种对象-关系数据模型,通过面向对象的数据建模方法能够更自然地描述要素,自行定义对象类型,定义拓扑、空间和一般关系,以及掌握这些对象如何与其他对象发生交互作用。优点:空间数据统一存储、空间数据录入和编辑更加精确、用户操作更直观、要素拥有更丰富的背景信息、可以制作更优质的地图、动态显示地图上的要素、定义了更好的要素外形、要素集是连续的、多用户同时编辑地理数据等。
Geodatabase数据模型包含3种空间数据表达方式:用矢量数据表达离散的空间要素;用栅格数据表达影像、格网化专题数据、曲面;用不规则三角网(TIN)表达曲面。Geodatabase按照一定的模型和规则组合空间要素数据集(Feature Dataset),它按层次型的数据对象(Object)来组织空间数据,这些数据对象包括:对象类、要素类、要素数据集和关系类等。Geodatabase层次结构如图2所示。
图2 Geodatabase层次结构
1.3 CAD与GIS数据图形对照
CAD与GIS数据之间的区别主要体现在对图元表达的不同[7],CAD图元主要分为块、文本、线、圆弧等;而GIS则分为点、线、面和文本等。以点状地物为例,CAD会用各种符号和注记来表示地理实物,注重地物的视觉表达,并且符号的制作也具有灵活性,但是不注重对拓扑关系的反映;而GIS数据在表示点状地物时必须进行符号化(表1)。
表1 CAD图形与GIS图形对照表
2 DWGDirect技术
2.1 DWGDirect简介
DWGDirect类库是一套完全面向对象的类库。该类库支持CAD的众多版本,能够直接读取DWG文件以获取数据信息,并且具有较高的效率和安全性。DWGDirect类库包括:
1)OdRx类:在运行时对类进行注册和识别;
2)OdDb类:表示AcDbDatabase中的所有Entities数据;
3)OdGi类:用来实现对数据对象进行渲染;
4)OdGe类:一种通用几何类(像点、线、面);
5)OdBr类:该类主要用于B-Rep;
6)OdGs类:是一种图形系统类,用来为用户提供矢量化。
在DWGDirect类库中,一个DWG文件在内存中实际上就是一个OdDbDatabase类的实例。每个实例代表一个数据库,它是一些实体对象的集合,包括9个符号表和1个对象字典: UCS、Text Style、Layer、Line Type、View Port、RegApp、Block等和Object字典。其中每个表和字典中均包含很多记录,像Block Table中包含多条Block Table Record 记录,点、线、圆等Entities数据都包含在Block Table Record 中。根据此OdDbDatabase数据库结构,利用对应的类库函数,就可方便地访问到CAD文件中的Entities数据等信息[8]。
2.2 Windows平台配置
在Windows OS下DWGDirect类库提供单线程的静态链接库(DD-vc6ML)、多线程的静态链接库(DD-vc6MT)、静态多线程的DLL库(DD-vc6MD)和动态链接库(DD-vc6)等。在Windows OS下所需要的头文件都包含在DD_NonLibs.zip中,使用时选择正确的类库头文件和静态动态链接库,并在项目中添加引用即可。
3 基于DWGDirect的CAD到GIS数据转换
对于经过数据预处理的本地CAD数据,通过数据转换、数据分层、数据后处理等操作,完成CAD数据的转换入库(图3)。
图3 CAD数据转换入库流程图
3.1 数据预处理
1)数据预处理。在进行转换前,首先应对其进行简单预处理,以减少转换过程中不必要的错误,预处理在AutoCAD中进行即可:确定所有图层是否处于打开状态,是否未冻结,是否未锁定;清除废块,删除重复要素,检查是否存在未封闭的多边形等。
2)配置表设计。为了满足不同用户的需求和项目应用的变化,设计使用Microsoft Access数据库作为系统配置表。对转换过程中涉及到的基本属性、扩展属性、数据库图层、字段、分层对照关系以及转化进程和错误信息的日志等进行配置。
3.2 数据转换
数据转换主要是把CAD中的实体数据,按照表 1对应的几何类型分为点、线、面、注记4层,并保存其属性信息,最后存储到临时Geodatabase中,设为GB1。
1)创建临时数据库:CAD通常采用几何坐标系,而GIS则采用地理坐标系,因此在创建数据库时,可以读入GIS自带的或自定义的坐标系文件。创建点线面注记层时,可以在配置表中设定其需创建的字段。
2)属性信息获取:属性信息包括基本属性和扩展属性。分别封装2个类:MyData和MyXData。在事务处理中,通过类的实例,将属性信息赋给要素。基本属性,例如Name、Line Type、Code、Layer Name等按照需要选择保留;对于扩展属性,利用各实体句柄与图形建立关联,也读取出来,实现图形数据与属性信息的对应关系,为第三步的数据分层作好挂接。
3)数据转换:按照图1所示CAD数据模型,基于DWGDirect类库,创建实例和事务处理过程,遍历Block Table Record,获取其实体数据,按照表1所示对照关系,进行CAD数据到GIS数据的转换,最终将数据保存到点、线、面、注记4个层中。
3.3 数据分层
CAD数据依据层名Layer Name来区分各个层,数据转换结束后Layer Name作为基本属性存储在GB1中,可以据此来作为分层的依据。
1)配置分层表:建立CAD图层名到GIS要素(点线面注记)之间的分层对照表,该表至少包括CAD图层名,GIS点、线、面、注记层名5个字段。
2)创建分层数据库:通过对客户需求进行详细分析,设计标准配置表:入库图层(图层名和几何类型)、图层字段对应关系(图层名和字段名)、字段列表。通过这些对照关系,建立分层数据库,进行分层。
3)数据分层:读取GB1,对其要素进行遍历,按照分层表进行分层。另外,由于实际情况往往比较复杂,可能需要根据一些属性编码和块名来进行分层。例如,如果CAD数据中提供诸如CASS码之类的信息时,我们可以在配置表中建立CASS和国标码之间的对照关系,并依此进行分层。
3.4 数据后处理
在数据入库之前,需要对数据进行检查,杜绝可能对建库造成影响的因素(例如接边,拓扑错误等)。根据检查结果作相应处理:对于道路、房屋线等重要要素进行接边处理,确保要素的完备性;对房屋线等进行构面,找到共用边线的地方,对这些要素进行拓扑分析并参考构面点进行拓扑构面;对面状要素,进行面状修复。
4 项目应用
安徽省某市测绘院通过上述技术,将DWG数据文件的地形图文件转换入库,从而建立GIS地形数据库,为城市规划、管理和建设提供GIS数据支持与服务。该方法不仅能够继续沿用原有的生产习惯和作业方式,而且有效地避免了培训学习和重复作业造成的巨额成本。同时,可以解决其他部门和业务环节对空间数据的需求,可以最大限度地利用GIS在空间数据管理和共享中的能力。
[1] 王波,张亮,孙霞.CAD向GIS数据的转换入库[J].地理空间信息,2011,9(3):24-26
[2] 李淑清.地形图与Geodatabase转换的探讨[J].地理空间信息,2010,8(2):26-28
[3] 张叶,孙毅中,陈年松.CAD城市基础数据到GIS转换的有关问题探讨[J].测绘与空间地理信息,2007,30(1):94-97
[4] 任东风,徐立军,才艺.CAD到ArcGIS数据转换问题[J].辽宁工程技术大学学报:自然科学版,2010(增刊):25-27
[5] 李金朋,刘化冰,李新双.基于插件式GIS实现CAD数据到GIS数据的转换[J].测绘,2011,34(4):168-170
[6] 周小成,焦道振.基于Geodatabase的CAD数据到GIS的解决方案[J].四川测绘,2005,28(2):74-77
[7] 孔毅,张志强,赵崇亮.基于ArcGIS的CAD数据入库研究[J].测绘通报,2010(5):54-56
[8] 晏韵,许超.基于DWGDirect访问AutoCADDWG图形文件[J].工程图学学报,2010(6):178-181
P208
B
1672-4623(2015)01-0084-03
10.3969/j.issn.1672-4623.2015.01.028
于艳超,硕士,主要从事GIS开发与应用工作。
2014-01-03。
项目来源:国家自然科学基金资助项目(41101374、41101308)。