从 DWG 到 SHP 数据的一种实用转换方法的介绍
摘要:对于很多土地数据生产、管理单位来说,为了充分发挥对数据查询、分析的作用,在
信息化的过程中,往往需要将已有的 CAD 数字图转换成 GIS 格式的数据后入库。因此,掌
握 CAD 数据到 GIS 数据的转换对生产管理单位具有实际的意义,本文介绍了如何完成这种
转换。
关键字:CAD;GIS;数据转换
1 引言
从白纸手工绘图到数字测图,是测绘行业中一场重要的技术变革,数字地图克服了纸质
图保存不方便、会变形的缺点,方便了编辑与传输共享,极大地提高了效率、拓宽了地图使
用的方式,为地图信息化打下了坚实的基础。随着信息化时代的到来,各行业业务不断扩展,
部门以及公众对信息的需求与日俱增,例如交通出行、旅游线路查询,土地资源管理中地楼
房的关系及价格信息。显然,CAD 格式的数字地图难以满足在信息查询、分析统计方面的
需要,为此,地理信息系统作为一门已有的学科开始得到广泛地应用,对应的 GIS 数据格
式也已开发出来,GIS 数据格式是为地理信息存储专门设计的,包括空间位置及属性信息,
通过优化,借助于大中型对象关系数据库来管理,利于存储图形及属性信息在此基础 L 设计
应用系统、专家系统,不但可以对信息进行查询(既可空间定位,也可查找属性),还能分
析运算形成新的决策数据,这些应用都是数字 CAD 图所不具备的,却是以 S 所擅长的,同
时又是多个行业部门所需要的功能,包括国土、交通、公安、消防、农业、水利等行业。
2 地籍管理
在地籍管理工作中,首先,要进行土地利用类别现状的调查,查清全国各类土地数量、
质量和利用状况;其次,要依法进行土地登记和统计,最后要开展土地估价和地产评价,为
实施土地有偿使用提供可靠的依据[1]。
在日常生活中,土地使用情况是不断变化的,特别是随着经济的发展,这种变化更为明
显,为了保持土地利用成果的现势性,还要不定期地进行土地更新调查。例如,为了从宏观
上掌握土地利用情况,从 2007 年开始全国开展第二次土地调查,并巨要求提供相应的地理
数据格式的成果。
在土地调查成果中,土地利用现状图,包括土地类别、土地编码属性信息,这些信息为
土地使用状况的统计汇总、管理决策提供数据基础,初始数据如果是 CAD 格式,则需要将
成果数据转成地理信息数据,信息化过程涉及到测绘数据转换、数据建库、应用系统开发。
3 CAD 数据与 GIS 数据
CAD 绘图系统有很多种平台,包括 AutoCAD、国产 CAD 软件、及开源 CAD、……,每
个软件都有自己的数据格式。广泛使用的 AutoCAD 使用的文件是格式,这种文件格式是未
公开的,为了方便图形交换,Autodesk 公司另外提供了公开的 DXF 格式。
在 DWG 图形文件中,数据库容器中每个数据库对象都具有一个特征:句柄(Handle),
这个值在图形/D XF 文件中是唯一的,并且在图形的生命期内固定[2]。数据库对象分为图形
对象和非图形对象,图形对象也就是图元:如一个点、一条多段线、一个圆,都是一个图元,
其句柄值是唯一的。假若在相同位置画相同半径的两个圆,查询后会发现它们的句柄值是不
同的,因此,可以将句柄值作为图元的识别码。
在 DWG 中,图形对象并不直接存贮属性数据,相反,对属性数据的存贮是通过图形的
扩展数据 XDATA 来实现,利用 XDATA 设计变量,然后将属性数据赋给这些变量来完成。
AutoCAD 没有提供相应的菜单命令来直接操作 XDATA,要读写属性数据,借助该平台的二
次开发,选择一种开发语言:Lisp/visual lisp、VBA/VB 或 C 十+编写代码来读写这些属性
数据。
地理信息系统(GIS)是用于输入、存储、查询、分析和显示地理数据的计算机系统 l3]。
它包含好几个部分,地理数据模型一般可分为矢量模型与栅格模型,矢量模型根据要素特征
分为点、线、面数据模型及其它复杂对象,不象 CAD 中,可以将点、线、面数据混合存放
在一个图层,相反,地理数据是严格分层的,一个图层只能存放一种要素,相应的图层文件
既可组织成 PC 机磁盘里的目录下某个具体的文件,又可导人到地理数据库中的表中统一存
放。地理信息系统软件平台,有 ArcGIS、一些国产 GIS 软件及开源以 S 软件、…,这些软
件也都有自己的 GIS 数据格式。目前,广泛使用的地理数据很多采用 SHP 格式,这是由 ESRI
公司开发并已公开的一种 GIS 数据格式,大多数 GIS 软件都支持打开这种数据,进行浏览
查看等等。
4 数据采集现状
数据采集,根据空间数据的来源不同,一般可以采用以下几种:野外数据采集、原图(底
图)数据采集、以及航片数据采集[4]……,各种采集方法都有相应的特点。
对于野外数据采集来说,目前测量作业流程大致包括以下步骤:技术设计、布设控制网、
外业数据采集(包括属性数据的获取、权属调查)、内业编辑、质量检查、最终形成数据成
果。外业采集中区别较大的情况是在何种平台下进行,成果数据的格式对平台的选用会有一
定影响。
数字测绘系统:有 CAD 下的二次开发产品、国产数字绘图系统有清华山维公司的
ESPW、……,在土地基础数据行业中,随着 GIS 信息化技术的应用,已有作业单位尝试在
GIS 平台下采集。就笔者了解的实际情况来看,目前在广东范围的测绘队伍,很多采用传统
的作法:基于 CAD 平台下的绘图系统进行数字化测图,然后再转换成相应的地理数据格式。
而且,一些外业单位对 CIS 软件及数据的理解使用也远没有 CAD 那么熟练,测图编辑后得
到的数字图,必要时还得扩充或修改绘图系统,设计存贮属性数据,作专门的接口模块将数
字图形格式转换成 GIS 格式。
此外,有很多行业的单位,一般会积累了大量具有完整属性的数字地图,也需要将这些
图形组织导入 GIS 库,以方便应用管理。
5 ActiveX 技术简述
在早期或者难以扩展的软件中,功能往往限制住,难以修改,如果要对软件添加一些功
能,必须修改源代码,然后重新编译,再重新安装,如果只添加一个小的应用,对于软件公
司来说,维护成本较高;对于客户,显得很不灵活。
针对因特网的应用,微软公司开发了 ActiveX:一种为网络通信而设计的技术标准,理
论基础是微软的组件对象模型(COM),它是一种二进制标准,与具体的开发语言无关,由
服务器提供各种服务,而客户端调用其服务,然而,ActiveX 也广泛应用于桌面系统。
如同 Access、Excel, AutoCAD 也采用了 ActiveX Automation 技术,ActiveX 使用户能够
从 AutoCAD 的内部或外部(独立的应用程序)以编程方式来操作 Auto-CAD 以扩充其功能,
简单的如修改菜单,添加一个命令,复杂的还可以进行系统开发(市场上有一些测量绘图系
统是在 AutoCAD 下二次开发的)。通过 ActiveX 将 AutoCAD 对象展现给“外部世界”,这些
对象被展现后,不同的编程语言和环境(例如 Access VBA、Excel VBA 或 AutoCAD VBA)
就能够访问它们,例如,可以编写一段程序访问 AutoCAD 中的图形数据,同时又将信息从
Excel 读取或写入。
AutoCAD 环境下提供了很多 API,可以找到以下两个函数:SetXData、GetXData,其
功能是设置、读写图形对象的扩展数据,方法是在图形对象上调用相应的 SetXData、
GetXData 函数。函数及参数表如下所示:SetXData XdataType,XData 和GetXData AppName,
XDatafype, XData Value.
6 DWG 到 SHP 的数据转换
通过 CAD 下二次开发的测绘系统采集得到了 CAD 数据,而地理信息数据采用的是 GIS
格式,因此需要一种转换从 CAD 格式中获取 GIS 数据,下面以广泛使用的 DWG 用 XF 数据
和 SHP 数据来说明这个过程。
通用的 GIS 平台软件一般都提供了从 DWG 用 XF 到 SHP 的转换功能,但是这种转换是
简单的,转出来的 SHP 图层不带有预期的扩展属性,伴随着信息丢失,没有一个简单的命
令能一蹴而就,但是经过分析,我们可以将数字地图的属性信息另行输出,然后将输出的图
形及对应的属性信息链接合并,就得到了完整的 SHP 数据成果,转换流程图如下所示:
图 1 DWG/DXF 格式转换到 SHP 格式的流程图
具体转换步骤描述如下:
1.利用通用的 GIS 平台软件,将 DWG 图层转换成 SHP 图层,转换时选择输出项,得
到带 Handle 字段的 SHP 图层,ArcGIS 中的 ArcToolbox 提供有这样的工具;
2.使用 AutoCAD 的 Express Tool 具的命令查看 DWG 图形是否带有扩展属性,如果带
有属性数据,则弄清楚原始数据包含哪些属性,详细分析后建立 xDATA 与图层属性结构的
映射关系,根据映射关系,对于每个图层,创建对应的 DBF 表结构,例如对 JZD(界址点)
图层建立的属性结构如下表所示:
图 2 JZD 图层属性结构字段表
3.在 AutoCAD 下利用二次开发语言编写 vBA 代码,将 DWG 图层中图元的属性数据写
人步骤 2 中对应的 DBF 或其它格式的文件,得到图形图层对应的属性信息表;
4.使用 GIS 软件的功能,通过 SHP 图层和属性信息表中的公共字段 Handie 将图形与
属性挂接;例如 ArcGIS 软件中的 Join 菜单命令,可以将 SHAPE 图层与属性文件(DBF、
MDB、或 ExCEL 格式)挂接后并输出,输出后的 SHP 层就具有图形和属性的完整信息;
5.将输出的 SHP 图层中的多余公共字段删除,再进行编辑,最后得到符合要求的 SHP
成果数据。
上述即为转换的整个步骤,实际需要编码的是步骤 3(读取 DwG 图形属性并写人 DBF
文件),我们看看下面的代码段,这是在 AutoCAD 开发环境下用 vBA 编写的读取选择集中
图形对象属性的关键代码片段:
‘定义变量以保存扩展属性数据
Dim xDataType As Variant
Dim xData As Variant
‘创建选择集
Dim ss as object
Set ss=ThisDrawing.Selectionsets.Add(“S1”)
‘定义图形对象
Dim ent As AcadEntity
‘遍历选择集中的对象
For Each ent In ss
‘将该图元所有的扩展信息存放在 xDataType,
xData 变量中
ent.GetAData "",xDataType,xData
Next ent
以上代码演示了如何获取扩展数据,代码执行后 xDataTyPe,xData 变量已含该图元所
有的属性,然后将 xDataType,xData 变量中的属性值写入 MDB、DBF 或其它格式的文件,
完成属性值的输出。
有了 SHP 图形图层,及对应的 DBF 属性表之后,就使用 ArcGIS 中的 JOIN 工具将两者
链接并输出结果。
7 实际案例应用
在 08 年中旬,勘测部门测量了一批土地利用现状图数据(DWG 格式),然后要把这
批数据导入 GIS 库中,首先要建立一个地理数据库,再将 DWG 数据转换成 SHP 格式后导
人已建好的数据库中。
简单查看后,发现原始图形包含有界址点、界址线、宗地、面状地类以及线状地类等图
层,再用 ExPresstool 工具分析图形中包含的图层,发现原始 DWG 图形中的图斑、线状地
类图层含有较为完整的土地属性信息,根据图 1 流程图的步骤分别将图形图层及属性处理输
出,得到了相应的 SHP 图层,最后用 GIS 软件加载这些图层,图形如下图所示:
图 3 转换后的 MZDL 图层及 MZDL 属性表
8 小结
在测绘生产或管理部门的实际工作中,在测绘作业过程中往往会产生大量 CAD 数据,
同时也有很多历史数据,随着信息化进程,要求信息利用、资源整合,将这些数据转换人库,
以供查询、统计分析,宏观管理使用,面对这种需求,运用上述方法,我们只需在 Auto-CAD
下编写少量的 VBA 代码,借助通用的平台软件,就可以完成,这种方法的优点是编码量少,
对于非计算机专业人员来说,较为快捷实用,上述方法的关键是利用一个公共字段 Handle,
保证转换后的图形与属 J 吐的一一对应关系,确保图属一致,达到了转换的预期目标,对于
解决信息化过程中数据转换问题有实际的意义。
参考文献:
[1]金其坤主编.地籍测量[M].北京:地质出版社 1994.5 7.
[2]Autodesk ino.AutoCAD Help.
[3][美]Kang-tsung Chang 著.陈健飞.等译.地理信息系统导论[M].科学出版社 1.
[4]杨德麟等.大比例尺数字测图的原理.方法与应用[M].北京:清华大学出版社 3-4.
2013 年终变更数据
伪变化图斑
42 个
变更为建设用地 46 个
其中公路用地 16 个,农村居民点 12 个,建制镇 18 个,其中 9 个为
未批先建图斑
变更为设施农用地 5 个
临时用地 18 个
3 个往年已变更图斑
分别为:2 个 2011 年已变更为建设用地的图斑(陇南驾校练车场、
金徽家园),1 个 2012 年已变更为建设用地的图斑(佳润小区)
国家监测图斑 114 个