从DWG到SHP数据的一种实用转换方法的介绍
2011-02-12国土资源信息化 |qevent李勇平
摘要:对于很多土地数据生产、管理单位来说,为了充分发挥对数据查询、分析的作用,在信息化的过程中,往往需要将已有的CAD数字图转换成GIS格式的数据后入库。因此,掌握CAD数据到GIS数据的转换对生产管理单位具有实际的意义,本文介绍了如何完成这种转换。
关键字:CAD;GIS;数据转换
1 引言
从白纸手工绘图到数字测图,是测绘行业中一场重要的技术变革,数字地图克服了纸质图保存不方便、会变形的缺点,方便了编辑与传输共享,极大地提高了效率、拓宽了地图使用的方式,为地图信息化打下了坚实的基础。随着信息化时代的到来,各行业业务不断扩展,部门以及公众对信息的需求与日俱增,例如交通出行、旅游线路查询,土地资源管理中地楼房的关系及价格信息。显然,CAD格式的数字地图难以满足在信息查询、分析统计方面的需
关键字:CAD;GIS;数据转换
1 引言
从白纸手工绘图到数字测图,是测绘行业中一场重要的技术变革,数字地图克服了纸质图保存不方便、会变形的缺点,方便了编辑与传输共享,极大地提高了效率、拓宽了地图使用的方式,为地图信息化打下了坚实的基础。随着信息化时代的到来,各行业业务不断扩展,部门以及公众对信息的需求与日俱增,例如交通出行、旅游线路查询,土地资源管理中地楼房的关系及价格信息。显然,CAD格式的数字地图难以满足在信息查询、分析统计方面的需
要,为此,地理信息系统作为一门已有的学科开始得到广泛地应用,对应的GIS数据格式也已开发出来,GIS数据格式是为地理信息存储专门设计的,包括空间位置及属性信息,通过优化,借助于大中型对象关系数据库来管理,利于存储图形及属性信息在此基础L设计应用系统、专家系统,不但可以对信息进行查询(既可空间定位,也可查属性),还能分析运算形成新的决策数据,这些应用都是数字CAD图所不具备的,却是以S所擅长的,同时又是多个行业部门所需要的功能,包括国土、交通、公安、消防、农业、水利等行业。
2 地籍管理
在地籍管理工作中,首先,要进行土地利用类别现状的调查,查清全国各类土地数量、质量和利用状况;其次,要依法进行土地登记和统计,最后要开展土地估价和地产评价,为实施土地有偿使用提供可靠的依据[1]。
在日常生活中,土地使用情况是不断变化的,特别是随着经济的发展,这种变化更为明显,为了保持土地利用成果的现势性,还要不定期地进行土地更新调查。例如,为了从宏
2 地籍管理
在地籍管理工作中,首先,要进行土地利用类别现状的调查,查清全国各类土地数量、质量和利用状况;其次,要依法进行土地登记和统计,最后要开展土地估价和地产评价,为实施土地有偿使用提供可靠的依据[1]。
在日常生活中,土地使用情况是不断变化的,特别是随着经济的发展,这种变化更为明显,为了保持土地利用成果的现势性,还要不定期地进行土地更新调查。例如,为了从宏
观上掌握土地利用情况,从2007年开始全国开展第二次土地调查,并巨要求提供相应的地理数据格式的成果。
在土地调查成果中,土地利用现状图,包括土地类别、土地编码属性信息,这些信息为土地使用状况的统计汇总、管理决策提供数据基础,初始数据如果是CAD格式,则需要将成果数据转成地理信息数据,信息化过程涉及到测绘数据转换、数据建库、应用系统开发。
3 CAD数据与GIS数据
CAD绘图系统有很多种平台,包括AutoCAD、国产CAD软件、及开源CAD、……,每个软件都有自己的数据格式。广泛使用的AutoCAD使用的文件是格式,这种文件格式是未公开的,为了方便图形交换,Autodesk公司另外提供了公开的DXF格式。
在DWG图形文件中,数据库容器中每个数据库对象都具有一个特征:句柄(Handle),这个值在图形/D XF文件中是唯一的,并且在图形的生命期内固定[2]。数据库对象分为图形对象和非图形对象,图形对象也就是图元:如一个点、一条多段线、一个圆,都是一个图元,
在土地调查成果中,土地利用现状图,包括土地类别、土地编码属性信息,这些信息为土地使用状况的统计汇总、管理决策提供数据基础,初始数据如果是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软件、…,
在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信息化技术的应用,已有作业单位尝试在
4 数据采集现状
数据采集,根据空间数据的来源不同,一般可以采用以下几种:野外数据采集、原图(底图)数据采集、以及航片数据采集[4]……,各种采集方法都有相应的特点。
对于野外数据采集来说,目前测量作业流程大致包括以下步骤:技术设计、布设控制网、外业数据采集(包括属性数据的获取、权属调查)、内业编辑、质量检查、最终形成数据成果。外业采集中区别较大的情况是在何种平台下进行,成果数据的格式对平台的选用会有一定影响。
数字测绘系统:有CAD下的二次开发产品、国产数字绘图系统有清华山维公司的ESPW、……,在土地基础数据行业中,随着GIS信息化技术的应用,已有作业单位尝试在
GIS平台下采集。就笔者了解的实际情况来看,目前在广东范围的测绘队伍,很多采用传统的作法:基于CAD平台下的绘图系统进行数字化测图,然后再转换成相应的地理数据格式。而且,一些外业单位对CIS软件及数据的理解使用也远没有CAD那么熟练,测图编辑后得到的数字图,必要时还得扩充或修改绘图系统,设计存贮属性数据,作专门的接口模块将数字图形格式转换成GIS格式。
此外,有很多行业的单位,一般会积累了大量具有完整属性的数字地图,也需要将这些图形组织导入GIS库,以方便应用管理。
5 ActiveX技术简述
在早期或者难以扩展的软件中,功能往往限制住,难以修改,如果要对软件添加一些功能,必须修改源代码,然后重新编译,再重新安装,如果只添加一个小的应用,对于软件公司来说,维护成本较高;对于客户,显得很不灵活。
针对因特网的应用,微软公司开发了ActiveX:一种为网络通信而设计的技术标准,理论
此外,有很多行业的单位,一般会积累了大量具有完整属性的数字地图,也需要将这些图形组织导入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.
如同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科技感十足的个人简历html网页模板(界址点)图层建立的属性结构如下表所示:
图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编写的读取选择集中图形对象属性的关键代码片段:
‘flexibility (转换为形容词)定义变量以保存扩展属性数据
Dim xDataType As Variant
文件格式转换app
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
‘创建选择集
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中的strust2JOIN工具将两者链接并输出结果。
7 实际案例应用
在08年中旬,勘测部门测量了一批土地利用现状图数据(DWG格式),然后要把这批数据导入GIS库中,首先要建立一个地理数据库,再将DWG数据转换成SHP格式后导人已建好的数据库中。
简单查看后,发现原始图形包含有界址点、界址线、宗地、面状地类以及线状地类等图层,再用ExPresstool工具分析图形中包含的图层,发现原始DWG图形中的图斑、线状地类图层含有较为完整的土地属性信息,根据图1流程图的步骤分别将图形图层及属性处理输出,得到了相应的SHP图层,最后用GIS软件加载这些图层,图形如下图所示:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论