基于组件技术的GIS数据格式转换方法
田劲松;高飞;胡小华
【摘 要】本文在介绍MapObjects技术和shape文件的基础上,重点分析此次数据转换的方法和过程.最后,介绍基于Visual Baisc6.0和MapObjects技术开发的地理信息系统的实例,并在系统中调用转换后的shape文件.
【期刊名称】《测绘技术装备》
【年(卷),期】2006(008)001
【总页数】3页(P25-27)
【关键词】Shape文件;MapObjects;Visual basic6.0;地理信息系统
【作 者】田劲松;高飞;胡小华
【作者单位】合肥工业大学,土木建筑工程学院,合肥,230009;合肥工业大学,土木建筑工程学院,合肥,230009;合肥市国土资源局,地理信息中心,合肥,230001
【正文语种】中 文
【中图分类】P2电影源代码终极解析
地理信息系统(GIS)目前在计算机软件开发上的应用越来越广泛,它是由计算机软硬件、地理空间数据和系统管理人员共同组成的集合,可有效的获取、存储、更新、管理、分析和显示各种与空间有关的信息[1]。地理信息系统数据建库是整个地理信息系统的前期工作,而且是非常关键的一环。外业测量的空间图形数据,其格式不利于地理信息系统的建立、管理和维护,所以要通过数据格式转换工具(例如编制程序或者利用软件自带的转换工具),把图形数据转换成一种系统能够管理、运用和维护的数据格式。
MapObjects简称MO,是由美国的ESRI(环境系统研究所)公司研究开发的目前国际上比较通用的一种地理信息系统开发工具,是一组地图软件的组件(ActiveX控件),即我们通常所说的组件技术[1]。支持多种数据格式,例如Shape、ArcSDE、CAD、StreetMAP Supportd等。利用它可以在通用的编程语言(如VB、VC等)上实现主要的地理信息系统的功能。它的主要功能有:①显示一个多层结构的地图;②地图的缩小和放大;③绘制图形元素;④绘制图形化文字;⑤产生Shape格式的地图文件和其他通用格式的图形文件;⑥属性查询等。传统的GIS开
java对象转换为json字符串发平台均采用专门设计的开发语言,例如,Arc/Info采用AML。加上庞大的函数、命令库,使得普通的开发技术人员难以掌握,延长了应用产品的开发周期。在组件模型下,各组件都集中地实现与自己最紧密相关的系统功能。组件化的GIS平台集中提供空间数据管理能力,并且能以灵活的方式与数据库系统连接。
Shape文件在一个数据集中存储了空间特征的非拓扑几何信息和属性信息。一个Shape文件由一个主文件(.shp)、一个索引文件(.shx)、一个数据库表格(.dbf)构成。主文件是一个直接存取的记录长度可变的文件。主文件中的每一个记录通过一个矢量列表来描述一个形。索引文件中的每一个记录包含主文件中该记录相对与文件开始的偏移量。dbf数据库表格含有几何特征的属性,一个几何特征对应一个记录。通过记录号建立起几何图形和属性间的对应关系。dbf文件中的属性记录必须与主文件中的记录有相同的顺序。主文件、索引文件和dbf文件文件名前缀相同,例如:主文件:clkzd.shp;索引文件:clkzd.shx;dbf文件:clkzd.dbf。
在开发GIS应用系统时,为了利用已有的数据成果,避免重复劳动造成资金浪费,缩短开发周期,我们经常会遇到不同软件平台间的数据转换问题[2]。
笔者参与了合肥市市辖区城镇地籍更新调查与测量以及地籍信息系统建库前期的数据检查工作,并编写程序把文本文件转换成Shape文件。南方测绘公司专门开发了CASS5.1软件补丁,目的是把图形文件转换成文本文件(.vct)的形式 。vct的基本结构共七个部分:文件头(Header)、要素类型参数(FeatureCode)、属性数据结构(TableStructure)、线形地物(Line)、面形地物(Polygon)、注记(Annotation)、属性表(Attribute) 。知道了源数据结构和目标数据结构后,就可以通过编写程序把文本文件转换成Shape件。整个流程如下:
DWG文件®文本文件(vct) ®Shape文件®入库
4.1 采用的相关软件
采用了Visual Basic6.0、ESRI MapObjects、Acess数据库、南方测绘软件CASS5.1。
4.2 程序设计过程
第一步:建立公用模块
采用入队的算法,读取文本文件中的数据。一共涉及到三个模块:(1)怎样抓取符号之间的字符串;(2)怎样入队;(3) 怎样判定输入值是否在一个指定长度的字符型队列中。
第二步: 创建分类文件
这里所说的分类文件是根据合肥市国土资源局制定的《合肥市市辖区地籍更新调查与测量数据转换格式》标准中规定的数据格式而创建的。从前面介绍的文件格式可以看出,文本文件(.vct)的组成结构很有规律,所以可以把VCT形式的文本文件分割成8个子文件,即分类文件分别是:、、、、、、和。文件格式转换app
第三步:把txt文件转换成mdb
此时就要连接Access数据库,逐行读取文本文件(.txt)中的数据,由于MO支持ADO作为表对象的数据源,通过创建一个MapObjects Table对象,使用Microsoft Jet 4.0 OLEDB Provider数据源连接数据库。
tionstring="privoder=Microsoft.jet.oledb.4.0;data source="
分三种情况转换:把点数据转为MDB格式、把线转为MDB格式、把面转为MDB格式,然后调用子程序14。
Call Attrib(strLines) minor diameter
第四步:编写子程序14,把属性值转换成mdb格式
从文件中把属性值对应到db2中。使用Microsoft Jet4.0 OLEDB Provider数据源连接数据库:
strconn ="Provider=Microsoft.Jet.OleDb.4.0;DataSource=" + App.path + "\db2.mdb"
Set Rs = New ADODB.Recordset
Rs.Open strsql, strconn, adOpenDynamic, adLockOptimistic
第五步:创建点、线、面
连接数据库,共三个子程序,使用Microsoft. Jet4.0. OLEDB Provider数据源连接数据库,三个程序中都要定义创建对象:
Set Rs = New ADODB.Recordset
swift教程百度云资源
Set strconn= tion
strconn
= "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & App.path & "\db2.mdb"
strconn.open
rs.open 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 ADODB.Recordset
Set Rs2 = New ADODB.Recordset
strConn1 =
"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & App.path & "\shape;Extended Properties=dBASE IV;Persist Security Info=True"c语言运算符优先级知图片
strConn2 =
"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & App.path & "\db2.mdb"
Rs1.Open strsql1, strConn1, adOpenDynamic, adLockOptimistic
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论