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种基本类型。对象集用来存贮对象的空间与属性数据,而图层则用来设置对象集的显示风格并控制对象集的显示范围、显示比例和操作特性(如可显示、可选择、可编辑和可捕捉等),二者各司其职又相互联系。在对应关系上,一个图层只对应一个对象集,而一个对象集却可显示在不同的地图窗口中对应多个图层,因此对象集与图层之间的关系是一对多的关系。

3.3 数据库

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

3.4 地图或地图窗口

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

3.5 工作空间

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

面向对象整体GIS数据模型的设计与实现相关推荐

  1. [GIS笔记] 模型篇-数据模型、空间数据模型、GIS数据模型、逻辑数据模型的种类

    文章目录 模型篇 数据模型.空间数据模型.GIS数据模型 数据模型(逻辑数据模型)的种类 模型篇 数据模型.空间数据模型.GIS数据模型 数据模型 说明 是什么 为了将复杂的地理事物和现象重载到计算机 ...

  2. 面向对象方法,编程,设计,测试

    OOA Object-Oriented Analysis:面向对象分析方法是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题.OOA与结构化分析有较大的区别.OOA所强调的是 ...

  3. 面向对象方法中的数据库设计

    转自:http://blog.csdn.net/coffeewoo/article/details/5291582 在面向对象中,是没有数据流这一说法的.业务的完成是由对象及消息来完成的,只有&quo ...

  4. 数据仓库系列(四)数仓架构以及多维数据模型的设计

    文章目录 一.前言 二.数据仓库的定义 三.数据仓库的特点 四.数据仓库的作用 五.数据仓库的架构 六.数据仓库的要求 七 .数据仓库分层 八.数据仓库四个层次的划分 8.1 ODS层 8.2 PDW ...

  5. 从面向对象的设计模式看软件设计

    原文作者:陈皓( 酷 壳 – CoolShell.cn) 原文链接:从面向对象的设计模式看软件设计 前些天发了一篇<如此理解面向对象编程>的文章,然后引起了大家的热议.然后我在微博上说了一 ...

  6. java对象扩展方法_高可扩展的面向对象代码架构是如何设计的

    导语 Java后端程序员的日常工作,大多数可能都是写基于数据库CRUD的Dao层.Manager层.Service层.Controller层,需求来了,就对着这几个层一顿怼代码.调试跑通了,就完事了. ...

  7. 论县市级二甲医院的网络整体规化与设计

    论县市级二甲医院的网络整体规化与设计 摘要 2016年9月,本人所在的xx市人民医院决定对现有的网络进行升级改造.项目总资金550万元,该期目标是将医院各个病区.各栋大楼.总院和分院连接成一个畅通的. ...

  8. GIS数据模型的说明 (骆老师专用)

    仅供骆老师及他的学生参考. 1. 机器学习的角度 1.1 结构化数据的矩阵表示法 在机器学习领域,数据描述最基础.最常用的方式是 n × m n \times m n×m 矩阵 X \mathbf{X ...

  9. Java面向对象实验 8 ——图形用户界面设计

    目录 1.算数运算 2.算术测试 3.选课信息 4.计算随机而变 5*.菜单文本 1.算数运算 编写一个应用程序,设计一个窗体,其中有一个JCombox组件(+.-.*./),以及2个文本框和一个富文 ...

最新文章

  1. php隐藏webshell_【web端权限维持】利用ADS隐藏webshell
  2. MSM8953 core 3.0 usb otg USB 笔记
  3. 广州站长沙龙 MIP 问题及答案
  4. AutoCompleteTextView组件的功能和用法
  5. Struts2之文件上传(单文件/多文件)
  6. Android 为View实现双击效果
  7. session简单学习2
  8. 期权、期货及其他衍生品 Chapter14 维纳过程与伊藤引理
  9. GBASE数据库迁移(Oracle到GBase 8s的数据类型映射)
  10. 电子技术应用课程设计
  11. java 创建meta inf_java – 在Eclipse中创建META-INF / services文件夹
  12. Cobbler自动化批量安装Linux操作系统
  13. springmvc自定义参数解析器
  14. 华为设备配置BGP AS号替换
  15. 矩阵论笔记(一) - 线性空间、线性子空间、矩阵的值域和核空间
  16. 今年大厂门槛高?阿里内部5份专属PDF带你激流勇进,厚积薄发,勇夺offer
  17. 宝塔php版本切换没效果_关于宝塔面板默认PHP版本及切换
  18. 浅谈浏览器标准模式与怪异模式、文档类型
  19. java项目内存分析jmap命令+MAT工具
  20. 什么是DTE 、DCE?

热门文章

  1. 如何打开mysql navicat_navicat怎么打开数据库
  2. Python切片练习
  3. IPv6地址格式简介以及常见的IP地址
  4. idea注册码/不定期更新
  5. 找项目合作、异业合作网站有哪些?
  6. Unity的基础小知识
  7. 带有RESTEasy + JAXB + Jettison的JSON示例
  8. uni-app库lottie-miniapp使用方法
  9. 外部浏览器打开微信小程序指定页面
  10. 双亲委派模型为什么要打破双亲委派模型