moline
路人甲
路人甲
  • 注册日期2003-10-27
  • 发帖数36
  • QQ
  • 铜币53枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1778回复:1

[转贴]面向对象整体GIS数据模型的设计与实现

楼主#
更多 发布于:2004-05-30 23:03
面向对象整体GIS数据模型的设计与实现



肖乐斌 钟耳顺 刘纪远 宋关福

(中国科学院地理科学与资源研究所,北京,100101)
 

[摘要]

本文在前期GIS概念数据模型研究的基础上,提出了面向对象整体GIS数据模型,并针对整体GIS软件的实现在系统数据组织、存储结构与访问机制方面进行了较为深入的探讨,最后简单介绍了基于整体GIS数据模型的商品化软件---SuperMap Deskpro的实现情况。

[关键词]

面向对象 整体数据模型 系统数据组织 存储与访问

中图分类号:  文献标识码:

1.引言

经过几十年的发展,今天的GIS系统已经具备了较强的数据存贮、管理和输入输出功能,但目前大多数的GIS仍然是以数据为中心的,在完整表达客观地理世界、进行高层次的空间分析和直接提出决策方案的能力方面还远远不够,导致这种情况的根本原因在于现有GIS的数据模型不能准确地表达客观地理世界。为此,作者为现有GIS软件总结了两种典型的数据模型[1]:拓扑关系数据模型和面向实体的数据模型,并分析了它们各自的优缺点,指出应该在整体论的基础上为地理空间建立一个能够直接反映人们认知的整体数据模型。

2.面向对象的整体数据模型

GIS本质上是对客观地理世界的近似模拟,其理想状态应该是尽可能准确地反映地理世界,同时做到数据量最小,又便于人们从中获取所需要的信息和规律。要达到这种理想状态,我们需要做好两步工作:1)准确理解地理空间;2)为地理空间建立面向对象的整体数据模型---一个基于地理空间整体论、完全以面向对象方式组织的GIS数据模型。
  地理空间的理解可以简单概括为[1]:地理空间是一个目标组合排列集,每个目标或说对象都具有位置、属性和时间信息,及与其它对象的拓扑关系、语义关系等。基于这一认识,我们可以得到,表达地理空间的整体GIS数据模型有如下特征:
  ■ 将地理空间按照人的思维方式理解为基于目标的空间和定义在地球表层目标集上的关系。除了要研究对象的几何位置及拓扑关系外,还要重视研究对象间的语义关系。
  ■ 整体数据模型虽然要求我们将客观世界作为整体看待,但在执行具体的数据组织时也需要对众多的地理实体进行分层。分层是基本的和必要的,但由于为一种目的进行的分层很难满足另外的需求,因此重要的不是提供一种通用的分层,而是对方便地加入、删除对象等维护层的操作予以足够的支持。复合图层含有不按对象维数分层的含义,能够很好地体现客观 世界的整体特征,为不同层中的关联对象或用户感兴趣的不同类型对象提供了一个集中存贮与交互的独立空间,整体数据模型尤其应该增强复合图层的功能,使用户能够自由地加入、删除、修改、查询任意类型(点、线、面和复杂实体)的地理实体,同时能够进行强大的空间分析;
  ■ 虽然传统的GIS数据模型常将基于对象的模型用矢量结构表达,而将基于场的模型用栅格结构表达[2][3],其实可将对象和连续场这两种看似对立的模型统一在面向对象的整体数据模型中,因为面向对象的方法作为一种框架不仅可以描述基于对象的模型,也可以描述基于场的模型[3][4]。
  ■ 空间对象是处在三维空间中的,并具有多尺度特征。
  ■ 整个数据模型完全以面向对象的方式组织。



由上可见,在整体数据模型中,地理空间被表达为一个具有相互关系的对象集。每个对象不仅具有自己的几何信息、属性信息和时间信息,而且与其它对象之间具有拓扑关系和语义关系。所有这些信息在整体数据模型中都处于同等重要的地位,其中起着连接作用的是对象本身。根据对象的形状特点,同时为了方便计算机实现与管理,我们可以将地理空间中的对象分为5种基本对象:点、线、面、注记和复杂对象。其中,前面四种对象比较简单,统称为简单对象,这里只介绍第5种对象---复杂对象。
  复杂对象是由简单对象组合派生的,可以划分为如下两种类型:
  1)单纯型复杂对象
  多个同样类型的对象合并成为一个单纯型复杂对象。·复杂点:点群,由多个点状对象构成的集合,整个集合是一个对象,如聚集在一起的多个水文站等;•复杂线:线群,由多个线状对象构成的集合,整个集合是一个对象,如一线状水系,一径流网络等;·复杂面:面群,由多个面状对象构成的集合,整个集合是一个对象,如一湖泊群,一海洋群岛等。
  2)混合型复杂对象
  点、线、面共存的复杂对象。混合型复杂对象的混合种类包括:点与线混合,点与面混合、线与面混合及点、线、面同时存在的混合,多个不同类型对象合并成一个就构成了混合型复杂对象,因此混合型复杂对象不属于点、线、面中的某一基本类型,在属性上也就不具备这些基本类型对象的一些特有信息,如线对象的长度,面对象的面积和周长等,这在数据库表结构的设计中要予以必要的考虑。
  单纯型复杂对象可以在相应类型的简单对象集中存贮和在相应图层中显示,也可以在复合对象集中存贮和在复合图层中显示;混合型复杂对象只能在复合对象集中存贮和在复合图层中显示,它们不适合存入简单对象集,也不宜在点、线、面简单图层中显示,因为它们的加入会破坏简单对象集和简单图层的专题特性,也不便于管理。
  上面介绍的这5种对象在地理空间中都是以三维形态存在的,但由于三维GIS建设的成本较高,在技术实现上也有相当的难度,而目前二维GIS能够满足大部分实际需求,因此我们在表达三维客观地理世界、实现整体GIS数据模型时以开发二维GIS为主,而在某些需要查看具体三维细节的地方提供机制以表现其三维结构,例如可以另开辟一个小的三维地图窗口来表现对象的三维形状、结构和拓扑关系等。
  时间问题[5]-[8]、语义关系和拓扑关系[9]-[11]一直是GIS界长期研究的热点,虽然它们在整体数据模型里面占有很重要的位置,但是本文的重点在于确定整个数据模型和系统的总体组织,对它们的具体讨论将在以后逐步展开。

3 系统数据组织

3.1 对象集

对象集是指由众多对象构成的集合。划分对象集的目的在于存储和管理对象的方便,它可以是由同种几何类型的对象构成的集合,也可以是由不同类型对象组成的集合。在整体GIS数据模型中,有如下三类对象集:
  ■ 简单对象集:包括简单点对象集、线对象集、面对象集和注记对象集四类;点对象集是由简单点对象或单纯型复杂点对象组成的集合,线对象集是由简单线对象或单纯型复杂线对象组成的集合,面对象集是由简单面对象或单纯型复杂面对象组成的集合。简单对象集也可称为专题对象集。
  ■ 复合对象集:由简单点、线、面对象、注记对象、单纯型复杂对象或混合型复杂对象等不同类型对象组成的集合。在这种对象集合中,可以包含任意类型的对象元素;
  ■ 场:场是由有机关联的对象构成的集合,其中的元素在几何上不再相互独立,而是紧密相关,这一点与以上两种对象集不同。如TIN、GRID、影像和网络等。场中的元素对象一般较多,场本身就是一个对象集,因此我们在概念上不再另设场对象和场对象集。
  由上可见,对象类型与对象集类型并不是完全一一对应的,例如:单纯型复杂线对象与简单线对象一样分别存贮与显示在简单线对象集和简单线图层中,不必要专门的单纯型复杂线对象集和单纯型复杂线图层来存贮和显示。
  除了点、线、面三种单纯型复杂对象外,其它各种对象(点、线、面简单对象、注记对象和混合型复杂对象)与对象集类型都是一一对应的。另外,场是一种对象集,不过由于其中的元素并不是场对象(没有场对象概念),因而场与场中的元素也不存在一一对应的关系,但在实现时开发者完全可以设计一个场类来管理各种各样的场。
  值得指出的是,整体GIS数据模型认为人们感知的客观世界是一个由众多类型不同的地理实体组成的整体世界,而不是人为分割的、僵化的对象层,但由于分层能够为GIS管理和显示地理对象提供极大的方便,因此我们在基本分层(在本文中是对象集)的基础上,特别提出并强调复合对象集的概念,以此来表达和实现整体GIS数据模型的整体思想。复合对象集打破了GIS中传统分层的框架,为不同对象集中的关联对象或用户感兴趣的不同类型对象提供了一个集中存贮与交互的独立空间,但同时也为系统开发和管理带来了一定难度。比如,单纯型对象集的显示、修改、存贮、管理、分析和输出都可采用统一的方法进行,而复合对象集的这些操作则必须在内部进行分别处理(按对象类型)。虽然如此,但单纯型对象集与复合对象集都是为了满足不同的用户需求而设计的,二者在对象组织、系统实现和空间分析上各有优缺点,一个功能强大的GIS应该同时支持它们。

3.2 图层

对象集加上自己特有的显示属性即是图层,因此对象集类型与图层类型是一一对应的。由于对象集包括点、线、面、注记对象集、复合对象集和场6种基本类型,因此图层也有相应的点、线、面、注记图层、复合图层和场图层6种基本类型。对象集用来存贮对象的空间与属性数据,而图层则用来设置对象集的显示风格并控制对象集的显示范围、显示比例和操作特性(如可显示、可选择、可编辑和可捕捉等),二者各司其职又相互联系。在对应关系上,一个图层只对应一个对象集,而一个对象集却可显示在不同的地图窗口中对应多个图层,因此对象集与图层之间的关系是一对多的关系。

表1 各种对象的存贮与显示对比表
Tab.1 Contrast of store and display of all kinds of objects

对象类型
存贮的对象集
显示的图层

点与单纯型复杂点
简单点对象集表
简单点图层

线与单纯型复杂线
简单线对象集表
简单线图层

面与单纯型复杂面
简单面对象集表
简单面图层

混合型复杂对象
复合对象集表
复合图层


多个非同类简单对象集表
场图层

注记对象
注记对象集表
注记图层



3.3 数据库

我们这里所说的数据库是指广义的数据库,其定义为“存贮对象的集合”。物理上不管是以文件形式还是以商业数据库形式存在,只要存贮有对象,我们都称为数据库。就综合性能而言,一般是文件系统在小量数据方面有自己的长处,而商业数据库则对大量数据的支持有着文件系统无法替代的优势。




3.4 地图或地图窗口

对象集是用来存贮地理对象的,图层是用来控制对象的显示的,两者都不等同于地图或地图窗口。我们的地图或地图窗口是一种框架,是显示对象的实际载体,也是控制图层并对之进行操作和分析的主体。

3.5 工作空间

工作空间是为系统管理方便而设计的,相当于一个大的仓库,里面存贮有数据的基本信息,如数据库的名字与尺寸、地图和其它资源(如点、线、面型符号)。系统运行时可调入数据库对之进行管理控制。

4 数据存储与访问

4.1 存储结构

4.1.1 简单对象集对应的表结构

  如前文所述,对象集包括点、线、面、注记对象集、复合对象集和场6种基本类型,因此在数据库中应该设计与之对应的6种表。对于文件系统而言,表的概念可以扩展为结构,也就是说用6种结构来存贮这些对象集的各个元素。其中,结构的成员与表的字段是一一对应的,为了操作方便,我们还可以定义一个专门的类来管理这个结构。对于商业数据库而言,表就是关系数据库系统中的普通表,不必进一步考虑。
  不同的对象类型对应不同的表,但所有对象集都可采取形如表2的结构,当然不同类型的对象集在空间坐标串的组织及属性字段名字上会有不同。由于点对象与单纯型复杂点对象除了空间坐标串组织方式稍有不同外(不过都是用同样的方法打包成外部不可见的二进制块,可视为相同),其余字段都相同,因此它们可以共存于一个表,也可以一起显示在同一图层中,在各方面的处理上几乎没有什么差别。线对象与单纯型复杂线对象、面对象与单纯型复杂面对象的关系与此类似,也可同存于一个表和在同一图层中显示。当然,简单对象与单纯型复杂对象的空间坐标串的组成结构不同,单纯型复杂对象应该有能够识别多个同类型简单子对象的格式或标记。对于混合型复杂对象,必须用单独的混合型复杂对象表存贮,表结构中除了没有简单对象公有的长度、面积等字段外,其它字段均可根据需要进行设置,结构形式仍同于表2。

表2 简单点、线、面对象及单纯型复杂点、线、面对象表
Tab.2 Data structure of all kinds of objects

对象ID
用户ID
空间信息
语义关系1…
属性1…
属性n






…,三维结构与时间表存在的标志



  由上可见,我们并未如拓扑关系模型那样在面对象表的空间坐标字段里用一系列弧段标识号来表示面对象的组成,而是直接用其坐标串。虽然这样在多边形的公共边上会有重复存储现象出现,但在计算机存储设备日益增大的今天,这已经不再是主要问题,相反这种坐标存储方式使面对象表不再依赖线对象表,其中的元素也变成为相对独立、完整的对象,同时也将提高系统访问数据的速度。这种方式是面向实体的数据模型和面向对象整体数据模型在内部实现机制上的一个特色,是一种以空间换时间的存储方式。

4.1.2 三维结构与时间属性的表结构

  目前的GIS仍然以二维GIS为主,但有时又需要查看少数对象的三维结构与时间特性,因此我们在整体GIS的数据库中为这部分对象单独设计了“三维结构与时间表”。为了讨论方便,我们把上面的表2称为主表,而把这个表称为副表(表3)。副表中并不存储整个对象集的全部对象,而是只存储部分具有三维结构与时间特性的对象。至于哪些对象能有三维结构与时间属性存贮在副表中,则要看它们在主表中最后一个属性字段里的标志值。如果标志值为真,则有,否则在三维结构与时间属性表中就没有这些对象。
  有时候对一部分对象我们只关心其三维结构或只关心其时间属性,这部分对象的取值不能简单地设为真或假,此时要修改标志变量的值域将之设置为4值域,即V={0, 1, 2, 3},其中0表示既没有三维结构又没有时间属性,1表示有三维结构但没有时间属性,2表示没有三维结构却有时间属性,3表示两者都有。如果整个对象集中存在值为1或2的对象,那么该表就要拆分成两部分以分别存储它们的三维结构与时间属性,当然这些对象的其它信息仍然存储于主表中。

表3 三维结构与时间表
Tab.3 3D data structure and time attribute of all kinds of objects

对象ID
三维结构
时间属性1
时间属性2
时间属性n










4.1.3 复合对象集对应的表结构

  复合对象集是整体GIS数据模型中一个很重要的概念,对于复合对象集,我们可以用两种方式存贮它。1)物理方式,即在物理上将对象的所有信息都集中存放于一个表中。由于不同类型对象的字段不尽相同,因而必然会造成一些字段的空间浪费,例如点对象的长度和面积字段在现实世界中没有实际意义,所占空间自然就是浪费。显然,复合对象集中对象的类型越多,造成的空间浪费就越大。不过,如果复合对象集中包含的对象类型只是简单点与单纯型复杂点,或简单线与单纯型复杂线,或简单面与单纯型复杂面,那么就不会存在字段不一致导致的空间浪费问题。2)逻辑方式,即复合对象集中只存贮对象的系统ID号,而实际的信息仍存在于简单点、线、面对象和单纯型点、线、面复杂对象表---主表中。只是当读取复合对象集中对象的信息时,要打开并访问相应类型的主表,需要耗费一定的系统时间。到底采用何种方式合适,要视具体情况而定。作者的建议是,当复合对象集中对象类型较少时,采用物理方式较为合适。反之,采用逻辑方式则更为合理。作为一个好的GIS系统,应该对这两种存贮方式都进行强有力的支持。

4.1.4 场对应的表结构

面向对象的整体GIS数据模型不仅在概念上将地理对象作为一个个独立的实体看待,而且在内部存储上也是将它们独立存储,各对象表之间并不存在拓扑依赖关系,这一点与基于拓扑关系的数据模型有很大的不同。那么,面向对象的整体GIS数据模型如何处理对象间的拓扑关系呢?我们知道,拓扑模型存贮对象间拓扑关系的一个很重要的目的是为了实现数据共享(同时也降低了访问速度),整体GIS放弃了这一点,它在对象的单个表中为每个对象都存贮了完整的坐标信息。拓扑关系在GIS中并不是最基本的信息,当在特殊情况下需要时我们可以将它们临时构建出来,生成的拓扑关系存放于新的对象集中,形成专门的具有拓扑关系的对象集,这种对象集就是场(这里特指矢量场)。场表的字段设置基本上采用了拓扑关系数据模型的表结构,面与线之间的坐标存储具有依赖关系。
  其实,拓扑关系数据模型中预先存储的拓扑关系和整体GIS数据模型中临时构建的拓扑关系都是最基本的点、线、面邻接关系,并未涉及到相交、相离、覆盖等更多的拓扑关系,邻接关系也是拓扑关系中最常用的一种,因此我们只讨论点、线、面间的邻接拓扑关系,其它关系可根据空间查询和分析运算得到。
  1)网络场
  网络场是包含并强调点、线拓扑关系的最典型代表,网络场对应的对象表有两个:以弧段为主的弧段---结点表(表中含坐标串字段)与以结点为主的结点---弧段表(表中可含结点坐标字段,也可不含)。其中结点---弧段表中可存贮弧段标识号,也可不存(如果不存,可在弧段---结点表中查得结点的弧段),但结点表一定要存在,因为结点有属性要保存。网络场的两个表包含了点与线之间的邻接拓扑关系,我们可以通过它们查得任意结点的邻接弧段和结点,可以查得任意弧段的起止结点。弧段的位置信息一般存于弧段---结点表的空间坐标串字段中,端点的坐标可存于该字段中,也可在结点---弧段表中设一坐标字段存贮。
  2)TIN场
  TIN场由两类表即可存贮:三角形表和点表。三角形的坐标存于点表的坐标字段中,三角形表本身不存储坐标信息,而只存三角形顶点序号,这些序号的排列有严格的顺序,不能随意颠倒。
  3)点-线-面场
  有了多边形---弧段、弧段与结点和多边形、结点---弧段三个表,我们就可以得到任意多边形、任意弧段和任意结点的拓扑邻接关系[1]。其中弧段与结点和多边形表是枢纽,为弧段默认设置了空间坐标串字段、从结点、到结点、左多边形和右多边形5个字段。含有这种点、线、面之间拓扑关系的典型场有城市街区图、地籍管理中的宗地等。
  其它场如GRID模型、影像数据是栅格数据管理的范围,数据结构相对简单,本文不作讨论。

4.1.5 数据库选择

在数据库类型选择上,有三种模式可供参考:
  ■ 全文件方式,即空间数据和属性数据都存贮在文件系统中;
  ■ 文件数据库混合方式,即空间数据存贮在文件系统中,而属性数据存贮在商业数据库中;
  ■ 全数据库方式,即空间数据与属性数据都存贮在商业数据库中,两种数据可以存放于同一个表也可分别存放于两个表中。

4.2 访问机制

上一小节讨论了地理对象的存贮方式,作为一个大的空间数据库,仅有这些表是不够的。6种基本对象集表只是给我们提供了装载对象的空间,其中的商业数据库表虽然也给我们提供了访问接口(文件系统中表的接口则需要我们自己开发),但究竟如何进行有效的调度访问则还需要进一步设计和组织。

4.2.1 空间索引

我们知道,由于每个表具有相对固定的字段结构,因此一个表只适合存贮类型相同的对象,在整体GIS数据模型里,一个表通常对应一个对象集。一个数据库中往往有多个表,为了管理表的方便,可以用一个统一的表---总表来管理所有对象集对应的表,总表使我们在不必访问数据库各表的情况下就能得到它们的基本信息(如对象集的范围、对象集的索引表等)。一个数据库中只存在一个总表。
  在解决了统一管理对象集表的问题后,进一步,为了快速访问各表中的地理对象,我们可以为每个表建立空间索引和属性索引。属性索引可以直接利用关键字在数据库中建立,而空间索引则需要采用一定的算法来实现,常用的方法有R树索引、网格索引和四叉树索引等。为每个对象分配的空间索引编号都存在该对象集的空间索引表中,即一个对象集表对应一个空间索引表。一个数据库中所有对象集表和相应的空间索引表都只对应一个总表。

表4 对象集表对应的空间索引表
Tab.4 Spatial index table of all kinds of object sets

索引块编号 索引块内的对象ID集合


….




4.2.2 对象存取

关系数据库以结构简单规范著称,访问存取操作技术也易为人们理解和掌握。当我们把地理对象存入数据库中以后,后面对这些对象的访问、修改也就容易了,在表中加、删记录也相当简单。采用的方法都是将给定的空间、属性条件组织成标准的SQL语句,输入查询算子里面执行即可。当然,对于空间条件的处理,需要自己写算法实现。总体来说,对数据库中对象的访问是以记录集为媒介的,不管是读出对象信息,还是修改、加入、删除记录(写进),都要通过记录集进行,因此必须首先进行查询(SQL查询和空间查询)得到带有所需字段的记录集。对于不支持这种规范化操作的文件型数据库,可以自己开发类似的访问引擎实现对象存取。图3表示了在数据库中进行对象存取的一种机制。



5 系统实现

相对于以前的GIS数据模型而言,整体模型更能真实地逼近客观世界,我们开发的商品化软件---SuperMap 系列软件很好地体现了整体GIS数据模型的思想,能够满足整体GIS的大部分需求,目前已经在国内外市场上得到了广泛应用。



图4展示的是SuperMap系列软件之一的通用桌面GIS系统---SuperMap Deskpro 3.0版本,该系统完全以面向地理实体的方式组织,不仅存贮有地理实体的位置与属性信息,而且能够方便地存取实体之间的拓扑关系和语义关系。在图层的组织方面,不仅符合用户对地理世界的直接感知模式(通过复合对象集实现),而且支持用户根据自己的需要对地理数据进行理性地思考、组织、存贮、管理与显示(简单对象集不仅能满足用户的专题需要,同时也能避免用户误操作对专题数据统一性的破坏)。在数据存贮与管理方面,既支持小数据量的文件型数据库,同时也支持市场上广为流行的大型商用数据库,如SQL Server和Oracle等,空间索引和查询的速度也满足海量数据用户的实际需求。作为桌面GIS系统,SuperMap Deskpro 3.0为用户提供了友好的图形界面,在操作上也为用户批量处理数据提供了很大的方便。SuperMap Deskpro 3.0参加国家科技部和国家遥感中心组织的2001年度国产地理信息系统软件测评后,作为优秀的桌面GIS产品获得了科技部的表彰推荐。

6 结语

用户感知到的地理世界是一个整体,而不是一个个数据层,而且是动态变化和处于三维空间中的。地理世界中的各种实体之间具有拓扑关系和语义关系。为了使做出来的GIS尽可能地符合用户对地理世界的认知,面向对向的整体GIS数据模型及其实现系统需具有如下特点:

1) 强调拓扑关系与语义关系;
  2) 强调特定对象的三维结构与时间属性;
  3) 重视在复合对象集与复合图层方面增强功能,例如增加任意类型的对象与对象集;
  4) 面向对象与拓扑关系数据结构相结合、面向实体与面向场数据模型共存;
  5) 客观世界是一个整体,本质上没有GIS的分层概念,但有时在GIS系统中也需要跨层研究对象之间的关系。对于这种跨层拓扑关系我们可以用三种方法揭示:①将各层显示在同一地图窗口中进行观察;②跨图层查询并将结果显示在同一地图窗口中,结果也可保存为地图或复合对象集;③利用整体数据模型中的网络场和点-线-面场有效地模拟跨层之间的拓扑关系。
  6) 地理实体之间的语义关系可以通过对象的属性来标识。
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2004-05-31 20:53
<img src="images/post/smile/dvbbs/em30.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部