2023年11月23日发(作者:)

基于组件技术的GIS数据格式转换方法

田劲松;高飞;胡小华

【摘 要】本文在介绍MapObjects技术和shape文件的基础上,重点分析此次数

据转换的方法和过程.最后,介绍基于Visual Baisc6.0MapObjects技术开发的

地理信息系统的实例,并在系统中调用转换后的shape文件.

【期刊名称】《测绘技术装备》

【年(),期】2006(008)001

【总页数】3(P25-27)

【关键词】Shape文件;MapObjects;Visual basic6.0;地理信息系统

【作 者】田劲松;高飞;胡小华

【作者单位】合肥工业大学,土木建筑工程学院,合肥,230009;合肥工业大学,土木建

筑工程学院,合肥,230009;合肥市国土资源局,地理信息中心,合肥,230001

【正文语种】

【中图分类】P2

地理信息系统(GIS)目前在计算机软件开发上的应用越来越广泛,它是由计算机软硬

件、地理空间数据和系统管理人员共同组成的集合,可有效的获取、存储、更新、

管理、分析和显示各种与空间有关的信息[1]。地理信息系统数据建库是整个地理

信息系统的前期工作,而且是非常关键的一环。外业测量的空间图形数据,其格式不

利于地理信息系统的建立、管理和维护,所以要通过数据格式转换工具(例如编制程

序或者利用软件自带的转换工具),把图形数据转换成一种系统能够管理、运用和维

护的数据格式。

MapObjects简称MO,是由美国的ESRI(环境系统研究所)公司研究开发的目前国

际上比较通用的一种地理信息系统开发工具,是一组地图软件的组件(ActiveX控件),

即我们通常所说的组件技术[1]。支持多种数据格式,例如ShapeArcSDE

CADStreetMAP Supportd等。利用它可以在通用的编程语言(VBVC)

上实现主要的地理信息系统的功能。它的主要功能有:①显示一个多层结构的地

图;②地图的缩小和放大;③绘制图形元素;④绘制图形化文字;⑤产生Shape格式的

地图文件和其他通用格式的图形文件;⑥属性查询等。传统的GIS开发平台均采用

专门设计的开发语言,例如,Arc/Info采用AML。加上庞大的函数、命令库,使

得普通的开发技术人员难以掌握,延长了应用产品的开发周期。在组件模型下,各

组件都集中地实现与自己最紧密相关的系统功能。组件化的GIS平台集中提供空

间数据管理能力,并且能以灵活的方式与数据库系统连接。

Shape文件在一个数据集中存储了空间特征的非拓扑几何信息和属性信息。一个

Shape文件由一个主文件(.shp)、一个索引文件(.shx)、一个数据库表格(.dbf)构成。

主文件是一个直接存取的记录长度可变的文件。主文件中的每一个记录通过一个矢

量列表来描述一个形。索引文件中的每一个记录包含主文件中该记录相对与文件开

始的偏移量。dbf数据库表格含有几何特征的属性,一个几何特征对应一个记录。

通过记录号建立起几何图形和属性间的对应关系。dbf文件中的属性记录必须与主

文件中的记录有相同的顺序。主文件、索引文件和dbf文件文件名前缀相同,例

:主文件:;索引文件:dbf文件:

在开发GIS应用系统时,为了利用已有的数据成果,避免重复劳动造成资金浪费,

缩短开发周期,我们经常会遇到不同软件平台间的数据转换问题[2]

笔者参与了合肥市市辖区城镇地籍更新调查与测量以及地籍信息系统建库前期的数

据检查工作,并编写程序把文本文件转换成Shape文件。南方测绘公司专门开发

CASS5.1软件补丁,目的是把图形文件转换成文本文件(.vct)的形式 vct的基本

结构共七个部分:文件头(Header)、要素类型参数(FeatureCode)、属性数

据结构(TableStructure)、线形地物(Line)、面形地物(Polygon)、注记

(Annotation)、属性表(Attribute) 。知道了源数据结构和目标数据结构后,就可

以通过编写程序把文本文件转换成Shape件。整个流程如下:

DWG文件®文本文件(vct) ®Shape文件®入库

4.1 采用的相关软件

采用了Visual Basic6.0ESRI MapObjectsAcess数据库、南方测绘软件

CASS5.1

4.2 程序设计过程

第一步:建立公用模块

采用入队的算法,读取文本文件中的数据。一共涉及到三个模块:(1)怎样抓取符号之

间的字符串;(2)怎样入队;(3) 怎样判定输入值是否在一个指定长度的字符型队列

中。

第二步: 创建分类文件

这里所说的分类文件是根据合肥市国土资源局制定的《合肥市市辖区地籍更新调查

与测量数据转换格式》标准中规定的数据格式而创建的。从前面介绍的文件格式可

以看出,文本文件(.vct)的组成结构很有规律,所以可以把VCT形式的文本文

件分割成8个子文件,即分类文件分别是:

第三步:txt文件转换成mdb

此时就要连接Access数据库,逐行读取文本文件(.txt)中的数据,由于MO支持

ADO作为表对象的数据源,通过创建一个MapObjects Table对象,使用

Microsoft Jet 4.0 OLEDB Provider数据源连接数据库。

tionstring="privoder=.4.0;data source="

分三种情况转换:把点数据转为MDB格式、把线转为MDB格式、把面转为MDB

格式,然后调用子程序14

Call Attrib(strLines)

第四步:编写子程序14,把属性值转换成mdb格式

文件中把属性值对应到db2中。使用Microsoft Jet4.0 OLEDB

Provider数据源连接数据库:

strconn ="Provider=.4.0;DataSource=" + +

""

Set Rs = New set

strsql, strconn, adOpenDynamic, adLockOptimistic

第五步:创建点、线、面

连接数据库,共三个子程序,使用Microsoft. Jet4.0. OLEDB Provider数据源连

接数据库,三个程序中都要定义创建对象:

Set Rs = New set

Set strconn= mew tion

strconn

= "Provider=.4.0;Data Source=" & &

""

strSQL,strconn

第六步:点、线、面转换成Shape文件

利用Mapobjects提供的方法(.AddNew.Update)编写程序,并连接数据库,

共三个子程序,程序名如下:

Private Sub pointToshape() ----点转换成Shape程序

Private Sub lineToshape() -----线转换成Shape程序

Private Sub polygonToshape()----面转换成Shape程序

第七步:图形生成后赋属性(dbf)

连接数据库,通过创建一个MapObjects Table对象,用Microsoft Jet4.0

OLEDB Provider数据源连接数据库:

Set Rs1 = New set

Set Rs2 = New set

strConn1 =

"Provider=.4.0;Data Source=" & &

"shape;Extended Properties=dBASE IV;Persist Security Info=True"

strConn2 =

"Provider=.4.0;Data Source=" & &

""

strsql1, strConn1, adOpenDynamic, adLockOptimistic

strsql2, strConn2

Set flds =

第八步:编写主程序

分别调用如下子程序,生成Shape文件。

Call FileSplit,Call mdb(1),Call mdb(2),Call mdb(3),Call mdb(4),Call

hfzdkMdbCall shape

至此,程序结构设计完成,有关如何实现界面设计、转换进度条以及如何显示转换

要花费的时间等功能的程序,由于篇幅的限制在此不再累述。至此数据转换功能已

经实现,转换程序界面和转换结果见图2和图3

4.3 程序实现

GIS软件一般是用来实现地理图层显示、特性查询和空间计算等功能的软件。MO

具有很强的图形浏览和编辑查询功能。下面是利用Map控件开发的简单地理信息

系统实例。数据转换功能嵌入其中,点击“数据转换”菜单,就可以进行数据转换

了。

1)进入系统的欢迎界面,如图1

2)系统主界面

点击“进入”命令,进入系统主界面,如图3,点击下拉菜单—“数据转换”,出

现三项命令菜单,下拉点击“由vct转换成Shape”命令后,出现“由vct转换成

Shape”界面,如图2。打开vct文本文件,开始转换。在转换过程中显示开始转

换的时间,当点击“停止转换”键或者直接关闭界面时都显示从程序运行到关闭的

时间,等数据转换完成以后,显示转换所花费的总时间,并提示shape文件所在

的路径。再点击下拉菜单—“图层”菜单下的“添加图层”命令,打开“为新图

层添加数据”对话框,如图4。对话框中显示刚才转换的Shape文件名,把转换的

Shape文件添加到图层中,效果如图3,此时可以点击查询和编辑图层了。

3中显示的就是添加了mxdw_两个图层后显示的效果。可

以编辑图层颜色、边框样式等属性,还可以查询宗地属性,显示鼠标所在位置坐标,

以及地图单位和比例尺,可以进行图形缩放及全图显示等操作。当然,这只是为了

此次数据转换工作而开发的一个简单的地理信息系统实例,还可以开发一些更主要

的功能,例如拓扑分析等。

组件技术的兴起,给地理信息系统的发展带来了很大的契机。MapObjects具有

价格便宜、开发简洁方便、周期短和强大的GIS功能等特点,受到许多开发者的

欢迎[1]。数据转换和检查对地理信息系统建库是非常关键的,虽然利用Visual

Basic6.0MapObjects能够很好地实现数据转换工作,但由于要受到时间的限

制,所以在程序设计上要求缩短数据转换时间。改变程序设计的思路和方法,提高

程序的运行速度是至关重要的。使用Visual Basic开发的应用程序,在未生成可

执行文件之前只能在VB环境下运行,这就需要将所开发的程序编译成可执行文件,

然后再将应用程序打包成安装程序,使得程序在没有VB环境下也能正常执行。

[1]薛伟. MapObjects-地理信息系统程序设计.北京:国防工业出版社,2004

[2]陈斌. 基于ActiveX Automation技术的数据格式转换.城市勘测,2004.4

[3]郭朝勇等. AutoCAD R14(中文版)二次开发技术.北京:清华大学出版社,

1999

[4]郭瑞军 唐邦民 谢晗晰等.Visual Basic数据库开发实例精粹.北京:电子工业出

版社,2005.1

[5]赛奎春.Visual Basic工程应用与项目实践.北京:机械工业出版社,2005.1