湖南省1∶1万入库E00格式基础地理信息数据库地形图向MapGis转换程序设计与应用

2016-05-03 05:42刘铁标赵龙湖南省煤炭地质勘查院湖南长沙410014国防科学技术大学计算机学院网络所湖南长沙410073
国土资源导刊 2016年1期
关键词:VB程序设计

刘铁标,赵龙(1.湖南省煤炭地质勘查院,湖南 长沙 410014;.国防科学技术大学计算机学院网络所,湖南 长沙 410073)



湖南省1∶1万入库E00格式基础地理信息数据库地形图向MapGis转换程序设计与应用

刘铁标1,2,赵龙2
(1.湖南省煤炭地质勘查院,湖南 长沙 410014;2.国防科学技术大学计算机学院网络所,湖南 长沙 410073)

摘 要在地质工作中经常遇到收集的图件资料格式不一,如何转换与共享一直是个难题,湖南省基础地理信息1∶10000数字线划图入库数据就是使用ESRI的E00通用交换格式,虽经MapGis6.7文件转换能自动转换,但转换后的点线面文件丢失图形参数,尤其注释信息全无,无法还原,需手工逐步添加与修改,工作量大且易出错,作者通过对MapGis6.7转换后点、线、面文件进行分析,并与E00格式文件进行对比,找出对应关系,提出注释分字符中心点位算法,利用Visual Basic6.0编程,实现MapGis转换后的点线面文件一次性自动转换,完成地形图E00格式到MapGis6.7格式的完全自动转换与对接,简化工作,提高效率,也为其它格式的入库地形图数据转换提供参考与借鉴。

关键词E00数据;MapGis地形图转换;VB程序设计;属性提取

近日笔者单位在一个煤炭地质勘查立项项目中急需要用一批1∶1万数字化地形图作为底图,而湖南省基础地理信息中心只有纸质图或E00格式图。由于任务重,时间紧,工作区范围较大,若买纸质版的地形图进行扫描矢量化形成数字化地形图,无法在规定时间完成任务;若要求原承担E00数据生产单位转换成MapGis数字化图,也需较长时间,无法赶上进度,影响本次立项设计与报告提交。

本人通过对E00格式入库地形图数据进行了解与分析,选择购买E00格式入库地形图数据自行编程进行转换。E00的文件是ESRI的一种通用交换格式文件,这种文件通过明码的方式表达了Arc/Info中几乎所有的矢量格式以及属性信息,广泛应用于与其他软件之间进行数据交换。该数据无法直接使用现有GIS软件打开并形成完整的地图形数据,需对图层文件中的图元按《1∶5千,1∶1万地形图图式》规范要求进行属性提取,按CODE代码生成图形要素及标注注记等,再对其进行图幅整饰方可显示为标准地形图数据。本文在MapGis6.7平台基础上,对该类E00入库数据进行研究,利用VB 在MapGis中进行二次开发,实现E00数据格式与MapGis格式标准地形图的自动转换。

1 原始数据分析

1.1 数据的图层划分

湖南省第三测绘院生产的E00格式基础地理信息数据库地形图共划分为16个图层,各图层的几何特征及图层数据内容见表1。不同生产单位图层划分也不一样,本文以第三测绘院生产的E00数据为例。

表1 地形图入库数据库图层的划分Table 1 Topographic map database partition storage layer

1.2 地理要素数据分类与代码

1.2.1 地理要素数据分类

根据规范与建库要求,地形图矢量化要素共分测量控制点、水系、居民地与建(构)筑物、交通、管线及附属设施、境界、地貌与土质、

植被及辅助要素9大类。

1.2.2 地理要素数据分类代码

地理要素均具有CODE(分类代码)属性字段,该字段字的详细定义见表2。不同生产单位地理要素数据分类代码也不一样。

表2 地理要素数据分类代码Table 2 Geographic feature data classification code

2 数据转换

2.1 图形数据转换流程

批量E00格式图层文件经MapGis转换后得到大量信息不完整MapGis格式的点线面文件,再经自主开发程序“地形图转换工具”自动转换,得到完整的MapGis格式全要素地形图。数据转换流程如图1所示:

图1 数据转换流程图Fig.1 Data conversion flowchart

在MapGis6.7批量文件转换中,将原始E00格式文件转换形成MapGis的点、线及面文件,但直接转换得到的点线面文件未体现完整属性内容,因此需再对各图层属性进行提取或图元参数按数据字典进行修改复原,才能编绘出完全正确的地形图(表3)。

2.2 特殊要素转换及参数修改

根据数据的图层划方案及文件转换得到的点线面文件进行属性结构分析,分别处理各图层

表3 原始E00文件与MapGis图层文件转换对照表Table 3 E00 original file MapGis layer file conversion table

文件图元数据,按照图层数据属性代码及地理要素分类代码表修改图元数据及生成注记。下面对线文件属性提取生成点注记、点文件按代码规范要求更改点图元参数及提取属性生成注记、线文件按代码规范要求更改线图元参数、区文件按代码规范要求更改区图元参数等几个方面讲述转换技巧与方法。

2.2.1 线文件属性提取生成注记

以图层文件“A.WL”为例,该图层包含图内地名、水系、道路等级等注记,其属性结构件表4:

表4 注记图层属性结构表Table 4 Annotation layer attribute table structure

在矢量编辑中添加A.WL文件,利用线文件自动线标注对TEXT字段属性进行标注,再对标注结果文件进行编辑。若如此对线文件自动属性分段标注,则存在问题:①注释标注在注释线上方,未依线为中心注记;②只能生成统一字体及字大小的注释;③道路等级标注无需分段注释,且没与道路方向线垂直标注。处理好线文件按属性自动正确标注是本次转换中遇到的最难解决问题,因此采用VB对MapGis进行二次开发以转换线文件属性生成注记点文件,以实现斜向分字符注记。地形图转换程序从线文件中提取属性内容生成居民地、道路等级及水系注记的转换效果如图2,图2a中的线方向转成注记的标示方向,线的TEXT字段属性转换成注释文字。

为解决上面难题,用注释分字符中心点位算法:

图2 按线图元属性生成注记文件Fig.2 Generating annotation files by line Element Properties

(取值n>1,i:1~n)

式中:Px0、 Py0为线段的起点, k为线段斜率,为第i个字符注释的中心位置, D为注释线段的长度。

2.2.2 点文件按代码规范要求更改点图元参数及

提取属性生成注记

E00数据经MapGis自带的文件转换工具转换后生成的点文件内容仅是子图图元,不能直接作为结果图形文件,其子图图元存在参数不符合成图的要求,且子图图元某些属性未提取生成注释等问题。如高程点图元高程值属性未标注、控制点图元中控制点名及高程值需按地形图图式要求进行标注及独立地物的图形参数不正确等。若要处理此类问题,则需提取相应的属性值生成注释,其子图图元参数需按要素代码CODE属性值进行相应修改。用程序转换的高程点、独立地物及控制点效果见图3。

图3 按点图元属性修改参数并生成注释Fig.3 Press point element properties modify the parameters and generate comments

2.2.3 线文件按代码规范要求更改线图元参数

以高等线图层文件“E.WL”为例,该图层文件包含地形等高线数据,其的属性结构如表5。

针对此类文件,一般可以在矢量编辑中添加

表5 等高线图层属性结构表Table 5 Contour Layer Properties Structure Table

相应的线文件,可利用线编辑中的根据属性赋参数修改线颜色及线型线宽等线图元参数,不过手工修改相对麻烦,且修改工作量大,若不同CODE属性值较多时,无法确保所有图元均被修改。如等高线需按高程值区分首曲线与计曲线;坎、小路、铁路及地类线等需修改为相应的颜色、线型及线宽等参数。用程序转换对等高线、坎、小路、铁路及地类线等线图元要素转换效果如图4。

图4 按线图元属性修改参数Fig.4 Press line element properties to modify the parameters

2.2.4 区文件按代码规范要求更改区图元参数

在矢量编辑中按代码规范要求修改图元参数,并利用根据属性修改区图元参数。转换程序自动对居民地、植被及水系等图层文件区参数修改效果如图5。

2.3 图幅整饰

原始数据仅包含图幅内边框线,无图幅图框等信息,利用MapGis自带的投影变换程序可根据图幅号生成标准图框。

3 程序设计

MapGis作为成熟实用的地理信息系统(GIS),它提供给用户二次开发能力。MAPGIS提供完整的二次开发函数库,MAPGIS二次开发函数库包括:工作区基础函数、图形显示输出、工作区管理函数、图形窗口操作、空间分析函数、地图库读取显示、图形编辑函数等。用户完全可以在MAPGIS平台上开发面向各自领域的应用系统。MAPGIS二次开发函数库支持的语言包括Borlandc++、Visualc++、Visualbasic等高级语言程序设计环境。本文利用Visualbasic对MapGis进行程序设计。

3.1 数据库设计

图5 居民地、植被及水系等要素转换效果图Fig.5 Residential areas,vegetation,and water systems and other elements of the conversion renderings

数据库采用Access数据库,数据库分两类数据表:一类是系统功能约束的数据表,设定数据转换方案及图层转换函数与文件输入、输出对照关系的数据表;一类是属性代码与图元参数的对照表,包含点、线、面三种要素的对照信息,详见表6~10。

表6 系统功能约束的数据表(SysTable)Table 6 System functional constraint data table

表7 子图元要素分类代码与参数对照表(PntTable)Table 7 Sub-pixel elements of classification codes and parameters table

表8 线图元要素分类代码与参数对照表(LinTable)Table 8 Line element element classification codes and parameters table

表9 区图元要素分类代码与参数对照表(RegTable)Table 9 Area element element classification codes and parameters table

表10 注记要素分类代码与参数对照表(ZjTable)Table 10 Annotation feature class code and parameter table

3.2 转换函数设计

为了保持程序的灵活性,把程序功能与数据进行了分离,主要设计了四个程序函数,通过读取数据表为输入参数对原始数据进行转换处理(表11)。

表11 转换函数功能表Table 11 Contour layer properties structure table

3.3 转换程序设计

程序界面如图6,左边为MapGis转换后存放文件目录,右边依次为转换方案、转换图层及转换文件,其中转换文件可选整个图层转换,也可选定单个或多个文件转换,转换结果文件自动放在原来对应的目录下,程序效果如下:

转换程序无需安装,只要有MapGis6.7平台支撑电脑上双击主程序即可运行,程序主操作界面如图6所示,转换操作步骤:①在左侧选择MapGis文件转换模块批处理过的E00数据文件目录;②在主程序右侧下拉选择转换方案,并点击查询转换图层按钮;③点击下方图层转换按钮,程序自动转换相应的图层文件内容到对应的输出文件。

需要说明的是,湖南省的入库E00数据由我省第二测绘院及第三测绘院两家最大基础地理数据生产加工单位完成,数据图层划分不尽相同,代码数据字典约束也不一致。本次开发的转换工具利用数据库方式对转换处理操作进行数据表约定,实现了对不同数据规范的自动转换。

图6 程序运行界面Fig.6 The program's interface

4 程序应用

我们应用此开发程序完成批量文件自动转换,已完成几十幅图的成图,经实际检验,要素完整,属性全面,内容正确,此程序在我们成图工作应用中得到反复检验与有效应用。

如图7所示,是稼书园(G49G006062)图幅地形图应用此程序转换的成果图。从图中可看出,图a E00数据文件经MapGis转换得到的图形显得非常杂乱,点线面图形参数均不正确,且无任何注记类注释,图形信息严重丢失。图a中点线面文件经自主开发程序转换后得到图b结果图,图形各参数正确,注记规范,各图形要素完整,配合图幅整饰后形成了一幅完整的地形图,此转换一次性自动完成,非常方便与快捷。

图7 地形图各图层要素转换前后对照图Fig.7 Topographic map features into each layer after images

5 结论

通过对入库E00格式地形图数据的分析,以MapGis6.7为绘图编辑平台,对MapGis自带的文件转换模块直接转换E00数据生成的点、线及面文件,依据原E00数据建库规范,从对线文件属性提取生成点注记、点文件按代码规范要求更改点图元参数及提取属性生成注记、线文件按代码规范要求更改线图元参数、区文件按代码规范要求更改区图元参数等方面研究如何在MapGis中形成标准的地形图要素,并利用Visual Basic6.0 在MapGis基础上开发了转换工具,该程序通过建立分类代码与图元参数对照表及系统功能约束

数据表Access数据mdb文件,且支持不同的转换方案,能完成E00格式入库地形图数据向MapGis图形文件的自动转换工作。该成果已成功应用到我院煤炭地质勘查立项项目中E00数据地形图转换工作,且转换效果很好,极大提高了工作效率,也为其它格式的入库地形图数据转换提供参考与借鉴。

参考文献/Reference

[1]求是科技.Visual Basic6.0程序设计与开发技术大全[M].人民邮电出版社,2004.

[2][美]哈尔弗森(Malvorson,M.).Visual Basic2005从入门到精通[M].汤涌涛,等,译.清华大学出版社,2006.

[3]MAPGIS二次开发培训教程 中地软件丛书编委会,2001.

Hunan 1∶10000 Basic Geographic Information Storage E00 Format Database Program Design and Application of Topographic Map to Convert MapGis

Liu Tiebiao1,2,Zhao Long2
(1.Hunan Coal Geological Exploration Institute,Changsha Hunan 410014;2.Computer Science,National University of Defense Technology networks,Changsha Hunan 410073)

Abstract:In geological work often encountered collected maps of varying data formats,how to convert and sharing has been a problem,Hunan,geomatics 1:10000 DLG data warehousing is the use of ESRI's E00 common interchange format,despite MapGis6.7 file conversion can be automatically converted,but the converted file is missing the point,line and plane graphics parameters,in particular,no annotations,you can not restore,you need to manually add and modify gradually,heavy workload and error-prone,the author of MapGis6.7 after the conversion point,line,surface files are analyzed and compared with the E00 format file,find the corresponding relationship between the proposed sub-character comment center bit algorithm,using Visual Basic6.0 programming,MapGis converted file once-point line of automatic conversion,complete topographic map of E00 format to MapGis6.7 fully automated docking with the format conversion,simplifying the work to improve efficiency,but also provide reference and experience for the storage of topographic map data conversion to other formats.

Key Words:E00 data;MapGis topographic maps;VB programming;attribute extraction

收稿日期:2016-1-5;改回日期:2016-2-23。

*第一作者简介刘铁标,男,1980年生,软件设计师,测绘工程、软件工程硕士,主要从事矿山数字化信息建设工作。E-mail:138714989@qq.com

文章编号:1672-5603(2016)01-080-6

中图分类号:P628+.1

文献标识码:A

猜你喜欢
VB程序设计
“VB程序设计”基础课程教学改革探索与实践
“VB程序设计”基础课程教学改革探索与实践
“VB程序设计”基础课程教学改革探索与实践
对分模式下《VB程序设计》的大课堂教学改革探索
浅谈VB程序设计的教与学
贯穿式案例教学法在《VB程序设计》中的实践研究
一体化教学在《VB程序设计》课程中的实践研究
浅析VB程序设计教学方法的改革
VB程序设计的教学改革思考
食品专业的《VB程序设计》教学方法探究