从MicroStation数据格式到ArcGIS数据格式转换的研究
2010-04-19李海旭
李海旭
(珠海市测绘院,广东珠海 519000)
从MicroStation数据格式到ArcGIS数据格式转换的研究
李海旭∗
(珠海市测绘院,广东珠海 519000)
随着GIS技术的蓬勃发展,GIS在各个领域的应用日益广泛,许多行业对GIS数据的需求不断扩大,如何将现有的测绘数据或制图数据转换为GIS数据是获得GIS数据的有效捷径,本文通过分析MicroStation的数据格式,提出了如何利用软件的二次开发接口来实现数据格式转换的可行性方法,同时讨论了该方法具有可扩展性。
MicroStation;ArcGIS;二次开发;数据转换
1 引 言
MicroStation作为国际优秀的图形设计平台,被国内许多城市勘测单位所采用,主要用于测绘生产和建库,而ArcGIS作为国际GIS领域的顶级优秀软件,被广泛地应用于各个行业,由此对GIS数据的需求日益增加。如果将现有的测绘数据及制图数据全部或部分转换为GIS数据,在很大程度上节约了人力和物力,是加工制作GIS数据的有效捷径,对促进行业GIS的应用和发展具有重要的实际意义。
本文先对MicroStation及ArcGIS数据进行分析,然后利用MicroStation的MDL二次开发接口将图形信息转换为可用于交互的明码信息,再利用ArcGIS软件的二次开发接口将所提取的明码信息转换成ArcGIS的Shape矢量数据格式,这一转换方法可应用于同类软件数据格式的转换。
2 数据格式说明
MicroStation是Bentley公司推出的一款功能强大的图形设计平台,MicroStation的数据格式为 Dgn文件。一个Dgn文件包含一个或多个模型,每个模型由直线、圆弧和多边形等元素表示。
ArcGIS支持的矢量数据格式包括 Shape、Coverage、Geodatabase,Shape数据是ArcView 3.x的原生数据格式,属于简单要素类,用点、线、多边形存储要素的形状,具有简单、快速显示的优点。Shape数据一般由∗.shp、∗.shx、∗.dbf 3个文件组成。空间信息和属性信息分别存储于∗.shp和∗.dbf,空间索引存储在∗. shx文件中。
本文所要研究讨论的就是要将 MicroStation的 Dgn数据格式通过二次开发转换为ArcGIS的Shape矢量数据格式。
3 数据格式转换流程
MicroStation数据格式(∗.dgn)转换为ArcGIS的Shape矢量数据格式流程如图1所示。
图1 数据格式转换流程图
4 明码文件的提取方法
4.1 明码文件说明
明码文件是将地图文件的空间信息如坐标、空间关系及其他相关的专题信息提取出来,按一定的顺序存储于文本文件中,以供二次开发或其他数据处理使用。
有些软件(诸如MicroStation)的明码文件信息提取的类别及存储格式可以由开发者按照需要自行定义,可以选择性的提取自己所需要的信息,这样大大增加了灵活性。有些软件(诸如MapGIS)的明码信息由软件自动提取,无法自定义提取。
第一种方式的优点是可以自定义明码文件信息提取类别及存储格式,缺点是不同用户提取的明码文件无法通用;第二种方式的缺点是无法自定义明码文件信息提取类别及存储格式,优点是不同用户提取的明码文件可以通用,并且可以直接导入到软件来使用。本文所研究讨论的是第一种方式。
4.2 MicroStation明码文件提取方法
MDL(MicroStation Development Language)是 MicroStation的C环境开发语言,其功能强劲。事实上,MicroStation的很多功能都是用MDL开发的。MDL是MicroStation的“应用引擎(Application Engine)”,MDL可以直接在MicroStation中运行并且表现为MicroStation本身的一部分。许多MicroStation的命令都可以在MDL中应用。
利用MDL可以自定义提取MicroStation的明码文件,由于篇幅所限,本文只给出要素提取函数ProcessElement的算法,算法描述如下:
提取明码并将明码存储于文本文件 (∗.pnt)中,用不同的标示符标记类别,比如点要素用P+类别号(P211200)表示;线要素用L+类别号表示(L211100);单行注记用T表示,多行注记用TT表示,自定义类别符号便于在转换时进行编程实现,所提取的明码文件的样例如图2所示。
在定义明码格式时需要注意以下几个方面:
(1)统一数据分隔符。明码文件中数据或字符间的分隔符要统一,比如统一用空格或统一用分号(;),但不能混用,这样不利于编程。
(2)统一数据精度。明码文件中数据的精度要统一,且精度不能太低,比如图2中的数据精度为6位,那么文件中所有数据统一保留6位,这样可以减小误差。
(3)统一命名规则。明码文件可以按照比例尺及图幅命名,图2中文件名为kIV-23-4,代表500比例尺第四象限23行4列图幅,这样便于检查比对。
图2 提取的MicroStation明码文件
5 明码文件转换为ArcGIS数据
5.1 ArcGIS开发环境简介
ArcGIS Engine是一组完备的并且打包的嵌入式GIS组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。
使用ArcGIS Engine,开发人员可以将GIS功能嵌入到已有的应用软件中,如自定义行业专用产品;或嵌入到商业生产应用软件中,还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。
本文主要调用 ArcEngine中 esriCarto类库下的IGeometry、Ilayer及IFeatureLayer等接口;esriGeoDatabase类库下的 IFeatures、IFeatureClass及 IWorkspace-Edit等接口。
5.2 明码文件转换为Shape数据实现
明码文件生成Shape矢量数据主要通过对明码文件利用ArcEngine二次开发实现矢量数据转换,其中转换的VB6关键部分代码如下:
MicroStation数据格式Dgn包含点、线、注记等类别要素,不包含面要素,所以明码转换为Shape文件的要素类别为点或者线,如果需要转换为面,需要对点线进行拓扑构面(ArcGIS Desktop提供拓扑工具),明码转换为Shape文件的样例如图3所示。
实际工作中,先定义提取要素类别及存储格式,然后根据定义好的明码格式,利用MDL编程实现提取地图要素,编写程序时需要注意以下几个方面:
(1)可以实现批量转换。程序可以添加多个明码文件进行转换或指定目录自动识别明码文件进行转换。
(2)可以实现增量转换。根据需要可以将明码文件转换为一个Shape文件或多个Shape文件,比如要对Shape数据分层管理,将不同类别要素转换为不同的Shape文件。
(3)避免重复转换。如果重复选择相同的明码文件,自动识别已经转换的明码文件,停止重复转换。
(4)对转换数据的后续处理。一般需要对转换后的数据进行接边及拓扑等操作。
图3 明码文件转换Shape文件样例
6 总 结
本文主要给出了从MicroStation数据到ArcGIS矢量数据的转换方法,即通过调用MicroStation的MDL提取明码文件,然后利用ArcGIS二次开发接口将明码文件转换为Shape矢量数据格式。该方法具有很大的灵活性,可以选择性的提取地图要素,即可以定制转换参数;同时该方法具有可扩展性,即同类软件间数据转换可参照该方法,比如 MapGIS的数据格式转换为ArcGIS的数据格式;MapGIS的数据格式转换为Super-Map的数据格式及MicroStation的数据格式转换为SuperMap数据格式等都可参照该方法。
[1]宋关福.王尔琪 MicroStation开发语言(MDL)应用教程.中国科学院地理信息产业发展中心,1996.10
[2]刘仁义,刘南.ArcGIS开发宝典.北京:科学出版社[J]. 2006.
[3]ESRI,ArcGIS Engine Developer Help 9.2 C++Help[M].
[4]ESRI.ArcGIS Desktop 9.2 Using Help[M].
Transform of Data Format From Microstation to ArcGIS
Li HaiXu
(ZhuHai Surveying and Mapping of Institute,ZhuHai 519000,China)
Following as technology of GIS’s rapid development,it have been largely applied in many fields.The data of GIS’s needs has become larger and larger.It is a shortcut to transform available surveying data or special map into data of GIS.The paper discusses and gives a feasible method by re-developed interface of microstatiion and arcgis.Finilly it discusses its extensity.
Microstation;ArcGIS;Re-developement;Data Tansfrom
1672-8262(2010)03-41-04
P208
B
2009—12—28
李海旭(1970—),男,工程师,主要从事测绘与GIS数据处理工作。