分享

Arc/Info数据格式(Coverage)转换到MapInfo数据格式(Tab)的工艺设...

 昵称QAb6ICvc 2012-11-22
Arc/Info数据格式(Coverage)转换到MapInfo数据格式(Tab)的工艺设计与编程实现
发布时间: 2004-2-9         点击数:303

0  引言

城市空间基础数据是GIS应用系统的血液。就GIS软件本身而言,不同的软件厂商根据自己对GIS的理解、某些用户的需求和自己的技术水平,为图形数据设计了一套数据结构和数据模型,这种数据结构和数据模型对某一系统来说固定不变,而对整个GIS世界而言却是杂乱无章。由于对空间现象的理解不同,对空间对象的定义、表达和存储方式亦有不同,给信息共享带来极大的不便。因此有效解决多格式数据转换也一直是近年GIS应用系统开发中需要解决的重要问题。

ARC/INFO是当今GIS领域使用最广泛的GIS软件,在GIS数据管理方面功能强大;而MAPINFO软件是目前世界上较为完备、全面而直观的桌面地理信息系统,在基于该软件的专题应用系统的开发上具有投资少、收益大、见效快的明显优势。因此,寻求从ARC/INFO数据格式到MAPINFO数据格式的转换方法,开发从CorverageTab数据格式的全要素图形数据转换软件具有重要现实意义。

关于CoverageTab数据的转换方法,公开发表的文献很多。但大部分都是从广义上、理论的角度作为出发点,泛泛列举与此相关的转换方式。如要真正完成CoverageTab数据的转换,最后获取能完全满足某一系统需要的准确数据,还要有大量的细致工作要做。

由此,本文拟将结合自己的实践经验,就CoverageTab数据的转换方法、工艺设计和编程实现所采用的技术做简要阐述。

1  两数据格式的特点和对成果数据的要求

1CoverageTab数据格式特点

a.Coverage数据格式特点

Coverage数据格式是ARC/INFO软件数据存储格式之一。每幅图包括全要素数据层coverall及核心要素数据层如mian(所有面)、coverzj(注记)、trfnet(路网中线)等分类数据层。

b.Tab数据格式的特点

Tab数据格式是MapInfo软件唯一的数据存储格式,所有基于该软件上的应用系统都要以这种数据格式为依托。通常MapInfo的表主要由以下几种文件组成:

Filename.tab  描述表的结构

Filename.datfilename.dbf  包含表的数据

Filename.map  表的图形对象

Filename.id  包含表的地理索引

Filename.ind  包含表的列索引

2)对成果数据的要求

进行数据转换,是为了获得满足一定要求的GIS数据进行的。转换后的数据分层要求如表1

同时,对于各层的数据结构也作了具体要求,如表2 

对于各属性的取值也有着具体要求,但本文旨在介绍工艺设计和实现方法,在此不做赘述。

3)数据源状况

数据源是1500地形图,由ARC/InFOLIBARIAN模块管理的COVERAGE格式数据。该数据经过各级严格检查,质量准确可靠且具有较强的现势性。

2  工艺设计

1)转换工艺总体设计

   由Coverage数据到Tab数据的转换方法很多,但多数都存在着不足。综合各种方法的优点并结合实际情况和Tab数据的具体要求,工艺流程总体设计如图1 

1  工艺流程总体设计图

2CoverageE00的转换

根据Tab数据的要求,对Coverage数据进行了提取、组合,重新生成表1所要求的共分五层的Coverage格式数据,然后转换为E00格式,该过程在ARC/INFO环境下,利用AMLODE编程实现,如图2

 3E00Tab数据的转换和编辑处理

E00数据转换成Tab数据后,会生成大量的冗余数据,组各层的字段名称、类型和多少都不能满足要求,还要进行一系列的编辑处理,该过程在MAPINFO环境下,利用跨平台集成地图技术编程实现。内容和数据流程如图3 

3  编程实现

根据上文的工艺设计思想,进行了编程并予以实现。编程过程中利用了ODEIntegrated Mapping(跨平台集团地图)技术,采用VB6.0可视化编程语言,取得了很好的结果。

1CoverageE00的转换

CoverageE00的转换过程中,要根据要求对Coverage数据进行提取和重组,然后生成E00数据。期间充分利用了AML编程语言驾驭Coverage数据便捷的特性,并采用ODE实现数据的批量转换和界面设计。主要包括以下主要内容:

a.代码对照表的建立

由于Tab数据与Coverage数据采用的编程方法不同,所以必须建立代码对照表。利用ARC/INFOTables命令,建立info表。这是一项需耐心细致的工作。准确与否直接影响转换数据的质量。Info表的建立是进行全要素数据准确转换的保障。

b.属性值的获取。主要是指表2中各字段属性值的获取。

c.由于高程值是高程点的一个属性值,所以要将其转化为注记。

d.注记大小的控制

在从CoverageTab的转换过程中,注记字体大小的控制是最伤脑筋的事。如果不加任何控制,转换得到的注记字体太大,不能满足规范要求。而MapInfo在改变注记大小功能上又存在着先天性不足,往往令人束手无策。不少单位采用第三方软件单独对注记进行大小处理,然后分别加入到各图幅数据中,在效率上大打折扣。经反复实验,我们采取了在ARCINFO环境中,通过定义注记记录的$size值大小,即可按规范要求成功控制注记字体的大小。以下是控制高程注记字体大小的AML语句:

ef          ef        aiino

sel        sel        all

cal        cal       size2.5

其它注记与此相同,只是将其分类后,对应的$size值大小有别。利用这种办法简单方便,且能基本满足规范要求,较之其它方法,事半功倍。

e.生成E00。在ARC下用仅Export命令完成该操作。

以上各项工作的完成均是用AML编程实现。最后利用ODEVB60开发了应用程序的界面,使程序便于操作且易于数据批量转换。

2Tab数据的处理

利用MapInfoARCLink功能即可完成EOOTab的转换。转换后,要进行如图3所示的一系列编辑处理,编程过程中充分利用了跨平台集成地图技术。以下是主要过程编码方法:

a.由于转换后的数据字段类型、数量和名称与表(二)存在差异,所以要对表结构进行修改。包括修改数据字段类型、删除多余字段、增加有用字段和规范字段名。以下是对jj层进行字段修改的语句:

msg=" Alter Table" & tab_name & "(drop area, perimeter,jj_,jj_id,text,code,level,layer"

msg=msg+"modify Type smallint,Property Char(1), Structure char(1),Grade char(1),FloorCount integer, GeoObjCode char(6),JNo integer)"

Mapinfo.do msg

b.面填充和地物符号化

经转换得到的Tab数据只有点、线、面,没有线形和符号区分。为此,我们建立了线符号库和点符号库。以下是点符号化的子程序:

Sub point_symblelizedByVal tb_name As String ByVal gop_code As IntegerByVal symble_code As IntegerByVal symble_color As LongByVal symble_size As Integer)

Dim rec_count, row_id As Integer

Mapinfodo" select * from" tb_name " where val (GeoObjCode)="& geo_code

GeoObjCode)=" geo_code

rec_count CIntMapinfoeval"SelectionInfo3"))''

3sel_info_nrows的代码

If rec_count<> 0 Then

For row_id1 To rec_count

msg msg"fetch rec"row_id"from selection"

Ma  Mapinfo.do msg

msg msg"myobj=selection.obj"

Ma Mapinfo.do msg

msg msg"Alter Object mxobj Info 2MakeFont- Symbol("& symble_code & "," &symble_ color & ","& symble_size & "," & """City Construction Symbol"",0,0)"

msg msg+"updATE SELECTION SET OBJMYOBJ WHERE ROWID"_row_id Mapinfodo msg

Next

Else

End If

End Sub

面填充和线状地物符号化与该过程类似。其它如元数据存取、修改线代码、建筑物编号等过程都采取了与之相同的编码方法,且取得了较好效果。

3)其它编辑处理

由于数据要求整个测区建筑物的编号唯一,而编号是逐幅逐记录进行的,所以要进行接边,以确保不同图幅中同一建筑物编号的唯一性;在电力线符号化过程中,难免有符号压盖、变压器符号的长或短的现象出现,要求对照原图进行编辑修改。

至此,数据转换过程中的编程方法和各项处理已经完成,最后成果即为满足要求的Tab数据。

4  结论

该软件现已投人生产,并对于转换过程中发现的问题,及时地对软件做了进一步修改和完善。生产实践证明,利用ODE和跨平台集成地图编程技术实现CoverageTab数据的批量转换行之有效,所生成的数据完全满足对GIS数据的各项要求,且操作简便、界面友好;该工艺正确合理,方法切实可行,软件运作正常高效,数据转换准确。

当然,从Coverage你都到Tab数据的转换方法不一而足,且任一方法都不可能尽善尽美,本文亦然。对于不足之处,敬请广大同仁提出宝贵意见,将不胜感激。

参考文献

[1]  王晓武等《MapBasic程序设计》,北京:电子工业出版社,2000.7

[2]  符海芳 向南平.国产GIS软件的数据交换.北京测绘.2001(1)

[3]  ARC/INFO中国技术咨询与培训中心《Customizing ARC/INFO with AML1995.1

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多