gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1751回复:1

GIS数据共享的研究

楼主#
更多 发布于:2003-10-13 11:51
滕寿威 艾少红 (北京超图地理信息技术有限公司)
曾志明 杨斌斌 (中科院地理信息产业发展中心)

[摘要]

  本文旨在探讨GIS中的数据共享问题,在分析、总结早期和近期几种解决地理信息数据共享模式的基础上,提出一个新的解决方案。

[关键词]

GIS 数据共享 数据标准化

1.引言

  经过几十年的发展,GIS已经取得了长足的进步,特别是当今科技迅猛发展的世纪之交,GIS正以前所未有的速度飞快发展,这一点主要体现在GIS从业人员的急剧增加,GIS软件层出不穷,GIS的应用渗透到社会的各个角落,GIS产品的用户由部门用户向个人用户发展。但是,GIS在走向大众,融入IT主流的同时,也面临着严峻的问题,其中数据共享问题尤为突出,解决不好,将会影响到GIS自身的发展。

2.GIS数据共享问题

  众所周知,整个GIS中最基础的部分是数据,没有数据,GIS就成了无源之水。数据同时也是GIS项目中最昂贵的部分,一般占整个系统建设成本的50%-80%。导致这种情况的原因主要有两个:一是缺乏权威的专业数据公司制作并出售基础地理数据,特别是城市大中比例尺的数据,没有标准化的基础数据,GIS所需要的数据来源没有GIS所需要的数据来源没有保证,导致用户往往要花费大量的人力物力来制作一些非常基础的数据;二是已有的数据没有得到充分的利用,各部门积累的基础地理数据,由于数据格式和规格不统一,难于共享利用,从而造成重复劳动,导致GIS项目的制作成本居高不下,建设周期漫长。

3.解决数据共享问题的对策

  专业的数据公司可以在市场经济的刺激下产生,但需要国家尽快出台相应的数据管理政策,这不是本文的讨论重点。本文将着重探讨软件系统之间的数据共享的技术问题,即多格式数据共享问题。

3.1解决数据共享的传统模式

  由于GIS的图形数据格式各异,给信息共享带来了极大的不便,解决多格式数据共享一直是近年来GIS应用系统开发中需要解决的重要问题。目前,实现多格式数据共享的方式大致有三种,即:数据格式转换模式、数据互操作模式和直接数据访问模式。

3.1.1 数据格式转换模式

  顾名思义,格式转换模式就是把其他格式的数据经过专门的数据转换程序进行转换,变成本系统的数据格式,这是当前GIS软件系统共享数据的主要办法。许多GIS软件为了实现与其他软件交换数据,制订了明码的交换格式,如ArcInfo的E00格式、ArcView的Shape格式、MapInfo的Mif格式等。通过交换格式可以实现不同软件之间的数据转换。

  数据转换模式的弊病是显而易见的,由于缺乏对空间对象统一的描述方法,从而使得不同数据格式描述空间对象时采用的数据模型不同,因而转换后不能完全准确地表达原数据的信息,经常性地造成一些信息丢失。

  美国国家空间数据协会(NSDI)制定了统一的空间数据格式规范SDTS(Spatial Data Transformation Standard),包括几何坐标、投影、拓扑关系、属性数据、数据字典,也包括栅格格式和矢量格式等不同的空间数据格式的转换标准。许多软件利用SDTS提供了标准的空间数据交换格式。目前,ESRI在ARC/INFO中提供了SDTSIMPORT以及SDTSEXPORT模块,Intergraph公司在MGE产品系列中也支持SDTS矢量格式。SDTS在一定程度上解决了不同数据格式之间缺乏统一的空间对象描述基础的问题。但SDTS目前还很不完善,还不能完全概括空间对象的不同描述方法,还不能统一为各个层次以及从不同应用领域为空间数据转换提供统一的标准,也还没有为数据的集中和分布式处理提供解决方案,所有的数据仍需要经过格式转换才能进到系统中,不能自动同步更新。


3.1.2. 数据互操作模式

  数据互操作模式是OpenGIS Consortium (OGC) 制定的规范。OGC是为了发展开放式地理数据系统、研究地学空间信息标准化以及处理方法的一个非盈利性组织。GIS互操作是指在异构数据库和分布计算的情况下,GIS用户在相互理解的基础上,能透明地获取所需的信息。OGC为数据互操作制定了统一的规范,从而使得一个系统同时支持不同的空间数据格式成为可能。根据OGC颁布的规范,可以把提供数据源的软件称为数据服务器(Data Servers),把使用数据的软件称为数据客户(Data Clients),数据客户使用某种数据的过程就是发出数据请求,由数据服务器提供服务的过程,其最终目的是使数据客户能够读取任意数据服务器提供的空间数据。OGC规范基于OMG的CORBA、Microsoft的OLE/COM以及SQL等,为实现不同平台间服务器和客户端之间数据请求和服务提供了统一的协议。OGC规范正得到OMG和ISO的承认,从而逐渐成为一种国际标准,将被越来越多的GIS软件以及研究者所接受和采纳。目前,还没有商业化GIS软件完全支持这一规范。

  数据互操作为多源数据集成提供了崭新的思路和规范,它将GIS带入了开放的时代,从而为空间数据集中式管理、分布式存储与共享提供了操作的依据。OGC标准将计算机软件领域的非空间数据处理标准成功地应用到空间数据上,但是它更多地采用了OpenGIS协议的空间数据服务软件和空间数据客户软件,对于那些已经存在的大量非OpenGIS标准的空间数据格式的处理办法还缺乏标准的规范。从目前来看,非OpenGIS标准的空间数据格式仍然占据已有数据的主体,而且非OpenGIS标准的GIS软件仍在产生大量非OpenGIS标准的空间数据,如何继续使用这些GIS软件和共享这些空间数据成为OpenGIS标准不可解决的问题。

  数据互操作规范为多源数据集成带来了新的模式,但这一模式在应用中存在一定局限性:首先,为真正实现各种格式数据之间的互操作,需要每种格式的宿主软件都按照着统一的规范实现数据访问接口,在一定时期内还不现实;其次,一个软件访问其他软件的数据格式时是通过数据服务器实现的,这个数据服务器实际上就是被访问数据格式的宿主软件,也就是说,用户必须同时拥有这两个GIS软件,并且同时运行,才能完成数据互操作过程。最后,即使以后新建的GIS软件都支持OpenGIS,现有的GIS软件生产出来的空间数据也要转化到OpenGIS标准。

3.1.3. 直接数据访问模式

  直接数据访问是指在一个GIS软件中实现对其他软件数据格式的直接访问,用户可以使用单个GIS软件存取多种数据格式。直接数据访问不仅避免了繁琐的数据转换,而且在一个GIS软件中访问某种软件的数据格式不要求用户拥有该数据格式的宿主软件,更不需要该软件运行。直接数据访问提供了一种更为经济实用的多源数据共享模式。

  直接数据访问同样要建立在对要访问的数据格式的充分了解的基础上,如果要访问的数据的格式不公开,就非破译该格式不可,还要保证破译完全正确,这样才能真正与该格式的宿主软件实现数据共享。如果宿主软件数据格式发生变化,各数据集成软件不得不重新研究该宿主软件数据格式,提供升级版本,而宿主软件的数据格式发生变化时往往不对外声明,这样,其他数据集成软件对基于这种GIS软件数据格式的数据的处理必定存在滞后性。

3.2解决数据共享的新模式

  是否有更好的方法在不要求大多数GIS软件进行大的手术、而又能实现空间数据无缝集成呢?

  我们先来简单地考察一下数据库系统数据共享的实现。各个数据库系统最初也是各自为政,互不相认,后来为了共享数据,也是为了编程的方便,减少重复代码编写的工作量,逐步形成了数据库的统一的规范,定义好统一的接口,这就是现在几乎每个数据库系统都支持的ODBC。各个数据库存储数据的具体格式可以不同,但都按照ODBC的要求提供接口一致的驱动程序。程序员按照ODBC规范在一次编程之后,只要使用某个数据库系统提供的驱动程序,就能存取该数据库系统的数据。从而使关系数据库系统之间实现了数据共享。

  根据关系数据库系统运用ODBC实现数据共享的事实出发,在参考多篇相关论文、技术资料的基础上,结合当今计算机发展的前沿技术,采用面向对象的思想,利用C++纯虚函数、动态联编的机制,模拟ODBC提出GIS数据共享新的方案,即实现空间数据的ODBC。

3.2.1.新方案的思路

  由于一般的GIS数据具有一些的空间数据的通性,因此可以定义一个包含各种属性的元数据文件,在此基础上,采用面向对象的思路,利用C++语言对继承、封装、多态性和抽象基类的支持,定义一个包含纯虚函数、不可实例化的抽象基类,这个基类应具备GIS空间数据读写的基本接口。各GIS软件提供一个从这个抽象基类派生的类来实例化抽象基类,在这个派生类中完成其定义的数据格式文件中数据的读写工作。

3.2.2.新方案的核心和目标

  不管GIS空间数据是以文件方式存储还是以数据库方式存储,都将空间数据以数据库的方式管理;在定义好面向抽象GIS数据格式的抽象基类和统一接口的基础上,由各GIS软件厂商完成存取自己格式数据的子类的动态连接库(类似于ODBC中各数据库系统的驱动程序)。实现厂商一次编程,其他开发者拿来就用,省却大量的重复劳动,加快开发进程。

3.2.3. 新方案的技术路线

  首先,定义一个抽象数据模型,这个抽象的数据模型应考虑周全,能包含空间数据的所有特征。再定义存储这个模型的抽象基类形式,和基类的各标准纯虚函数。

  其次,对每一种文件格式,完成一个从抽象基类派生出来的继承类:每个GIS软件只要定义了自己的数据文件格式,就要提供一个这样的派生类,做成类似于ODBC中驱动程序的动态连接库,其内部继承统一的抽象基类,实现基类的各个纯虚函数,可对其定义的数据格式进行各种读写操作。另外还要提供说明文件,对利用其动态连接库中派生类的各函数得到的结果进行解释和说明。各GIS软件只要完成各自的派生类,不需改变其格式,也不会有冗余数据产生。当某一具体格式没有抽象数据模型所定义的某一属性时,只需在派生类实例化该属性的函数中返回一个默认值即可。例如ArcView的Shape格式无注记信息,那么在类函数GetText()中应这样写:
  CString CFileShp:: GetText()
  {
    CString strText = “”;
    return strText;
  }
  如果以后Shape格式支持注记,那么只需修改类函数CString CFileShp:: GetText()即可完成支持任务。

  各GIS软件开发商在不公开其低层文件格式的情况下,最大程度地方便其他软件的开发者。一旦其内部数据格式有所变动,只需提供相应的升级过的动态连接库即可,二次开发人员和其他利用其动态连接库的软件不需作任何变动和重新编译程序.

3.2.4.新方案的优点

  由于各GIS软件开发商提供的派生类是继承统一的抽象基类,各函数接口一致,可集成到自己开发的GIS软件中,提供对其它软件的强有力的支持,并且不会产生数据丢失。

  各GIS软件开发商在不暴露其底层文件格式的情况下,最大程度地方便其他软件的开发者。一旦其内部数据格式有所变动,则只需提供相应的升级过的动态连接库,二次开发人员和其他利用其动态连接库的软件不需作任何变动和重新编译程序。


4. 结束语

  GIS数据共享一直以来都是GIS业界和GIS用户十分关注的问题,如果有一个很好的解决方案,收益的不仅仅是GIS软件开发商,广大的GIS用户也将获益匪浅,GIS的发展也将获得质的飞跃
喜欢0 评分0
czq322
路人甲
路人甲
  • 注册日期2003-10-01
  • 发帖数63
  • QQ
  • 铜币161枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2003-10-15 12:04
很好!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部