GIS数据格式无缝转换*
2013-07-31刘学超
刘学超
(淮北职业技术学院,安徽 淮北 235000)
一、引 言
数据转换是GIS中常有的普遍性问题。空间数据库中的数据有多种类型和多种来源,具有特殊的应用和操作要求。在GIS中经常碰到的数据转换包括不同的数据格式转换、空间表达形式转换、坐标转换和投影转换[1]。
数据格式转换是把现存的其他系统/软件的数据转换为用户系统软件数据格式,通过数据转换,我们既可以降低对于数据的直接采集输入,同时也能保证数据的质量、准确性、精度等方面。
二、数据格式无缝转换的思路与方法
数据采集导入作为空间数据建库的基本组成部分,其最关键的工作就是处理DLG数据。DLG数据是指与现有线划基本一致的地形要素的图形、属性等信息,也称地形数据。目前数据采集大都使用的是Autodesk公司的AutoCAD或Bentley公司的MicroStation平台,数据的文件形式分别是DWG和DGN[2]。目前,安徽省现有的地形数据都是在AutoCAD的产品。
这里主要讨论在AutoCAD下导入DWG格式数据的方法。首先要进行CAD·GIS的格式转换。这包括如下两种方法:
1.数据直接转换
是指CAD与GIS进行直接转换或读写,中间不借助任何程序接口。这种方法虽然可以方便的实现数据转换,但是由于CAD与GIS系统对空间对象描述时会有模型、语义等差别,这就导致了在进行转换时数据信息丢失等方面的问题。比如当数据从CAD的交换格式dxf转换成ESRI的shape文件或者Coverage时,原来定义的图形属性等就会丢失。这种方法不能转换GIS中的属性数据,因而数据的无缝转换也很难实现。在AutoCAD端直接使用ArcSDE数据访问API操作数据库虽可顾及GIS的属性数据,但是这样不仅操作复杂而且数据库也会存在一定风险,不如直接更新GIS数据库。
2.数据间接转换
即设置专门的程序对AutoCAD与ArcGIS进行读写来达到数据无缝转换的目的。安徽省1:10000基础地理信息数据库的建库过程就是采用编写读写程序实现数据的无缝转换。
使用上述的方式将DWG格式转换为Coverage格式后,再使用空间数据引擎将数据轻松地写入数据库。
三、数据格式无缝转换的程序设计与实现
本转换程序主要由两部分组成,一部分在AutoCAD下开发的图层整理模块,第二部分在Arc/Info下开发的数据格式转换模块。
CAD到Arc/Info的数据转换首先要将AutoCAD中的点、线、文字、属性等图形元素进行分类,分类原则依据Arc/Info文件。因为Arc/Info的一个数据文件中一般只有一类元素,例如点状元素包括独立的地物点和控制点,线状元素包括单线水系、路网,面状元素包括建筑物、水塘、双线河流等。而且Arc/Info的数据文件一般是一个文件中放置的是同类、同性质的元素,例如道路元素、单线水系、电力线元素都同属于线状元素,但只有道路元素存放在路网的数据文件中。因此我们要将AutoCAD中的图形元素依据上述特点进行细划分类,然后保存在不同层,也就是将Auto-CAD的一个层与Arc/Info的一个数据文件实现对应。经过分类、分层后,图形元素由两种信息组成。一是元素的坐标值,也就是它的几何信息。这一信息非常重要,我们首先要把这部分信息转换成Arc/Info能够直接识别读取的格式。一是特征信息,例如点、线、面的形状或颜色等。这一信息一般是作为Arc/Info文件中相应元素的属性数据,因此这部分数据需要转换AutoCAD格式的数据,以便将它们连接到Arc/Info的PAT或AAT文件中。主要步骤如图1所示:
图1 转换框架图
1.AutoCAD系统下程序设计
AutoCAD与Arc/Info之间的图形要素并不是一一对应。AutoCAD中有点、文字、注记以及各类专用符号等,而Arc/Info中只有一些简单要素层,所以在进行对应转换时,我们需要做一些技术处理。AutoCAD数据转换到Arc/Info数据需要将数据先转化成简单要素层,然后存为AutoCAD的交换格式DXF。下面详细阐述在转换过程中对所存在问题的处理。
在Arc/Info的Coverage数据没有块的概念,现以非面状房屋处理为例,说明一下遇见块如何处理。首先判断符号的长度是否大于7.0,如果大于7.0,把其处理成线状房屋,代码320212;若小于7.0以块存在,由于Arc/Info只有点、线、面、汉字、TIC等这几种简单要素,因此就需要在AutoCAD系统下将块处理成点,在AutoCAD系统下块状符号的方向依据ANGLE项来控制,但由块转成点以后,ANGLE就自动取消。笔者的解决方法是暂把块的ANGLE项内的值存在Z值项内,这种方法解决了块状符号的角度问题,同时解决了ArcGIS下无块的概念。对其他块状符号都依据类似办法解决。
在AutoCAD对于面状房屋层和面状水系层等封闭地物使用晕线填充,达到打印出图便于读图和图面美观的效果,但数据转换到Arc/Info下这些晕线是无用的,因此在AutoCAD环境下,需要把填充的晕线删除:
在AutoCAD的环境下大的方面依据代码表对数据进行了重新分类分层,对错误的代码进行修正。在细节方面很好解决两个系统下的图形要素不一致的问题,这样为把数据转换成Arc/Info格式做好了充分的准备。
2.ARC下的几何信息转换与属性信息传递的实现
以B层为例,解释一下转换的原理:首先不考虑线的属性,使用ArcGIS中的命令直接操作,即DXFARC直接进行转换[3]。如下:
完成转换之后,进行属性信息的传递,依据《1:10000基础地理信息数据生产与建库总体技术纲要》的规定之一《1:10000基础地理信息数据分类与代码》,先建立B层相关的属性表[4],如下:
按需求把相应的属性项一一对应:
通过以上程序设计,从各个图形元素的扩展数据中读取出属性数据,然后写到Coverage格式相应属性数据位置,把空间信息数据和属性信息数据放在一起同时输出[5],这样可以很好的保证数据的一致性,实现对定制好的Auto-CAD数据到Arc/Info的coverage数据转换。
四、小 结
本文提出了利用AUTO LISP语言和AML语言,分别在AutoCAD和ARC/INFO下进行对接式二次开发,以实现地物及其属性的自动传递。该方法首先在AutoCAD下对数据整理,依据代码对照表对数据重新归层,然后在ARCGIS8.2下进行数据格式批量转换。该方法目前已开始应用于生产,并取得良好的效果。
[1]顾杰等.地籍数据建库方案的探讨[J].测绘与空间地理信息,2009,3(1):58 -61.
[2]周勇前.AutoCAD与ARC/INFO的数据转换[J].测绘通报,1995,(3).
[3]孙鸿睿.城市地理信息系统空间数据处理方法的研究[D].中南大学,2006.
[4]刘伟等.基于GML从DXF文件到Shape文件格式转换的研究与开发[J].测绘科学,2004,(7).
[5]张新长,马林兵,张青年.地理信息系统数据库[M].北京:科学出版社,2005.