武世虎
(山西省煤炭地质115勘查院测绘技术中心,山西大同037003)
基于C#.NET的DWG到ShapeFile格式转换程序实现
武世虎
(山西省煤炭地质115勘查院测绘技术中心,山西大同037003)
测量外业采集数据成图后多为DWG格式,而建立GIS系统入库时的数据格式大多为Shapefile格式,存在数据采集格式到数据成果提交格式不一致的问题。使用C#编程语言开发DWG数据转ArcGIS数据程序,解决这一问题。
DWG;Shapefile;格式转换;C#;ArcGIS Engine
DWG格式是Autodesk公司计算机辅助设计软件AutoCAD保存设计数据所用的一种专有文件格式,是制图绘图行业的事实工业标准[1]。Shapefile是Esri公司开发的空间数据开放格式,其已经成为了地理信息软件界的一个开放标准,成为一个非常重要的交换数据格式,基本上所有的GIS软件都支持Shapefile的读写。
目前,测量外业采集数据成图后多采用DWG格式存储的,这种格式缺乏对空间数据信息的描述和分析能力,通常只能作为GIS空间信息数据库入库时的基础数据源。为充分利用已有的数据资源,就必须有一个切实可行的处理方法,将已有的AutoCAD数字地形图数据转换为适用的GIS数据,以便更高效地建立城市基础地理信息数据库[2]。
从DWG格式到ShapeFile格式的转换主要有两种策略:
(1)非开发策略。如用ArcGIS软件的ArcToolbox工具箱中ConversionTools和Data Interoperability Tools数据格式转换工具,通常也仅仅是达到显示图形目的,但对GIS建库来说,完整的GIS数据应该包括图形几何要素和关联属性数据。这种策略操作步骤复杂繁琐,还存在属性数据转换不完整等问题。
(2)开发策略。选择恰当的编程语言,使用编程开发方式,可以有效地避免上述问题。这种策略还有一个明显的优势就是不用单纯为了实现数据格式的转换而费时费力安装ArcGIS软件。
ArcGIS Engine是一组完备的并且打包的嵌入式GIS组件库和工具库,可用于构建自定义GIS和制图应用软件。由两个产品组成:构建软件所用的开发工具包以及使已完成的应用程序能够运行的可再发布的运行时环境Runtime[3]。
C#是一种简洁的、类型安全的面向对象语言,它能使开发者构建很多在.NET Framework上运行的安全健壮的应用程序。
编写代码实现将DWG转换成SHP分成读写两个步骤,先读DWG格式再写SHP格式。笔者选择采用AE和C#2012进行组件式开发,图形和属性分别转换,图形分成Point,Polyline,Polygon,Annotation转换写到*.shp文件,属性转换写到*.dbf文件,再将图形数据和属性数据之间由索引文件(*.shx)关联起来,实现DWG到SHP的格式转换。
程序流程图,见图1。
图1 流程图
该程序在农村宅基地测绘项目中得到了应用,并对比了两种策略转换数成果,证明了这种编程转换技术的正确性和可行性,相对于第一种策略需要安装大型ArcGIS软件才能实现而言,第二种策略确实操作简单方便,提高了作业人员的工作效率。
通过C#+ArcGIS Engine组件式开发方式,实现了DWG到SHP数据格式转换程序设计,并且图形数据和属性数据可分层选择转换,能够灵活定制SHP的属性字段,有使用推广价值。
[1]肖锋,吕宝奇,林蒙恩.DWG到SHP格式转换技术的研究与实现[J].测绘与空间地理信息,2013(9):87-89.
[2]陈能,施蓓琦.AutoCAD地形图数据转换为GIS空间数据的技术研究与应用[J].测绘通报,2005(8):11-14,34.
[3]邹建成,孙国平.基于ArcGIS Engine与C#下的城镇地籍管理信息系统的研究与实现[J].城市勘测,2009(4):29-31.
[4]文学东,钟文军,祝方雄,等.基于Geodatabase的CAD到ARCGIS数据入库研究[J].测绘科学,2006,31(6):100-102.
[5]宋伟东,符韶华.DLG到GIS的数据转换方法研究[J].测绘通报,2004(2):54-56.
Conversion from the DWG to ShapeFile Program Realization Based On C#.NET
WU Shi-hu
(Surveying and Shanxi Coal Geological Exploration Institute,Datong Shanxi,037003)
We use DWG Format in most surveying and mapping data collection in field work,but establish the GIS database with shapefile format.Inconsistencies exist between the two.It is to solve this problem by programming
DWG;shapefile;format conversion;C#;ArcGIS Engine
P208
A
1674-0874(2016)01-0073-02
2015-09-30
武世虎(1986-),男,山西孝义人,助理工程师,研究方向:工程测量、沉降观测、不动产测绘。
〔责任编辑 王东〕