第一章 对象建模与 Geodatabase
第一章 对象建模与 geodatabase
本章内容:
l 使用 GIS 进行对象建模
l 地理数据模型的发展
l Geodatabase,地理数据存储仓库
l 面向对象数据模型中的要素
l 地理数据服务及访问
l 创建数据模型
l UML 对象图导读
l 技术动向
地理数据模型是 GIS 中用以对真实世界进行模拟表达,它能够应用于地图生产、交互
式信息查询以及功能分析等。数据库技术和软件技术的不断发展也促进了新一代地理数据模
型的产生。
1
Modeling Our World
1.1 GIS 对象建模
地理信息系统(GIS)的目标是提供一个空间框架——在这个体系中,我们可以对地球
资源的合理化应用以及人类环境的可持续发展管理进行决策支持。
更通俗的说,GIS 以地图及符号的形式传递信息,使用地图,我们可以知道哪儿有什
么东西、这些东西是什么、使用什么交通工具经过哪些线路能到达那儿,并且我们还可以知
道与目的物邻近的地方还有哪些东西。我们也可以从单机 GIS 上交互式的获取信息,在这
样的 GIS 中,可以获取到很多印刷地图上无法表达的信息。比如,我们可以查询要素的所
有属性,获取网络中与某一个点要素连通的事物列表,还可以模拟水流量、传输耗时统计以
及污染源扩散信息等。
在 GIS 中,地理对象建模尤其重要,系统中的信息显示和分析方法都取决于地理信息
数据模型。本书的重心便是描述地理对象的建模。
1.1.1 系统建模的方式
人类和现实事物的交互是丰富多彩的,对现实世界建模的方式因此也多种多样。
比如河流:我们知道,河流是地球表面上的非常重要的元素。河流属于自然要素,人们
使用其作为交通运输工具,还将其作为划分行政区域界线的重大依据。在 GIS 中,可以考
虑使用以下几种方式进行河流建模:
l 河流做为组成网络的一系列线要素。每条线段都拥有流量、容量和其它属性。你可
以使用线性网络模型(几何网络)来分析水文流量或者船务运输等。
l 河流做为疆土的边界。河流可以作为政治区域比如省或者县的边界线,或者作为自
然区域的疆界线比如野生动物栖息地的自然边界。
l 河流做为面状要素表达,具备堤岸、河网以及航线等等描述信息。
l 河流做为模拟表面的一系列弯曲的地槽。通过地表河流的路径,你可以计算它的下
降剖面和比率、径流分水岭还有在预定降水量情况下洪灾发生的可能性。
2
第一章 对象建模与 Geodatabase
1.1.2 地图的使用方式决定数据模型选取
通过上面的例子,我们可以明显感受到,像河流这样普遍的地理要素能在 GIS 中以多
种方式表达。那么我们应该怎样得到模拟河流的最佳模型呢?
实际上,最好的通用数据模型是不存在的。数据模型的优劣取决于你的需要。在你的
GIS 中,你需要使用什么类型的地图,需要解决什么样的问题,这才是决定数据模型优劣的
标准。也就是说,数据的使用方式是决定数据模型选取的关键。
关键术语:
l 要素类(features)
在地图上,要素类是离散对象。“小”对象(small objects)表示为点要素;“长”对象表示
为线要素;“大”对象表示为多边形要素
l 几何网络(Geometric network)
几何网络用于存储参与线性拓扑功能的一系列线要素,体线增强型的线性拓扑功能。几何网
络适用于使用跟踪(trace)分析的系统,如电力网络、河流网络、道路交通网络
l 拓扑(topology)
拓扑存储地理对象之间的空间关系,可以通过指定拓扑规则来实现对现实世界的模拟,比如,
在土地利用信息中,每一片土地都对应一种土地类型,地块之间不允许存在缝隙(gap),这
样可以使用“Must Not Have Gap”的规则来管理土地利用数据
l 表面(surface)
在 Geodatabase 中,地球表面可以使用 TIN 来存储,其中高程值存储在栅格像元中;地球表
面也可以使用等高线来表现
l 位址(Location)
Geodatabase 中使用地址、XY 坐标定位、邮政编码、地区名称以及Route 等工具来体现 Location
(位址)。
l 影像(image)
在 Geodatabase 使用现有的栅格技术表现连续的影像数据。影像可用于作为地图的背景底图
1.2 地理数据模型的发展
地理数据模型是对真实世界的抽象,它 是由一系列支持地图显示、查询、编辑和分析的
数据对象组成的。
ArcInfo 8 引入了全新的面向对象的数据模型——geodatabase 数据模型。它能够表达要
素的自然行为以及这些行为的关联。这个全新的数据模型的意义是非常重大的。为了我们能
够很好理解 Geodatabase,下面预先回顾以前使用过的地理数据模型。
1.2.1 CAD 数据模型
最早的计算机制图系统,使用阴极射线管的显示线绘制矢量地图、使用行式打印机上的
3
Modeling Our World
加印技术绘制栅格地图。以此为起源,十九世纪六十到七十年代出现了精致的绘图硬件工具
以及能够使用合理逼真制图技术将地图符号化的制图软件。
这一时代,地图通常用一般的 CAD(计算机辅助制图)软件来制作。CAD 数据模型以
表示点、线、面的二进制文件格式存储地理数据。但是这些文件中,不能存储足够多的属性
信息。地图图层和注记标注是基本的属性描述。
1.2.2 Coverage 数据模型
1981 年,ESRI(Environmental System Research Institute,Inc.)推出了它的第一个商用
GIS 软件,ArcInfo,它实现了第二代地理数据模型——coverage 数据模型(也称地理关系数
据模型)。这个模型有两个关键之处:
l 空间数据与属性数据相结合。空间数据存储在二进制索引文件中,使 得显示和访问
最优化。属性数据存储在表格中,用等于二进制文件中要素数目的行来存储,并且
属性和要素使用同一 ID 连接。
l 矢量要素之间的拓扑关系也被存储。这意味着,线的空间数据记录包含这些信息:
哪些结点分割线、可以推算有哪些线相连,同时还包含线的右侧及左侧有哪些多边
形的信息。
在 Coverage 数据格式中,要素集中的点、弧段、多边形要素是和属性表是一一对应的
Coverage 数据模型的优势是用户可以自定义要素表格;不仅可以添加字段并且还可以
建立与外部数据表格的关联。
因为计算机硬件和数据库软件的性能局限,当时把空间数据直接存储在关系数据库是不
可能的。所以,coverage 数据模型将二进制文件中的空间数据与表格中的属性数据连接起来。
尽管将空间数据和属性数据分开存储,coverage 数据模型依然在 GIS 领域占统治地位。
其原因在于:coverage 数据模型使追求高性能的 GIS 成为可能,储拓扑关系的存储使得高级
的地理分析操作和更精确的数据输入得以实现。
1.2.2.1 Coverage 数据模型的局限
Coverage 数据模型有个重大缺陷——要素是以统一的行为聚集的点、线和面的集合。
也就是说,表示道路的线的行为和表示溪流的线的行为是一模一样的——显然,这并不是我
们所需求的。
中,如果你穿过多边形添加一条新的弧线,多边形会被自动分成两块。
但是光有上述的这些行为对于现实世界的模拟还是不够的。我们还需要支持真实世界对
象的特殊行为。比如,溪流沿山坡线向下游并且当两条溪流汇聚时,其流量应是上游两条溪
流流量的总和。另外,当两条道路交叉的时候,在它们的连接处就应该有一个交叉路口,除
非有另外的一个天桥或地道。这些事情在 coverage 中是很难完成的。
Coverage 数据模型支持的这种特定的行为加强了数据集的拓扑整合。例如在 coverage
4
第一章 对象建模与 Geodatabase
1.2.2.2 在 coverage 中自定义要素
在 coverage 数据模型中,ArcInfo 应用开发者已经取得了一些显著的成果,他们用 AML
语言编写宏代码来向要素添加某些类型的行为。在 coverage 中,许多复杂的、大规模的、
特定的工业应用得到了成功模拟与创建。
然而,随着应用变得复杂,当需要一种更好的关联要素及其行为的数据模型的时候,在
coverage 的基础上编写再好的代码也无法满足应用的需求。并且,对于开发商来说,要将数
据模型与最新的应用代码保持一致,是一个难度太大的问题。因此,对新一代地理数据模型
出现的需求越来越迫切,在这个新模型中,要求具有能够将要素与行为紧密结合的体系框架。
1.2.3 Geodatabase 数据模型
ArcInfo 8 引入了一种新的面向对象的数据模型——geodatabase 数据模型。在这个全新
的数据模型中,通过给要素添加更贴切的“自然”行为,从而使得 GIS 数据库中的要素更
加智能化,在 Geodatabase 中,还允许在要素之间定义几种类型的关联。
Geodatabase 数据模型中,数据的物理模型与逻辑模型的概念联系更加紧密。Geodatabase
中的数据对象大多都是用户在逻辑数据模型中定义的对象,如业主、建筑物、宗地和道路等
等。
其实,有了 geodatabase 数据模型,你就可以在不需要编写任何代码的情况下,轻松实
现大量的“自定义”行为了——这些所谓的“自定义”行为在以前的数据模型中,都是需要
编写代码 才 可 以 实 现的 。这 些行 为可 以通过域、验证规则和 ArcInfo 软件框 架中为
Geodatabase 提供的其它功能来实现。有了 geodatabase 数据模型,只有在要素需求特别专业
化的行为操作的时候才需要用到代码编写。
1.2.4 对象交互作用的方案
面向对象的数据模型是十分重要的,可以浏览底下描述的要素所需要执行的常见的任务
工作。从这些执行方案中,你可以体验到面向对象数据模型的优点。下面我们可以看看
geodatabase 数据模型的一些特定性质。
1.2.5 添加和编辑要素
当你向 GIS 数据库添加地理要素时,你需要根据一些规则来确保数据的准确性:
l 如果需要对要素赋值,那么这些要素必须是预先定义的一组允许的值域范围内的一
个。例如,地块要有特定的土地利用类型,如居民地、农业用地或工业用地。
每个要素对应一条记录,记录的某个列值可以通过域(Domain)限定
l 只有在某些条件满足时,要素才能与其它要素邻接或相连。把酒店放在学校附近是
违法的。城市道路不能与高速公路相连,除非有如辅桥这样的连接设备。
5
Modeling Our World
通过空间位置确定在学校周围有哪些不符合距离要求的酒吧
道路交通中的主要设施之间必须通过相应的辅助设施实现连通
l 某些要素的集合要与它们的自然空间分布一致。河流是由上游向下汇流的,汇聚点
的流量是上游河流的总流量。
l 要素的几何形状遵从它的逻辑分布。组成道路的线和曲线应该是正切的,建筑物转
角通常是直角。
1.2.6 要素之间的关联
现实世界中的对象都与其它对象有着错综复杂的关联。从 GIS 角度出发,这些关联可
以划分为三种:拓扑、空间和普通(general)。
以下是各个类型的关联的实际例子:
l 当你在一个电力设施系统中编辑要素时,你要保证一级线路和二级线路的末端正确
6
连通并且可以在该电力网络上做跟踪分析。当你在连通系统中载入和编辑要素的同
时,需要定义一系列的拓扑关系。
第一章 对象建模与 Geodatabase
l 当你处理一幅有建筑物、街区和学校的地图时,你可能需要决定在哪个街区创建某
一特定建筑物、在学校区域中应该有哪些建筑物,还有哪个街区应该不包含建筑物。
这些都属于 GIS 的基本功能——判断要素是否在另一要素内、是否接触、在另一
要素外或与另一要素重叠。空间关联是从要素的几何形状来获取的。
l 还有一些对象可能在图上无法表现关联。比如地块与业主存在关联,但业主并不能
够表现为地图上的要素,使用普通的关联就可以将地块和业主连接起来。另外,对
于地图上某些要素之间具有的关联,然而它们的空间关联可能很难判断。比如,用
度表在变压器邻近,但它们并不接触。在狭促的地图中,很有可能无法使用空间关
联将用度表和变压器的关联表达出来,这时我们需要使用一般关联,将这两个要素
关联在一起。
1.2.7 制图显示
在大多数情况下,用户都可以使用预先定义好的符号绘制要素,但有些时候,现有的符
号库无法满足制图需要,因此需要对地图符号进行定制。比如:
7
Modeling Our World
l 显示等高线的时候,你要在等高线的平直部分高程标注,比如以一个平均 4 英寸的
间距标注,且不能遮盖其它要素。
l 当你在一幅内容详尽的地图上绘制道路时,你需要将道路绘制成平行线且在相交处
有明显的交点。
l 当多条输电线物理地搭建在同一个电线杆上,你需要以一组平行线来区分描述它
们,并且定义它们之间的间距。
1.2.8 互操作分析
动态地图显示中,用户可以对要素进行操作、获取要素的属性及关联,并进行分析操作。
比如:
l 操作地图中的显示要素,使用表格查询属性,更新要素属性值。
l 查找电力网络中需要维修的线路,分析得到所有受影响的用户,并做出邮件列表通
知单。
8