SHAPE与DWG数据格式转换方法及在地理国情普查中的应用
2016-01-26吕宝奇贺晓阳卢小平
肖 锋,吕宝奇,贺晓阳,卢小平
(1. 矿山空间信息技术国家测绘地理信息局重点实验室,河南 焦作 454003;
2. 河南省测绘工程院,河南 郑州 450003)
Method of SHAPE and DWG Data Format Conversion and Application
in the National Geographic Conditions Census
XIAO Feng,LV Baoqi,HE Xiaoyang,LU Xiaoping
SHAPE与DWG数据格式转换方法及在地理国情普查中的应用
肖锋1,2,吕宝奇1,2,贺晓阳1,2,卢小平1
(1. 矿山空间信息技术国家测绘地理信息局重点实验室,河南 焦作 454003;
2. 河南省测绘工程院,河南 郑州 450003)
Method of SHAPE and DWG Data Format Conversion and Application
in the National Geographic Conditions Census
XIAO Feng,LV Baoqi,HE Xiaoyang,LU Xiaoping
摘要:生产实际中经常需要在SHAPE数据与DWG数据之间进行格式转换,尤其是图形数据和属性数据的同步转换,但AutoCAD和ArcGIS均未提供这两种数据格式之间的转换工具,而且目前尚没有成熟的软件或工具能够进行直接转换。本文基于VC++2005平台和ObjectARX SDK开发环境,在AutoCAD 2008平台上进行了二次开发,完成了在AutoCAD平台下直接读取SHAPE数据的图形和属性,处理并保存为DWG格式,实现了图形数据和属性数据的无损转换,并在河南省第一次全国地理国情普查工作中进行了规模化应用,取得了良好的效果。
关键词:SHAPE;DWG;数据转换;地理国情普查
一、引言
在第一次全国地理国情普查工作中,经常需要将SHAPE数据与DWG数据进行相互转换,而且图形数据和属性数据都需要转换,但常用的ArcGIS和AutoCAD两大平台都不提供这两种数据的转换工具。目前国内外常用的SHAPE与DWG格式的转换方法有利用ArcGIS中ArcToolbox的数据导出功能进行转换,以及利用AutoCAD Map的数据导入功能进行转换。这两种方法虽然能够进行图形数据的转换,但无法实现属性数据的转换,而且会导致属性数据的丢失。因此,探寻一种能同时转换图形和属性的数据转换方法,实现SHAPE与DWG数据的自动批量转换,是构建地理国情普查本底库亟待解决的关键技术难点。本文在实现DWG数据到SHAPE数据直接转换的基础上,通过对比分析DWG和SHAPE这两种文件格式,在AutoCAD平台上进行二次开发,将SHAPE数据直接读取到AutoCAD,然后再保存为DWG格式数据,实现数据格式转换,同时满足图形和属性要求;通过在地理国情普查工作中的规模化应用,表明了该方法的有效性。
二、数据格式转换技术方法
1. SHAPE格式
SHAPE作为ArcGIS软件的专有文件格式,是GIS行业公认的标准格式,它是描述空间数据几何形状和属性特征的非拓扑实体矢量数据结构的一种数据格式。一个Shapefile文件包括坐标文件(*.shp)、索引文件(*.shx)和属性文件(*.dbf) 3个基本文件。坐标文件是直接存取变长记录的文件,其中每条记录描述一个实体的几何形状,称为SHAPE。索引文件中,每条记录包含坐标文件相对于文件头的偏移量。属性文件包含各个实体的属性特征数据。图形和属性间的一一对应关系通过不重复的记录号进行控制,属性文件中的属性记录和坐标文件中的图形数据记录的顺序相同。
2. DWG格式
DWG是AutoCAD保存图形文件的一种原有格式,是制图行业的工业标准。该格式为二进制,数据结构复杂,且作为商业秘密不对外公开,通常情况下只有在AutoCAD平台上才可以对DWG数据进行读写操作。虽然DWG数据可以通过DXF格式进行数据交换,但操作过程烦琐。因此,在AutoCAD平台下进行二次开发,是对DWG数据进行读写操作的有效方法。
3. SHAPE与DWG格式转换方法
(1) 转换方法
由于SHAPE和DWG格式均为二进制,SHAPE格式为开源,而DWG格式是保密的。因此,本文将SHAPE数据批量自动转换成DWG数据的思路为:首先利用程序读取SHAPE数据,在AutoCAD平台上利用ObjectARX和VC++开发环境进行二次开发,并对DWG数据进行批处理;然后读取SHAPE数据,对图形和属性分别进行转换,图形根据几何类型按点、线、面转换并写入AutoCAD内存,属性转换为AutoCAD 4种常用的属性存储方式之一;最后保存为DWG格式,自动完成数据格式的转换。SHAPE与DWG数据批量自动转换的技术流程如图1所示。
图1 SHAPE数据转换成DWG数据流程
(2) 图形数据转换
SHAPE文件只能表示单一的几何类型,如点、线、面等,对于不同几何类型需要分别建立相应的SHAPE文件。将SHAPE文件转换成DWG文件,必须首先判断SHAPE文件的几何类型,按照点、线、面等类型分别进行转换。本文基于ObjectARX SDK和VC++2005开发环境并结合AutoCAD特性,针对点、线、面等不同几何类型,采用不同的数学方法和算法分别编程进行了转换。各种几何类型数据的转换方法及具体的技术流程如图2所示。
图2 图形数据转换
1) 点类型。该类型数据转换较为简单,首先提取出定位点坐标,然后按坐标生成AutoCAD的图形实体,可以根据实际情况转换为点实体、块实体和文字实体。实际生产应用中,一般是将SHAPE中的点转换为块或文字,这是因为点在AutoCAD中无法表示实体地物,通常是用块表示地形图中的独立地物。此外,SHAPE文件不能记录注记,只能用SHAPE点文件将注记存入属性,此时需要将点转换为文字。
2) 线类型。线类型的转换主要是提取线上各节点的坐标,然后在AutoCAD中生成多段线。多段线的节点顺序必须与原节点顺序一致。
3) 面类型。面类型的数据转换比较复杂,由于AutoCAD没有面的概念,因此SHAPE面类型的转换只能用相应的实体代替。根据AutoCAD平台特点,实际作业时可选择生成闭合多段线、填充或面域等方法。最常用的方法是首先生成闭合多段线,然后判断SHAPE对象是单面或多面。如果是单面,获取面的边界节点坐标,生成闭合的多段线;对于多面情况,则采用循环方法获取所有面的边界点坐标,然后生成闭合多段线;当SHAPE面有环或岛的特殊情况时,需要用递归算法提取坐标并生成多段线。生成面域或填充的方法与多段线方法类同,只需在多段线的基础上生成面域或填充即可。
(3) 属性数据转换
图形转换的同时需要转换相应的属性,SHAPE数据的属性存放于属性文件(*.dbf),SHAPE文件同一层的属性结构相同。DWG数据的属性是基于实体的,属性与图层没有任何关联关系,存放方式有扩展数据(XData)、扩展记录(XRecord)、对象数据(OData)、对象特性(OProperty)4种,相应的转换方法如下:
1) 扩展数据(XData)方式。AutoCAD的扩展数据可以附在任何实体上,所有的扩展数据都需要用唯一的应用程序名(regappName)进行识别。转换时首先读取属性文件,结合索引文件(*.shx)找到对应图形实体,并采用ObjectARX为对应的实体写上扩展数据,添加扩展数据使用setXData函数。扩展数据的应用程序名与SHAPE属性字段名对应,扩展数据的类型和内容直接读取SHAPE属性的数据类型和内容。
2) 扩展记录(XRecord)方式。与扩展数据类似,AutoCAD的实体可以关联扩展字典,扩展记录就是扩展字典的类型之一。实体在默认情况下不包含扩展字典,如果要利用扩展字典保存与实体关联的数据,可以利用reateExtensionDictionary函数为实体建立扩展字典,并使用setAt函数添加扩展记录(AcDbXrecord)。转换属性首先要读取属性文件,结合索引文件(*.shx)找到对应图形实体,然后添加扩展记录属性。
3) 对象数据(OData)方式。对象数据是AutoCAD Map 3D存储属性的方式,与SHAPE属性类似。在AutoCAD中,利用ObjectARX添加对象数据的方法是首先使用CreateODTable函数创建对象数据表,然后利用AcMapODTable::AddRecord加添对象数据。
4) 对象特性(OProperty)方式。对象特性是AutoCAD对象实体的基本特性,该方式只能存放几种简单的属性,如宽度、角度、高度、厚度等,属性转换只需利用setAttributes函数将读取的SHAPE属性写入到DWG对象实体。
(5) 程序实现
本文采用C++语言,在AutoCAD2008平台下采用ObjectARX SDK进行二次开发,完成了数据格式批量自动转换程序研发。
三、实际应用效果
该方法在笔者所在单位承担的河南省地理国情普查项目中得到了规模化应用,共有30多个县的数据采用了本方法进行转换。实际应用过程中,对SHAPE和DWG的图形和属性数据转换前、后的精度分析与评价表明,属性数据达到了无损,而图形数据的拓扑结构无误,且几何误差小于0.01 mm(在ArcGIS限差内),对于地理国情普查工作属于精度无损转换,从而验证了该方法的可行性和有效性。同时,与其他转换方法相比,本方法可直接在AutoCAD上运行程序,无须第三方软件,方便快捷,提高数据处理效率50%。表1为南阳市辖各县(市、区)地理国情普查项目的实际应用情况。
表1 南阳市辖各县(市、区)地理国情普查应用情况
四、结束语
本文基于VC++2005平台和ObjectARX SDK开发环境,在AutoCAD 2008平台上进行了二次开发,实现了SHAPE和DWG两种文件格式同步转换图形数据和属性数据。实际应用结果表明,本方法转换效率高,操作便捷,完全满足地理国情普查工作的精度要求,并显著提高了生产效率。
参考文献:
[1]王艳东,龚健雅,黄俊韬,等. 基于中国地球空间数据交换格式的数据转换方法[J].测绘学报,2000, 29(2):142-148.
[2]陈能,施蓓琦.AutoCAD地形图数据转换为GIS空间数据的技术研究与应用[J].测绘通报,2005(8):11-14.
[3]胡胜华,何宗宜,陶利佳.AutoCAD与GIS数据转换的研究[J].测绘通报,2007(12):44-47.
[4]肖锋,吕宝奇,林蒙恩.DWG到SHP格式转换技术的研究与实现[J].测绘与空间地理信息,2013(9):87-89.
[5]张叶,孙毅中,陈年松.CAD城市基础数据到GIS转换的有关问题探讨[J].测绘与空间地理信息,2007(1):94-97.
[6]谢江平,邹自力.CAD矢量数据向ArcGIS转换的方法[J].地理空间信息,2010(4):130-132.
[7]王波,张亮,孙霞.CAD向GIS数据的转换入库[J].地理空间信息,2011(3):24-26.
[8]郑翠玲.空间数据的格式转换研究与实现[J].现代计算机:专业版,2010(9):171-173.
[9]侯丽娜,李城.Dgn到Dwg空间数据转换方法[J].陕西煤炭,2011(1):96-97.
[10]王海银,李国华,庄晓东,等.地理国情普查数据协同生产系统开发与应用[J].测绘通报,2015(7):103-105,127.
[11]宋晓红,张立朝,禄丰年,等.地理国情普查中多源异构数据整合研究[J].测绘通报,2014(9):104-107.
[12]刘锋,张继贤,李海涛.SHP文件格式的研究与应用[J].测绘科学,2006(6):116-117.
通信作者:吕宝奇
作者简介:肖锋(1972—),男,高级工程师,主要从事数字城市、GIS技术应用等方面的研究。E-mail:8867110@qq.com
基金项目:河南省高校创新团队支持计划(14IRTSTHN026);河南省创新型科技创新团队支持计划
收稿日期:2015-07-15; 修回日期: 2015-10-10
中图分类号:P282
文献标识码:B
文章编号:0494-0911(2015)12-0063-03