基于Map2Shp的MapGIS数据到ArcGIS数据的转换
2016-04-28梅红波杨迎东彭丹丹李骥华曹昌磊
李 芳 , 梅红波, 杨迎东 , 黄 成, 彭丹丹 , 李骥华, 曹昌磊
(1.a.中国地质大学 资源学院;b.计算机学院,湖北 武汉 430074; 2.云南省国土资源厅信息中心,
云南 昆明 650224;3.云南省地质环境监测院,云南 昆明 650216)
基于Map2Shp的MapGIS数据到ArcGIS数据的转换
李芳1a,2, 梅红波1a, 杨迎东3, 黄成3, 彭丹丹1a, 李骥华1b, 曹昌磊1a
(1.a.中国地质大学 资源学院;b.计算机学院,湖北 武汉 430074; 2.云南省国土资源厅信息中心,
云南 昆明 650224;3.云南省地质环境监测院,云南 昆明 650216)
摘要:由于长期以来我国国土及地矿行业所采用GIS软件主要是MapGIS 6.x,为了面向其他领域提供GIS空间数据共享,需要将大量MapGIS格式数据向ArcGIS格式数据转换。通过对MapGIS与ArcGIS两种数据格式的分析,提出了基于Map2Shp的转换方式。通过这种转换方式可以完整的保存MapGIS数据中的地理信息、属性以及要素特征。再通过匹配两种数据的颜色库和符号库,经过在ArcGIS中的渲染,从而实现从MapGIS到ArcGIS完整的制图表达。
关键词:Map2Shp;MapGIS;ArcGIS;数据转换;制图表达
随着计算机和网络技术的日益发展与普及,地理信息系统(GIS)以及在此基础上发展起来的“数字地球”、“数字城市”在人们的生产和生活中起着越来越重要的作用,应用也逐渐广泛[1]。各行各业对于GIS的需求使得一批功能强大的GIS软件出现。其中MapGIS作为一款优秀的国产GIS软件,具有地图编辑、基础数据处理及易于操作等优势,劣势则是它对空间数据库的支持以及其空间分析能力不太理想[2]。ArcGIS是美国软件公司研发的GIS产品,对空间数据库的支持功能比较强,比较适用于海量大数据的管理,但是其地图编辑、数据处理功能相对较复杂。因此许多单位或者用户选择在GIS软件时,由于侧重不同,所选择的产品也就不同。而由于这两种软件的数据类型不同,并不能直接使用,它们自带数据格式转换功能存在属性数据丢失或图形失真等情况,因此其数据转换的完善显得尤为重要。本文介绍了一种基于Map2Shp的从MapGIS到ArcGIS数据的转换方法。
1MapGIS与ArcGIS数据格式
MapGIS是武汉中地数码集团研发的一款国产GIS软件,其标准数据格式以不对外公开的加密文件形式存储。依要素类型,MapGIS的数据有点数据(*.wt)、线数据(*.wl)和面数据(*.wp)等[3]。一个文件中的要素可以对应不同的图层,当然一个图层也可以在不同的文件中存在。
ArcGIS是美国ESRI公司研发的,它的数据格式与MapGIS不同,与表示的几何特征没有关系,它的矢量数据格式主要有Shapefile、Coverage、Geodatabase和E00[4]。其中一个图形特征的Shapefile数据是由一组文件组成,包括主文件(*.shp)、索引文件(*.shx)和dBASE表(*.dbf)。主文件中存储的是Shape的位置信息,索引文件是对主文件的索引,指出主文件中的记录在文件中的位置信息,dBASE数据表文件存储Shape的具体位置和属性。
MapGIS的点文件包括:文字注释、子图、圆、弧、图像和版面。其中注释(版面也算是注释的一种)和子图(包括图像)对应的是ArcGIS 的Shapefile格式的点文件,圆、弧对应的是线文件和面文件。MapGIS的线文件和区文件对应的是ArcGIS的Shapefile格式的线文件和面文件。
本文主要讨论如何将MapGIS的常用点线面文件(重点是点文件)批量、快速、无损地转换成ArcGIS的Shapefile文件。
2国内外研究现状
根据MapGIS和ArcGIS软件本身的数据格式,由于ArcGIS不能直接读取MapGIS格式的数据,结合文件转换过程中MapGIS输出文件类型和ArcGIS输入文件类型的特点,MapGIS向ArcGIS数据个数转换主要可以通过以下几种方式实现。
(1)利用MapGIS转换模块直接转成Shape文件。通过MapGIS的图形处理菜单的文件转换模块,将载入的文件直接转换成shp文件供ArcGIS读取,转换后会多出(*.dbf)、(*.shp)和(*.shx)3个文件,这是最简单的方法,同样也错误最多。其转换后丢失了空间信息(地理坐标系和投影坐标系),不能进行投影,且缺少要素特征(如注释的文字内容、大小、方向及颜色,子图的子图号、大小、方向颜色、线型、颜色及大小等),属性字段较长容易发生丢失现象。致使后期在ArcGIS上因为信息丢失,再修改处理非常麻烦。
对于易丢失的属性,有人提出单独把转换的MapGIS文件的属性用“属性管理”功能模块导出成“*.dbf”格式,再替换掉直接转成shp文件的属性。用这种方法会产生属性名称长时会发生字段名截取的情况,后经验证是由于ArcGIS对字段名的要求最大长度为10个字节所导致。并且依然缺少空间信息和要素特征,给后期带来很大麻烦。
(2)先转成MIF文件再转成Shape文件。MIF是Mapinfo的通用ASCⅡ数据交换格式文件。先通过数据转换模块生成中间文件(*.mif)后,Mapinfo会在指定目录下生成两个文件(*.mif,*.mid)。其中*.mif文件包含文件头和数据节,保存了该表结构和表对象的空间信息(如点位坐标、线节点数据及区填充模式等)。而*.mid文件保存了每个空间对象的属性信息[5]。
文件*.mif,*.mid都为文本性质,可通过相应的文件读写方法实现对文件内容的读写。再由ArcMap打开MIF文件导出成Shape文件。虽然这种方式转换以后数据带了坐标系,但它并不符合数据要求,需将它清除再修改,并且这样转来的数据同样未保留要素特征。
(3)先转成E00文件再转成Shape文件。E00数据格式是ArcGIS系统支持的标准数据转换格式,可用于不同平台之间的数据转换,所以采用E00格式作为数据转换的中间格式。先用MapGIS自带的转换模块转换成标准的数据转换格式E00,然后用ArcGIS平台的Conversion Tools将E00格式转换成Coverage,最后同样使用Conversion Tools将Coverage转换成shp格式。
注释文字转过去之后对应位置变成了一条缺省颜色的直线,并且点文件的属性信息错乱丢失,转成shp格式后数据同样未保留要素特征。经过两次转换,各类信息严重丢失,且转换费时费力,1个点(线、面)文件历经3次转换,效果还不理想。
(4)利用FME来转换成Shape文件。加拿大的SAFE SOFTWARE公司一直专注于空间数据转换处理的研究,其著名产品FME 提出完整的空间数据提取、转换和加载的解决方案。通过提供在转换过程中重构数据的功能而非传统的同构转换,还能独立浏览并自定义转换,使得原始数据和目标数据相呼应,实现多种不同空间数据格式之间的转换,为进行快速、高质量、多需求的数据转换应用提供了高效、可靠的手段[6]。
遗憾的是目前FME并不支持MapGIS的读写和转换。为达到使用目的,可以利用国内比较流行的成品插件MyFME,这是一个需要搭配FME来使用的扩展集。虽然转换结果同样会出现线型信息丢失、子图信息丢失等问题。但是其可生成正确的空间信息,并且可以通过“语义映射”来修改源数据和目标数据的对应关系,最后把重要的要素特征写进属性里。
(5)通过Map2Shp软件来转换。本文通过Map2Shp软件,批量将MapGIS整个工程添加进来,可以直接生成Shape文件,不但其空间信息能够准确的转换过来,而且它能够把要素特征以属性的形式写进去。其为点文件所增加字段及其所对应的要素特征如表1所示。
表1 增加的点文件属性字段
由于ArcGIS规定Shape文件字段的最大长度为10个字符,因此上述所有转换当属性字段名长度超过10个字符时都存在字段名称被截断的现象,但是并不影响其属性内容的转换。前3种方式都不能生成正确的空间信息,前4种方式都没有记录要素的特征,这样就不能更快更方便的制图表达,所以后两种方式比较好,考虑到FME软件及其插件的安装比较复杂,操作起来更不容易上手,而Map2Shp转换工具安装方便,操作界面简单易懂,故本文选用Map2Shp作为基础转换工具,然后再对转换后的数据处理使得制图表达能够更接近原地图。
3数据转换
3.1转换前准备工作
(1)符号方面:由于二者平台的符号库差异,无法实现完美转换,需要在ArcGIS中扩展符号库。制作符号可以利用ArcGIS自带的符号拼凑,也可以利用FontCreator软件绘出符号生成字体文件被ArcGIS的Character Symbol识别而加载,然后建立符号库。但利用自带的符号拼凑在放大一定程度后会出现连接缝隙从而影响美观。本次利用FontCreator建立符号库,其部分字体如图1所示。
图1 字体符号库
(2)颜色方面:由于MapGIS只提供颜色号,所以需要建立颜色映射表。每个颜色号对应的RGB值可以用调用API函数GetColor RGB Value获取[7]。其所读取SLIB库获取颜色号映射的RGB信息输出为MDB形式(图1)。
图2 获取颜色插件
(3)投影方面:利用Map2Shp转换需要MapGIS格式的文件具有正确的投影信息,否则转换后文件无法正确显示。所以转换前需检查MapGIS数据投影信息是否正确,如果无投影信息可根据图里坐标等信息自行添加。
(4)点符号方面:对于点符号类型Map2Shp软件除了版面类型其他均可转换,版面点类型可在转换前在MapGIS中转为注释点类型即可实现转换。
3.2转换流程
本文制定一套可行性转换方案,大致分为:准备阶段、文件转换及入库、地图渲染、优化地图[8]4个阶段(图3)。
图3 转换流程
(1)准备阶段:此阶段需将源格式数据精确检查,如拓扑检查和投影信息检查,以确保转换之前的数据完整性,MapGIS提供的数据压缩存盘进一步保证了数据信息的完整性。同时还需根据项目中用到的颜色、符号等(一般MapGIS源文件中会单独以pdf形式保存用到的颜色、符号等信息)信息建立MapGIS-ArcGIS颜色映射表、符号映射表和字体映射表等,在ArcGIS中制作符号库。这些映射表和符号库的建立非常有用,对于无论用何种方法实现二者平台数据的转换都有很好的通用性。
(2)文件转换及入库:转换工作数据的完整性非常重要,修复几何和拓扑检查可以很好的保证这一要求,由于转换的Shapefile数据格式没有拓扑关系,所以此时新建Geodatabase然后导入Shapefile,一方面由于数据成果本来就需入库,另一方面保证了在渲染前拓扑规则的检查,拓扑规则需根据专题数据要求具体而定,如常规的线重叠、悬挂线、面不封闭及相邻面不能相交等规则。如果在地图渲染后入库,其有错误拓扑关系的线和面也被渲染了,那么保存的mxd文档与实际入库图形数据就有差别了,所以此时入库检查拓扑后再渲染,保存一份mxd文档,保证了渲染、图形数据一致。
(3)地图渲染:两个平台渲染方式的差别是转换工作量之所在,ArcGIS的渲染是依赖属性表的动态渲染,保存在mxd或lyr文件中,和空间等信息完全分离,而MapGIS所有渲染信息和空间信息均保存在工作区间中[9]。Map2Shp软件将MapGIS格式的各种类型文件的参数和属性信息均写入ArcGIS属性表中,极大的方便了渲染工作,需要注意的是2种数据的地图表达机制也略有不同,所以在ArcGIS中渲染之前需更改一些信息,如线宽若要在ArcGIS中表达一致需将源格式线宽乘以5倍左右才得以相似表达,点符号的角度需要360-MapGIS中的角度才能使符号方向显示一致。本次利用开发的一键渲染插件实现各类要素及标注的完美渲染,对于点、线、面,由于每个类型要素都是根据不同字段渲染,点(子图号,子图颜色,字体大小)、线(线型、线颜色、线宽)及面(颜色、填充图案),利用唯一值、多个字段以及映射表笔者开发了要素渲染扩展插件(图4),对于不同要素区别渲染,简化了人为编辑工作量。
图4 ArcGIS插件示意
其中第一个文本框为标注的渲染代码文本文件,第二个文本框为制作的ArcGIS符号库,第三个文本框为MapGIS颜色号——RGB映射表。
(4)优化地图:上述工作完成后,数据的转换工作基本完成,优化地图是为了让地图与源数据更加贴合或者说看上去更加美观。如在标注引擎上ArcGIS提供了2种引擎,选择Maplex Label Engine会让标注更加美观;MapGIS利用还原显示开关以及静态标注增加地图显示效率,而ArcGIS的数据显示一般都为动态,显示效率不高,在ArcGIS中将标注转为注记以及设置标注层“ScaleRange”会明显提高地图显示的效率并且可以微调注记位置,需要注意的是依赖属性的动态标注时偶尔会出现遗漏,而在标注转为注记时可自行检查遗漏的标注;由于ArcGIS只提供了至多根据3个字段的符号化,从而限制了转换过后的地图美化,此时可利用ArcGIS提供的高级制图表达Representation,其特点是可以针对每个要素进行渲染而不只是根据属性,当然这也是需要Geodatabase格式数据的支持。
3.3对照
以云南省某县防治区划图为例,采用前述方法进行转换后,结果如下:图5为转换前MapGIS格式的地图,图6为转换后ArcGIS格式的地图,两个地图中点、线及区的几何属性具有良好的一致性;表2为转换前MapGIS地图中记录的某区图元的属性,表3为转换后ArcGIS地图中记录的区图元属性(附加了一些渲染属性),属性信息也被完整转换。
表2 MapGIS中某区图元的要素属性
表3 ArcGIS中某区图元的要素属性
图5 MapGIS数据的地图
图6 转换后ArcGIS的地图
4结语
MapGIS数据转换成ArcGIS数据的方法有许多种,本文充分利用了Map2Shp软件,再结合对于MapGIS和ArcGIS的二次开发,可以快速、批量、不丢失信息、制图表达完整地进行转换。从而我们既能利用MapGIS便捷的画图功能,又能够方便地利用起ArcGIS强大的空间数据分析能力。大量实践表明,采用本文的技术实现MapGIS数据到ArcGIS数据的转换,可以更加高效便捷。
参考文献:
[1]江丽,胡辉,周初阳,等.MapGIS图形数据转换方法研究与实现[J].江西测绘,2011,(4):62-64.
[2]彭兰霞,凃颖.MapGIS与ArcGIS数据转换实现方法探讨[A].“信息化测绘论坛”学术年会论文集.2007.
[3]靖娟利,王永锋.一种MapGIS到ArcGIS数据转换方法[J].工程勘察,2013,(7):50-53.
[4]徐丹丹,邵龙义.MapGIS数据向ArcGIS转换方法探讨[J].科技信息:学术版,2007,(24):50-50.
[5]张燕梅,赵伟.MapInfo通用数据交换格式的解析与应用[J].电脑编程技巧与维护,2009,(21):19-22.
[6]郑士科,吴良林,陈务开,等.利用FME实现MapGIS向ArcGIS的数据转换[J].地理空间信息,2011,9(6):155-157.
[7]方坤,吴信才.GIS矢量数据跨平台转换研究[J].测绘通报,2009,(8):60-63.
[8]张龙,汪新庆,刘岳,等.一种MapGIS向ArcGIS地图数据转换的方法[J].测绘科学,2014,39(7):146-149.
[9]邱洪钢,张青莲,熊友谊.Arcgis Engine地理信息系统开发从入门到精通[M].北京: 人民邮电出版社,2013.
The Data Conversion of MapGIS to ArcGIS Based on Map2Shp
LIFang1a,2,MEIHong-bu1a,YANGYing-Dong3,HUANGCheng3,PENGDan-dan1a,LIYi-hua1b,CAOCang-lei1a
(1.a.Faculty of Earth Resources;b.College of Computer Science,China University of Geosciences,Wuhan 430074,China;2.The Information Center of Department of Land Resources of YunNan Province,Kunming 650224,China;3.YunNan Geological Environmental Monitorinig Institute,Kunming 650216,China)
Abstract:MapGIS 6.x is mainly used in land and the mining industry in our country for a long time.In order to providing GIS spatial data sharing in other areas,we need to convert a lot of MapGIS data to ArcGIS data.The article has told us a data conversion method based on Map2shp by analyzing data format of MapGIS and ArcGIS.In this way,geographic information,properties and elements characteristics can be preserved completely.Then,by matching the color and symbols library of the data of MapGIS and ArcGIS and the rendering in ArcGIS,we can realize complete drawing expression from MapGIS to ArcGIS.
Key words:Map2Shp;MapGIS;ArcGIS;data conversion;drawing expression
中图分类号:P208
文献标志码:A
文章编号:1009-4210-(2016)01-086-07
作者简介:李芳(1978—),女,博士研究生,从事国土资源信息化的研究。E-mail:41945806@qq.com通信作者:梅红波(1970—),男,副教授,从事资源定量评价与地学信息系统开发研究。E-mail:hbmei@cug.edu.cn
基金项目:云南省地质环境信息化建设试点项目(530000HT201307552)
收稿日期:2015-05-11;改回日期:2015-07-14
doi:10.3969/j.issn.1009-4210.2016.01.012