APP下载

基于GDAL的CAD数据向Shp数据转换

2017-07-07刘宏光王洪栋刘海辰

城市勘测 2017年3期
关键词:空间数据二次开发图层

刘宏光,王洪栋,刘海辰

(1.天津市勘察院,天津 300191; 2.中国地震局第一监测中心,天津 300180)

基于GDAL的CAD数据向Shp数据转换

刘宏光1*,王洪栋2,刘海辰1

(1.天津市勘察院,天津 300191; 2.中国地震局第一监测中心,天津 300180)

Shp数据是地理信息数据管理常用的一种数据格式,目前国土资源和城市规划管理等部门多采用此格式文件作为基础数据交换和传递的媒介。在比较常用转换方法的优缺点的基础上介绍了利用GDAL将CAD数据转换为Shp数据的流程及优缺点,实践操作表明此方法具有可自动化操作、无须依赖于GIS环境、开发难度低、运行稳定等特点,在日常作业过程中尤其是在大批量的数据转换过程中具有一定的优势。

GDAL;CAD;Shp;数据转换

1 概 述

Shp数据是地理信息数据管理常用的一种数据格式,目前国土资源和城市规划管理等部门多采用此格式文件作为基础数据交换和传递的媒介。而一般测绘生产单位在成图阶段大多采用AutoCAD作为基础平台,其成果文件大多为DWG或DXF文件。将CAD文件转换为Shp文件常用的方法主要有以下几种:用ArcGIS软件或Autodesk AutoCAD Map 3D软件手动转换[1];利用ArcGIS提供的接口进行二次开发读取图形实体实现自动转换[2,3];读取CAD交换格式dxf文件后从底层生成Shp文件[4];基于空间数据操作引擎(FME)实现操作[5]。本文在综合比较各种转换方法的优缺点的基础上利用开源地理空间数据抽象库GDAL成功实现了CAD数据转换为Shp数据的操作。

2 常用的转化方法及其优缺点

(1)用ArcGIS软件手动转换

这种方法在转换前需进行图层转换、文件重命名、解密等预处理工作,然后在ArcGIS软件上用转换工具将图形文件直接转换为Shp数据文件,并进行手工图形编辑填写相关的字段属性信息。

(2)用Autodesk AutoCAD Map 3D软件手动转换

这种方法用Autodesk AutoCAD Map 3D软件手动转换需在进行图层转换预处理后利用Autodesk AutoCAD Map 3D软件自带的地图工具将其输出为Shp数据文件,然后在ArcGIS平台上进行手工图形编辑,并填写相关的字段属性信息。

(3)利用ArcGIS提供的接口进行二次开发读取图形实体实现自动转换

这种方法是直接利用ArcGIS提供的二次开发接口,使用VB、C++、C#等变成语言开发相关程序在读取CAD图形数据后直接将其转换为Shp数据。

(4)读取CAD交换格式dxf文件后从底层生成Shp文件

这种方法通过编制相应的程序按照dxf文件的定义规则读取数据,然后再将其按照Shp文件的格式要求写入从而生成Shp数据。

(5)基于FME的数据转换操作

空间数据操作引擎(Feature Manipulation Engine,FME)是一个第三方数据转换的工具,可实现100多种格式的数据间的相互转换。其空间数据转换是通过采用语义映射文件来控制整个转换流程的[5]。

用ArcGIS软件手动转换和利用Autodesk AutoCAD Map 3D软件手动转换这两种方法,利用现有软件进行操作无须进行二次开发,前期工作简单、形象直观,但是如果CAD图形复杂、属性庞杂或工作任务繁重时,图形编辑及属性填写的工作量大、效率低、对作业人员的身体素质和业务素质要求相当高,不适于大规模、大工程量及批量作业。

利用ArcGIS提供的接口进行二次开发读取图形实体实现自动转换及读取CAD交换格式dxf文件后从底层生成Shp文件这两种方式都能够通过编程手段实现CAD数据的自动化读取和Shp文件的生成操作且可在生成的过程中对图面进行检查并将属性信息一并写入Shp文件中,后期的图形编辑和属性编辑工作量相对来说很小。但是前者依赖于ArcGIS提供的接口环境,后者需对dxf格式和Shp文件格式研究的相当透彻。

基于FME的实现数据转换操作既可以在FME软件下直接用语义映射文件手工实现操作或对其进行二次开发定制插件进行自动化操作,两者均可实现批量操作以提高作业效率。但是采用语义映射文件需要用户对FME软件及映射文件的规则相当熟悉并能够根据数据转化需要在研究不同GIS数据组成格式、定义方法和FME语义转换引擎执行过程的基础上灵活修改FME语义映射文件,对用户的素质要求较高。而FME的二次开发需要FME的运行时环境作为支撑。

3 利用GDAL进行转化的优点及其操作流程

GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库)是一个在X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库,它利用抽象数据模型来表达所支持的各种文件格式,还使用一系列命令行工具来进行数据转换和处理。目前几乎所有的GIS和RS软件底层都使用GDAL来读写空间数据。

OGR是GDAL的一个分支,提供对矢量数据的读写支持,同时它实现了对空间参考信息进行处理的类,用来对空间数据的空间信息进行处理。

利用GDAL的OGR动态链接库进行二次开发,可实现CAD数据向Shp数据的自动转换,这种方法既摆脱了ArcGIS二次开发的环境依赖,又无须对dxf格式和Shp文件格式进行过深的研究,开发相当便捷。

利用这种开发方式,直接读取CAD图形文件后经历OGR驱动注册、创建数据源、创建图层、创建图形要素和属性要素、将图形要素和属性要素进行匹配等阶段后即可实现从CAD数据向Shp数据转换。具体流程如图1所示。

现有的成图软件大多将相关图形和属性信息分图层或线型等方式进行存储,在图面读取的过程中可按照预先设定的成图规则进行读取,并通过数据结构将其组织起来。在图面读取实体的过程中可对图形实体按照既定规则进行检查,判断其是否存在诸如面状图形非闭合曲线等问题,按照实体目标进行自动修改。

在读取图形数据的过程中可以从数据字典中将其属性信息提取出来也可通过读取外部配置信息文件将属性信息与图形进行匹配,从而在生成Shp数据文件的过程中将图形数据与属性数据一并写入减小后期编辑的工程量。

图1 利用GDAL生成Shp数据流程图

4 工程实例

为了满足地铁线路的规划数据归档管理的需要,本文Vsisul Studio平台采用C#语言利用GDAL动态链接库进行二次开发成功实现了CAD数据向Shp数据的转换。

程序运行的过程中为了存储图形数据及属性配置信息,按照图形要素点、线、面三种类型分别定义其存储格式,以点为核心,由点组线,由线组面。并定义一组公共变量存储外部配置文件信息。

TypedValue[]values=new TypedValue[]{

new TypedValue((int)DxfCode.LayerName,strLayer)

};//图层选择集,strLayer为图层名称

SelectionFilter Filter=new SelectionFilter(values);//选择器

PromptSelectionResult acSSPrompt=acDoc.Editor.SelectAll(Filter);

if(acSSPrompt.Status==PromptStatus.OK)

{

SelectionSet acSSet=acSSPrompt.Value;

foreach(SelectedObject acSSObj in acSSet)

{

if(acSSObj !=null)

{

LL.Add(acSSObj);//将本图层上的实体添加到实体集合中

}

}

}

本文利用GDAL生成Shp数据的过程是将每个对象化为对应的点组,然后在Shp相应图层上组成几何图形。上述代码给出了如何按图层获取图形集合,CAD的所有的图形对象均可将其看作由点、直线、弧线组成。将圆、弧等复杂图形经过分解迭代后均可化为线段,线段的端点可通过下列代码:

Point3d st=plt.StartPoint;//获取线段的起点plt为线段对象

Point3d ed=plt.EndPoint;//获取点段的终点

将获取的CAD图形数据对象与其属性及外部配置信息进行匹配后便可利用GDAL进行Shp数据生成。

创建注册OGR驱动

OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING","CP936");//支持中文

string pszDriverName="ESRI Shapefile";

OSGeo.OGR.Ogr.RegisterAll();//注册OGR驱动

调用对Shape文件读写的Driver接口

OSGeo.OGR.Driver poDriver=OSGeo.OGR.Ogr.GetDriverByName(pszDriverName);

用Driver创建Shape文件

OSGeo.OGR.DataSource poDS;

poDS=poDriver.CreateDataSource(strFilePath,null);

创建层Layer

OSGeo.OGR.Layer poLayer;poLayer=poDS.CreateLayer(shpFileName,null,OSGeo.OGR.wkbGeometryType.wkbMultiPolygon,null);

创建数据表属性列

OSGeo.OGR.FieldDefn oField0=new OSGeo.OGR.FieldDefn("CLNR",OSGeo.OGR.FieldType.OFTString);//以创建测量内容字段为例

oField0.SetWidth(30);//宽度30

poLayer.CreateField(oField0,0);//创建字段

完成准备工作后便可进行图形要素添加和属性绑定工作

OSGeo.OGR.Feature facFeature=new OSGeo.OGR.Feature(poLayer.GetLayerDefn());//定义要素

facFeature.SetField(0,Hou_Configformation.strCLNR);//在测量内容字段中填入相应的内容

string strCr="POLYGON(("+LFaceData[i].Coordinate+"))";//定义生成图形要素的字段

OSGeo.OGR.Geometry pt=OSGeo.OGR.Geometry.CreateFromWkt(strCr);//创建多边形

facFeature.SetGeometry(pt);//图形与属性进行捆绑

oLayer.CreateFeature(facFeature);//创建图形要素

在程序编制完成准备完外置属性配置文件后,在CAD平台中加载上述开发成果的动态链接库,指定转换路径后即可一键生成Shp数据文件,其成果如图2所示,图形及属性一次成型,大大减小了后期的编辑工作。经过实际测试,程序运行稳定、快捷、准确,极大提高了生产效率和成果质量。

图2 生成的Shp数据

5 结 语

目前Shp数据在国土资源和城市规划管理等工作中起着十分重要的作用,传统的数据转换方法或多或少存在一些不足。基于GDAL将CAD数据转换为Shp数据具有可自动化操作、无须依赖于GIS环境、开发难度低、运行效率高、运行稳定且开发难度相对较低等特点,具有一定的应用价值。本文利用GDAL成功实现了从CAD数据向Shp数据的转换,对技术人员具有一定的参考意义。

[1] 曲钢. 浅谈.shp数据格式的转换方法[J]. 北京测绘,2012(4):84~86.

[2] 安卫. 基于VBA的两证合一SHP数据制作自动化的实现[J]. 城市勘测,2011(2) : 141~143.

[3] 刘锋,张继贤,李海涛. SHP文件格式的研究与应用[J]. 测绘科学,2006,31(6):197~198.

[4] 纪海源,鲁纯,何远梅. VB实现DXF与SHP文件转换[J]. 辽宁省交通高等专科学校学报,2013,15(6):22~26.

[5] 左娟,李勇军. 基于FME 的GIS 空间数据互操作技术探讨[J]. 测绘标准化,2013,29(2):16~17.

[6] 林斌,杜珺. AutoCAD2012完全自学一本通[M]. 北京:电子工业出版社,2011.

The Method of Converting the CAD Data to Shp Data Base on GDAL

Liu Hongguang1,Wang Hongdong2,Liu Haicheng1

(1.Tianjin Institute of Geotechnical Investigation & Surveying,TianJin 300191,China; 2.The First Monitoring and Application Center,China Earthquake Administration,TianJin 300180,China)

Shp data is a common data format for geographic information data management. At present,It is widely used in land resources and urban planning management as the basis medium for data exchange and transmission. On the basis of comparing the advantages and disadvantages of the commonly used methods,the paper introduces the process and advantages and disadvantages of the method by using GDAL. The practice shows that the method combines the qualities of automatic operation,no need to rely on the GIS environment,the development of low difficulty,stable operation and so on. In the process of daily work,especially in the large batch of data conversion process the method has certain advantages.

GDAL;.CAD;Shp;data;convert

1672-8262(2017)03-71-04

P208.1

B

2016—10—25

刘宏光(1982—),男,工程师,主要从事工程测量、变形监测及测绘成图等方面研究。

中国地震局第一监测中心科技创新主任基金(FMC2016008)

猜你喜欢

空间数据二次开发图层
浅谈基于Revit平台的二次开发
GIS空间数据与地图制图融合技术
浅谈Mastercam后处理器的二次开发
解密照片合成利器图层混合模式
西门子Easy Screen对倒棱机床界面二次开发
巧用混合图层 制作抽象动感森林
跟我学添加真实的光照效果
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
国外建筑CAD图层标准发展现状与研究
网格化存储的几项关键技术分析