空间数据结构与数据库数据模型
三、 空间数据结构与GIS 数据模型
地理信息系统所处理的数据与一般事务性信息系统如银行管理系统、图书检索系统不同。GIS 的数据处理不仅包括所研究对象的属性关系,还包括研究对象的空间位臵以及空间拓扑关系等信息,数据量大,结构复杂。因此,人们对GIS 中的数据结构和数据模型进行了大量的研究,并发展了一整套空间数据处理的算法。
一、空间数据结构的概念
数据结构是指数据的组织形式,可以分为抽象数据结构(或称逻辑结构) 和数据存贮结构(或称物理结构) 来进行研究。
所谓抽象数据结构是指人们仅从概念上描绘数据之间的排列和联系,而并不涉及数据和具体程序管理细节。
数据存贮结构则是为实现某一抽象数据结构而具体设计的数据存贮管理方式. 是依照任务的不同,软件系统和设计者的不同而改变的,具有一定的特殊性,是前者的一个具体实现。
地理空间数据在GIS 中的流向可以认为经历了四个阶段。用户认知的数据结构输入GIS 系统后转换成为GIS 空间数据结构,然后,为有效地进行数据管理,将其转化为数据库结构,最后按某种特定程式以硬件结构写入存贮介质。上述流程即为数据的输入过程。
地理空间实体可以抽象为点、线、面三种基本地形要素来表示它的位臵、形状、大小、高低等。
---点(零维) :又称为元素或像元,是一个数据点,具有一对(x,y) 坐标相至少—个属性,逻辑上不能再分。这里所谓逻辑上不能再分是指抽象的点而不是几何点,因为事实上抽象的点可以是实体线段或面块,对某个比例尺或图像分辨率而言,它们可以被抽象为以一对坐标表示的数据点。
---线:是由一个(x,y)坐标对序列表示的具有相同属性的点的轨迹。线的形状决定坐标对序列的排列顺序,线上每个点有不多于二个邻点。地理实体,如河流、道路、地形线、公共设施走廊、区域边界、地质界线等均属线状地物,其特点是线上各点有相同的公共属性并至少存在一个属性。
---面:是以(x,y)坐标对的集合表示的具有相同属性的点的轨迹。面的形状不受各点坐标对排列顺序的影响。凡是面的内部点可以有多于三个的邻点,面内每个点应至少具有一个相同属性。土壤、植被、行政区划、岩石分类等地理实体属面状地物。
如果顾及平面位臵与高程位臵结合起来所构成的空间数据模型则还应考虑三维的体元素,作为点、线、面三个基本地形要素的—个外延。总之,从几何上讲,人们正是通过上述这些基本要素构成了对各种地理实体的认识结构。
地理信息系统空间数据结构就是指空间数据的编排方式和组织关系。空间数据编码是空间数据结构的实现。
目的是将图形数据、影像数据、统计数据等资料,按一定的数据结构转换为适用于计算机存储和处理的过程,不同的数据源,其数据结构相差很大,同一数据源,也可以用许多方式来组织数据,按不同的数据结构去处理,得到的截然不同的内容。
如下图所示为用这两种数据结构来表示同一块由不同土壤结构构成的土地。图中(a) 的土壤结构是由一组具有起终点坐标的线段和必要的连接指针构成。因为表示物件的线段有方向性,所以称之为矢量结构。线段端点的指针表明了这些线段应如何连接在一起才能形成相应地块。这种结构可以表述为:
地块→矢量组→连通性
图中(b) 的土壤结构是由格网中某一部分的像元或称栅格集合所构成,所以称之为栅格结构。在同一集合中的像元都具有同样的编码“a ”或“b ”或“c ”等。实际上这些值本身并不一定显示出来,通常它们可能只代表某一符弓或是某种颜色或是影像灰度, 这种结构可以表述为:
地块→符号/颜色→像元
图: 用矢量结构或栅格结构表示同一地块的例子
从上所述, 空间数据的结构有矢量数据结构和栅格数据结构两种形式。目前大多数GIS 软件均结合了这两种数据结构,或采用混合数据结构或采用矢栅一体化结构。
GIS 的空间数据结构在计算机系统中的实现通常是通过空间数据编码的方法进行的。由于GIS 数据量极大, 一般需要采用压缩数据的编码方式以减少数据冗余。一些常用的编码方式有:
矢量数据结构编码方式:坐标系列编码、层次索引编码、拓扑结构编码等 栅格数据结构编码方式:链码、直接栅格编码、游程长度编码、块码、四叉树码等
计算机存储和处理数据的效率,在很大程度上取决于数据组织方式的优劣。数据结构在GIS 中对于数据采集、存储、查询、检索和应用分析等操作方式有着重要的影响。
一种高效率的数据结构,应具备几方面的要求:
① 组织的数据能够表示要素之间的层次关系,便于不同数据联接和覆盖。 ② 正确反映地理实体的空间排列方式和各实体间相互关系。
③ 便于存取和检索。
④ 节省存贮空间,减少数据冗余。
⑤ 存取速度快,在运算速度较慢的微机上要达到快速响应。
⑥ 足够灵活性,数据组织应具有插入新的数据、删除或修改部分数据的基本功能。
空间数据结构选择对于GIS 设计和建立起着十分关键的作用,只有充分理解了GIS 的特定的数据结构,才能正确有效地使用系统。
一、栅格数据的基本概念
栅格数据是最简单、最直观的一种空间数据结构,它是将地面按一定分辨率划分为均匀的网格,每个网格作为一个像元,像元的位臵由所在行、列号确定,像元所含有的代码表示其属性类型或仅是与其属性记录相联系的指针。
在地理信息系统中,扫描数字化数据、遥感数据、数字地面高程数据(DTM)网格化后的物化探数据以及矢量-栅格转换数据等都属于栅格数据。
在栅格结构中:
● 点用一个像元来表示;
● 线状地物用沿线走向的一组相邻像元来表示。由线的定义可知,每个
线上的像元最多只有两个相邻像元在线上。
● 面状地物或区域则用具有相同属性的相邻像元集合表示。由面的定义
可知,每个像元可以有两个以上的相邻像元属于同一区域。来自遥
感、数字摄影测量的数据屑于典型的栅格结构。如遥感影像像元的数
值表示该影像的灰度等级。
因为在栅格结构中,是将地面分划成相互邻接的大小均匀格网方块,然后使每—地块与一个栅格像元相对应。因此,由栅格结构所表示的地表数据是不连续的,是经过量化的离散值,而每一个像元大小与它所代表的实地地块大小之比就是栅格数据的比例尺。这样,在使用栅格数据计算面积、长度、距离、形状等空间指标时,若像元所代表的实地地块尺寸较大,则会造成较大的计算误差,误差随像元的增大而增加。
二、栅格数据层的概念
地理信息系统对现实世界的描述可以以地理空间位臵为基础,按道路、行政区域、土地使用、土壤、房屋、地下管线、自然地形等不同专题属性来组织地理信息。
地理数据在栅格数据结构中必须分层组织存储:在栅格数据结构中,物体的空间位臵就用其在笛卡尔平面网格中的行号和列号坐标表示,物体的属性用像元的取值表示,每个象元在一个网格中只能取值一次,同一像元要表示多重属性的事物就要用多个笛卡尔平面网格,每个笛卡尔平面网格表示一种属性或同一属性的不同特征,这种平面称为层。每一层构成单一的属性数据层或专题
信息层:例如同样以线性特征表示的地理要素,河流可以组织为一个层,道路可以作为另一层,同样以多边形特征表示的地理要素,湖泊可以作为一个层,房屋可以作为另一层,根据使用目的不同,可以确定需要建立哪些层及需要建立哪些描述性属性。在下图中,左边是现实世界按专题内容的分层表示,第三层为植被,第二层为土壤,第一层为地形,中间是现实世界各专题层所对应的栅格数据层。右图是对不同栅格数据层进行叠加分析,并得出分析结论。
图: 栅格数据的分层与叠合分析
三、栅格数据取值
栅格数据通常有下述几种途径的得到
1) 格网法取值
2) 矢量结构转化为栅格数据
3) 扫描法
4) 遥感影象数据
格网法是是在专题地图上均匀地划分网格,每一网格覆盖部分的属性数据,即为该网格栅格数据的取值。但是常常会遇到一些特殊的情况,同一网格可能对应地图上多种专题属性,而每一个单元只允许取一个值,目前对于这种多重属性的网格,有不同的取值方法:
图: 栅格数据取值方法
● 中心归属法:每个栅格单元的值以网格中心点对应的面域属性值来确
定,如图中 (a)所示。
● 长度占优法:每个栅格单元的值以网格中线(水平或垂直)的大部分
长度所对应的面域的属性值来确定,如图中(b )所示。
● 面积占优法:每个栅格单元的值以在该网格单元中占据最大面积的属
性值来确定,如图中(c )所示.
● 重要性法:根据栅格内不同地物的重要性程度,选取特别重要的空间
实体决定对应的栅格单元值,如稀有金属矿产区,其所在区域尽管面
积很小或不位于中心,也应采取保留的原则,如图中(d )所示。
四、栅格数据文件的组织方法
假定基于笛卡尔坐标系上的一系列叠臵层的栅格地图文件已建立起来,那么如何在计算机内组织这些数据才能达到最优数据存取、最少的存储空间、最短处理过程呢?如果每一层中每一个象元在数据库中都是独立单元即数据值、象元和位臵之间存在着一对一的关系,按上述要求组织数据的可能方式有三种: ● l )以象元为记录的序列。不同层上同一象元位臵上的各属性值表示为一个
列数组(图a )。
● 2)以层为基础。每一层又以象元为序记录它的坐标和属性值,一层记录完
后再记录第二层(图b )。这种方法较为简单,但需要的存储空间最大。 ● 3)以层为基础,但每一层内则以多边形(也称制图单元)为序记录多边形
的属性值和充满多边形的各象元的坐标(图C )。
三种方式的优缺点:
方法(1)节省了许多存储空间,因为N 层中实际只存储了一层的象元坐标: 方法(3)则节省了许多用于存储属性的空间,同一属性的制图单元的n 个像元只记录一次属性值。它实际上是地图分析软件包中所使用的分级结构。这种多像元对应一种属性值的多对一的关系,相当于把相同属性的像元排列在一起,使地图分析和制图处理较为方便;这种方法很适合应用压缩编码的方法来存贮数据,通常多采用链码、行程编码、块码和四叉树码等方法。
方法(2)则是每层每个像元一一记录,它的形式最为简单。
图: 栅格数据文件的组织方式
五、栅格数据存储的压缩编码
1.直接栅格编码
直接栅格编码是最简单最直观而又非常重要的一种栅格结构编码方法,通常称这种编码的图像文件或栅格文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐象元记录,也可奇数据行从左到右,而偶数行由右向左记录,为了特定目的还可采用其它特殊的顺序。
如右图所示的栅格结构就可以记录成:
7,7,7,6,6,6,6,6,7,7,7,7,7,6,
6,6,7,7,7,7,7,7,6,6,4,4,4,7.6,6,
6,6,4,4,4,4,4,6,6,6,4,4,4,6,5,5,
6,6,0,O ,4,4,6,6,6,6,0,0,1,0,6,6,
0,0。
2.链式编码
链式编码又称为弗里曼链码(Freeman ,1961)或边界链码。它用一个起点和一系列在基本方向上的单位矢量描述出线状地物或区域边界。所采用的基本方向可以事先定义。
例如.我们可以定义基本方向为:东=0,北=1,西=
2,南=3,则如右图所示的属性代码为6的线状地物,
其位臵可以表示为:1,4,3,2,3,2,32,02,3,
0,3,03。其中前二个数字1和4表示起点为第1行第
4列,从第3个数字起每个数字表示单位矢量的方向。
数字的上标表示单位矢量的前进量。这里将单位矢量的
长度默认为一个栅格像元。当然, 我们也可以采用8个
基本方向码进行编码
.
链码可以有效地压缩栅格数据,尤其是对于计算面积或长度或转折方向的凸凹度等运算较为方便,比较适合存贮图形数据。缺点是在进行叠加操作时,对边界的合并和插入等修改编辑工作比较困难。对局部的修改要涉及改变整体结构。因此效率较低。另外,由于链码是以每个区域为单位存贮边界,所以相邻边界将被存贮两次而产生数据冗余,这些问题使链码的应用受到一定限制。
3.行程编码
我们知道, 在同一面元区域内,相邻像元的属性代
码值是相同的,这样就非常适合于用压缩的编码方式. 将相邻等值的像元合并,记录下行程长度和代码值,这种方法称为行程编码。
通常有两种行程编码方案可实现对数据的压缩:
一种编码方案是行程长度编码,即在进行行列扫
描过程中只在各行(或列) 数据的代码发生变化时依次
记录该代码以相同代码出现的个数(长度) ,从而实现
数据的压缩。例如对右图所示的栅格数据,可进行如下行程编码:
(7,3) ,(6,5),(7,5) ,(6,3) ,(7,6) ,(6,2) ,(4,3) ,(7,1) , (6,4) ,(4,5) ,(6,3) ,(4, 3),(6,5) ,(0,2) ,(4, 2),(6,4) ,(0,4),(6,2) ,(0,2) 。这些只用了38个整数就可以表示右图所示的栅格数据.而前述的栅格矩阵法中直接编码记录需要64个整数表示,可见行程编码压缩数据是十分有效且简便的。实际上,栅格图像的复杂程度直接影响到行程编码的压缩比,图形变化少.则行程数就少,压缩效率就高,反之压缩比就低。
另一种编码方案是行程起始编码(或行程终止编码), 即在逐行(或列) 记录属性代码时,仅记录下发生变化的位臵和相应代码,可得到行程起始编码为:(1,7) ,(4,6),(1,7) ,(6,6) ,(1,7) ,(7,6) ,(1,4) ,(4,7) ,(5,6) ,(1,4) ,(6,6) ,(1,4) ,(6,6) ,(1,4) ,(4,6) ,(1,0) ,(3,
4) ,(5,6) ,(1,0) ,(5,6) ,(7,0) 。
行程编码具有压缩效率高、易于检索、运算简单等优点,区域越大、数据相关性越强则该法节省存贮空间越多。这适用于计算机存贮容量小,且数据需大量压缩,而又要避免复杂的编码解码运算增加处理和操作时间的情况。这种编码方法减少了栅格数据库的数据输入量,但计算期间的处理和制图输出处理工作量都有所增加。
4.块式编码
块式编码是将行程编码扩大到二维的情况,把
多边形范围划分成由象元组成的正方形,然后以正
方形为单元对各个正方形进行编码。
图右图所示对多边形进行分块和编码。
块式编码的数据结构中包括3个数字:块的原
点坐标(可以是块的中心或块的左下角象元的行、
列号)和块的大小(块包括的象元数或块的半
径),再加上记录单元的代码组成。这种变换过程
称为中轴变换。
(1,1,3,7) ,(1,4,1,6) ,(1,5,1
,
6) ,(1,6,2,6) ,(1,8,l ,6) ;(2,4,2,7) ,(2,8,l ,6),(3,6,1,
7) ,……
一个多边形所能包含的正方形越大,多边形的边界越简单,块式编码的效果就越好。行程和块式编码都对大而简单的多边形更有效,而对那些碎部仅比象元大几倍的复杂多边形效果并不好。块式编码即中轴变换的优点是多边形之间求并及求交都方便;探测多边形的延伸特征也较容易。但对某些运算不适应,必须再转换成简单栅格数据形式才能顺利进行。
5.四叉树编码
四叉树编码是以栅格数据二维空间分布的特点,将整个图像区域按照四个象限进行递归分割(2n X2n ) 最后逐步分解为一系列被单一类型区域内含的方形区域,所分解的最小方形区域为一个栅格像元。按照象限递归分割的原则,所分图像区域的栅格阵列应为2n X2n (n为分割的层次数n >1) 的形式,无论分割到哪一层的象限,只要子象限上仅含一种属性代码或符合既定要求的少数几种属性时,则停止继续分割,否则就一直分割到单个像元为止。这样最后可得到一棵四分叉的倒向树。四叉树编码正是通过这种树状结构来记录和压缩栅格数据,并通过这种结构实现查询、修改和量算等操作。因此,四叉树编码法不仅能压缩数据,还可提高图形操作的效率。
右图是对前述栅格数据经过
四叉树编码得到的四叉树。
在图(a)中各子象限的大小不
同,它们是由组成该子象限的具
有相同代码的栅格像元构成的子
块而决定的。图(b)中最上面的结
点称作根结点。它对应于整个图
形区域。
在这个例子中,总共划分出
四层结点。每层结点对应于不同
尺寸的子象限。如第二层的4个
结点对应于整个图形区域的四个
象限:
西北(NW)象限=2
东北(NE)象限 =3
西南(SW)象限=0
东南(SE)象限=1
若某子象限仅含一种属性代
码时,就不冉继续划分,即被记
为叶结点或终止结点。叶结点可以落在任意层上, 它表示的区域仅具有某一类型的地物或符合既定要求的少数几种地物。图(b) 所示的四叉树结构中,共有43个叶结点.这说明原栅格数据图被划分
为43个大小不等的子象限。每个叶结点下的数字表尔该子象限代表区域的属性代码。每个结点上方的数字表示该子象限的地址编号。上图中,
共分割层次
数n =3.所得到四叉树的最大层数为n 十l =4。也就是说,若象限递归分割层次数为n ,则可得到结点的最大层次数为n 十1。
从对上述图形的四叉树编码过程中可见,位于结点层次较高的子象限尺寸也较大,说明其分解深度小,也即分割次数少;而低层次上的象限尺寸就较小,反映其分解深度大即分割次数多。这样编码后,可反映出整个图形区域的空间地物分布情况,在某些位臵上单一地物分布较广,则采用较少的分割次数;在地物较复杂,变化较大的区域,则用加深分解深度,增加分割次数的方式编码。所以,采用四叉树编码方法能够自动地依照实际图形区域的地物分布情况而调整象限分割的尺寸和疏密,从而产生较高的数据压缩效率。
一种四叉树编码的方式被称为指针四叉树(或常规四叉树) ,即通过在子结点和父结点之间设立指针的方式建立起整个结构。按这种方式, 四叉树的每个结点通常存储6个量.即四个子结点指针、一个父结点指针相该结点的属性代码。这种方法除了要记录叶结点外.还要记录中间结点,一般要占用较大存储空间。但是另一方面,指针四叉树虽然增加了—些存储量,却换取了处理上的简便和灵活,例如,要将相邻的四块四叉树合并成一棵新树,对指针四叉树来说就十分容易,只要将这四块四叉树作为新树的子树,使它们的根结点指针指向一个共同的根结点就行了。因此,指针四叉树对于数据检索、多要素叠臵分析和求实体间的空间关系等操作都很方便。
在GIS 中.还经常采用一种能以较小数据冗余存贮图形图像,而且又能方便地完成各种图形图像操作的编码方式, 即所谓线性四又树方法,该方法记录从根结点至叶结点的路径以及叶结点的属性代码,即仅记录每个结点的地址、深度和属性代码三个量。这种方法较指针四叉树节省存储量,并且由于记录了结点地址, 就能够直接找到其在四叉树中的走向路径,也可以换算出栅格区域中的行列位臵。
通常定义从根结点到叶结点的路径可以按照象限递
归分割的顺序编号进行。无论分割到哪一层,总是用
0、1、2、3分别表示SW 、SE 、NW 、NE 四个象限的编
号,只是每个子象限子结点编号的前缀必须为其父象限
(父结点) 的编号,如右图所示。
通常每个叶结点的地址编号在计算机中是用二进制
数来表示的,在每一层上的象限位臵(0、1、2、3) 均可
用两位二进制数写出。例如,0记作二进制数00,1记
作二进制数01,2和3分别记作二进制10和11。则编号为213的子象限(叶结占) 的地址可用二进制表示为;
编号213—100111
这样,记录了各个叶结点的地址,再记上各自相应的属性代码值就记录了整个图像, 并可在此基础上进行多种图像操作。
实际上,为了得到四叉树叶结点的地址码还可以来用一种被称为Morton 码的方法直接得到。
四叉树编码法有许多有趣的优点:
① 容易而有效地计算多边形的数量特征:
② 阵列各部分的分辨率是可变的,边界复杂部分四叉树较高,即分级多,分辨率也高,而不需要表示许多细节的部分则分级少,分辨率低,因而既可精确表示图形结构又可减少存储量;
③ 栅格到四叉树及到四叉树到简单栅格结构的转换比其他压缩方法容易; ④ 多边形中嵌套异类多边形的表示较方便。
四叉树编码的不足之处是转换的不定性,同一形状和大小的多边形可能得出多种不同的四叉树结构,故不利于形状分析和模式识别。但因它允许多边形中嵌套多边形即所谓“洞”的结构存在,使越来越多的GIS 工作者对四叉树结构很感兴趣。
上述这些压缩数据的方法应视图形的复杂情况合理选用,同时应在系统中备有相应的程序。另外,用户的分析目的和分析方法也决定着压缩方法的选取.
前面讨论了5种栅格数据编码方法。一般说来,对数据的压缩是以增加运算时间为代价的。在这里时间与空间是一对矛盾。为了更有效地利用空间资源,减少数据冗余,有时不得不多费一些机器运算时间进行编码以及进行较为复杂的图形运算。一个好的压缩编码方法就是要在尽可能减少运算时间的基础上达到最大的数据压缩效率,并且使算法适应性强,易于实现。
栅格矩阵法简单明了可直观地反映栅格图像数据,但是数据冗余太大;链 码的压缩放率较高,已接近矢量结构,对边界的运算比较方便,但是不具备区域的性质,区域运算较困难;行程编码既可在很大程度上压缩数据,又可较大限度地保留原始栅格结构、而且编码解码也较为容易;块码和四叉树编码部具有区域性质,而且有可变的分辨率,压缩效率比较高。四叉树编码可以直接进行大量的图形图像运算,效率高,使用也日益广泛。当前,在四叉树编码的基础上,对三维栅格数据己开始发展所谓八叉树编码方法。
一、矢量数据结构
矢量数据结构是通过记录坐标的方式,用点、线、面等基本要素尽可能精确地来表示各种地理实体。
矢量数据表示的坐标空间是连续的,因此可以精确定义地理实体的任意位臵、长度、面积等。如前所述,其显示精度较栅格结构高。事实上,它主要受数字化设备的精度和数值记录字长的限制。
在矢量结构中.对于点实体只是记录其在某特定坐标系下的坐标和属性代码, 可以将其空间数据和属性数据结合在一起,将点的坐标直接作为点实体的两个属性值对待。在对线实体进行数字化时,就是用一系列足够短的直线段首尾相接表示一条曲线,当曲线被分割成多而短的线段后, 这些小线段可以近似地看成直线段,而这条曲线也可以足够精确地由这些小直线段序列表示。在矢量结构中,只记录这些小线段的端点坐标,将曲线表示为一个坐标序列,坐标之间认为是以直线段相接,在某一精度范围内可以逼真地表示出各种形状的线状地物。对于面实体而言,在GIS 中常用所谓“多边形”的概念来表述一个任意形状,并且边界完全闭合的空间区域。该闭合区域的边界线同前面介绍的线实体一样, 也可以被看作是由一系列多而短的直线段组成,每个小线段作为这个区域的一条边,因此该区域也可看成是由这些边组成的多边形了。
矢量数据结构直接以几何空间坐标为基础,记录取样点坐标,可以将目标表示得精确无误。对于一个数字制图系统而言,按照这种简单的记录方式,再适当增加目标的注记名称、输出的线型和符号等,在矢量绘图仪上就可以得到
精美的地图。另外,该结构还可以对复杂数据以最小的数据冗余进行存贮,相对于栅格结构来说,它还具有数据精度高,存贮空间小等特点,是一种高效的图形数据结构。
因为矢量结构的空间定位是根据坐标直接存贮的,而属性数据现在通常是建立表结构文件,用关系数据库管理。因此,矢量数据结构具有定位明显、属性隐含的特点。由于这一特点点使其在某些方面有便利和独到之处,例如在计算长度、面积、形状和图形编辑、几何变换操作中,矢量结构有很高的效率和精度。但是同样由于这一特点,也使其图形运算的算法要较栅格结构复杂;在涉及叠加运算、邻域搜索等操作方面也不及栅格结构简单.
二、矢量数据结构编码的基本内容
1.点实体
点实体包括由单独一对x ,y 坐标定位的一切地理或制图实体。在矢量数据结构中,除点实体的x ,y 坐标外还应存储其它一些与点实体有关的数据来描述点实体的类型、制图符号和显示要求等。
点是空间上不可再分的地理实体,可以是具体的, 也可以是抽象的,如地物点、文本位臵点或线段网络的结点等,如果点是一个与其它信息无关的符号,则记录时应包括符号类型、大小、方向等到有关信息;如果点是文本实体,记录的数据应包括字符大
小、字体、排列方式、比例、
方向以及与其它非图形属性的
联系方式等信息。对其它类型
的点实体也应做相应的处理。
右图说明点实体的矢量数据结
构的一种组织方式。
2.线实体
线实体可以定义为直线元
素组成的各种线性要素,直线
元素由两对x ,y 坐标定义。
最简单的线实体只存储它的起
止点坐标、属性、显示等有关
数据。例如,线实体输出时可能用实线或虚线描绘,这类信息属符号信息,它说明线实体的输出方式。虽然线实体并不是以虚线存储,仍可用虚线输出。 弧、链是n 个坐标对的集合。这些坐标可以描述任何连续而又复杂的曲线。组成曲线的线元素越短,x ,y 坐标数量越多,就越逼近于一条复杂的曲线。既要节省存储空间,又要求较为精确地描绘曲线,唯一的办法是增加数据处理工作量。亦即在线实体的纪录中加入一个指示字,当起动显示程序时,这个指示字告诉程序:需要数学内插函数(例如样条函数)加密数据点且与原来的点匹配, 于是在输出设备上得到较精确的曲线。不过,数据内插工作却增加了。弧和链的存储记录中也要加人线的符号类型等信息。
线的网络结构:线或链携带彼此互相连接的空间信息,而这种连接信息又
是供排水网和道路网分析中必不可少的信息。因此要在数据结构中建立指针系
统才能让计算机在复杂的线网结构中逐线路综每一条线。指针的建立要以结点为基础。如建立水网中每条支流之间连接关系时必须使用这种指针系统.指针系统包括结点指向线的指针。每条从结支流之间连接关系时必须使用这种指针系统.指针系统包括结点指向线的指针。每条从结点出发的线汇于结点处的角度等,从而完整地定义线网络的拓朴关系。
如上所述。线实体主要用来表示线状地物(公
路、水系、山脊线)、符号线和多边形边界,有时也
称为“弧”、“链”、“串”等,其矢量编码的内容
如右图所示。
其中:
唯一标识是系统排列序号;
线标识码可以标识线的类型;起始点和终止点可
以用点号或直接用坐标表示;
显示信息是显示时的文本或符号等;
与线相联的非几何属性可以直接存储于线文件
中。也可单独存储,而由标识码联接查找。
3。面实体
多边形(有时称为区域)数据是描述地理空间信息的最重要的一类数据。在区域实体中,具有名称属性和分类属性的,多用多边形表示,如行政区、土地类型、植被分布等;具有标量属性的有时也用等值线描述(如地形、降雨量等)。
多边形的矢量编码,不但要表示位臵和属性,更重要的是能表达区域的拓扑特征,如形状、领域和层次结构等,以便恢复这些基本的空间单元可以作为专题图的资料进行显示和操作,由于要表示的信息十分丰富,基于多边形的运算多而复杂,因此多边形矢量编码比点和线实体的矢量编码要复杂得多,也更为重要。
在讨论多边形数据结构编码的时候,需注意到多边形网有如下特点:
(1)组成地图的每个多边形有不同的形状、周长和面积。
(2)地理分析要求的数据结构应能够记录每个多边形的邻域关系,其方法与水系网中记录连接关系一样。
(3)专题地图上的多边形并不都是同一等级的多边形,而可能是多边形内嵌套小的多边形(次一级)。例如,湖泊的水域线在土地用图上可算是个岛状多边形,而湖中的岛屿为“岛中之岛”.这种所谓“岛”或“洞”的结构是多边形关系中较难处理的问题。
三、矢量数据的编码
矢量数据的编码包括坐标编码和拓扑编码两个方面。
(一)坐标编码
矢量数据的坐标位臵即地图上任何点、线、面(多边形)的坐标位臵,可以用直角坐标系中的坐标点X ,y 表示。X ,y 可以对应于地面的经、纬度,也可以对应于数字化时所建立的平面坐标系x 和y 。如前所述:
点用一对x ,y 表示;
线用一组有序的x ,y 坐标对表示;
多边形用一组坐标首尾相接的有序X ,y 坐标对表示。这些点是在光滑的曲线上间隔采样获得的。同一曲线长度取点越多,以后恢复图形时越接近原曲线形状;取点过少,则恢复时就会出现失真,曲线很可能畸变成为折线。下图为点、线、面的坐标表示和坐标点的编码文件。
图中的点、线、面坐标各具特征,因此编码时需要对每一种特征给定一个序号,或叫做特征码。每一特征的坐标可以用每一特征点的坐标对和有关的序号来记录。
(二)拓扑编码(ToPological Encoding)
为了真实地表现空间实体,不仅要反映实体的坐标位臵,而且要反映出实体之间的相互关系。拓扑编码主要是用来反映点、线和面在真实空间中的相互关系和属性联系。所以拓扑编码是坐标编码的一种补充,它使数据库对存储的空间实体的描述更加完整。
所谓拓扑结构是指确定各地理实体空间关系的数学方法。为了准确描述空间目标的位臵和空间关系,在几何上主要从两个方面进行:
✧ 在几何形态方面,常采用解析几何方法来分析,这主要是以几何坐标
为基础,涉及空间目标的角度、周长、方向、距离离和面积等;
✧ 在空间关系方面,则采用拓扑几何方法来描述,主要涉及的是空间目
标之间的“相邻”、“相连”、“包容”、“在里面”和“在外面”等关系。这样,就可能发生几何结构相差很大的图形,它们的拓扑结构却可能相同。所以说,若从几何形态的观点出发,主要研究的是图形的位臵形状;而从拓扑观点看,则重视的是点、线和多边形之间的相互关系。
空间数据的拓扑关系主要表现为下列三种关系:
①拓扑邻接:指存在于空间图形的同类元素之间的拓扑关系。如上图中,结点邻接关系有N1/N4;N1/N2,……等;多边形邻接关系有P1/P3,P2/P3,……等。
②拓扑关联:指存在空间图形的不同类元素之间的拓扑关系。如图1-2-2中结点与线段的关联关系有N1/C1、C3、C6,N2/C1、C2、C5,……等。多边形与线段的关联关系有Pl /C1、C5、C6,P2/C2、C4、C5、C7,……等。
③拓扑包含:指存在于空间图形的同类但不同级的元素之间的拓扑关系。如上图中设ID 表示当前多边形,IW 表示等价包含数,IP 表示ID 是否为岛。若为岛则以IP0表示,若不是岛则以IP=0表示。于是图上所示的关系为:
空间数据的拓扑关系对地理信息系统的数据处理和空间分析具有重要意义。
空间拓扑的作用:
1)根据拓扑关系,不需要利用坐标或距离,可以确定一种地理实体相对于另一种地理实体的位臵关系。
2)拓扑数据也有利于空间要素的查询,如查询某条河流能为哪些行政区提供饮用水源;某一开发区与哪些道路邻接等。
3)拓扑数据也可用做重建地理实体的工具。例如建立封闭多边形、实现道路的选取、进行最佳路径的计算等。拓扑关系的表示方法是拓扑编码中的一个重要问题。我们将在下一节弧段一结点结构和相关数据结构中再做介绍。
四、几种典型的矢量数据结构
目前用于GIS 编码的矢量数据结构种类很多,比较典型的有全多边形结构,DIME 结构、弧段一节点结构,DLG 结构等。简要介绍如下:
(一) 全多边形结构(Whole Polygon Structure)
全多边形结构主要用于表示空间图形为多边形的面
状要素。一个区域或一幅地图可以划分成许多多边
形(如右图)。每个多边形由一条或若干条线段或
弧段组成,每条线段或弧段包含二个结点,每个结
点连接二条以上的弧段。全多边形结构中,每个多
边形在数据库中是相互独立、分开存储的。多边形
的属性例如土地类型、土壤类型等可以用坐标表的
方式存储。
缺点是:1)不考虑多边形的拓扑关系。2)全
多边形结构由于一些多边形的公共弧段和结点在数
据库中被多次记录,因此不仅数据的冗余度很大,
而且很容易造成数据结构的破坏;3)“岛”只作为
一个单个图形构造,没有与其外包多边形的联系;4)
不易对边界的拓扑关系进行检查。
(二) DIME 结构
DIME(Dual Independent Map Encoding)称为“双重独立地图编
码”,这是由美国人口局发展起来的、为在城区进行人口统计分析时设计的一种拓扑编辑方法。它是GIS 发展早期使用的一种拓扑编码方式。
DIME文件由线段记录组成,线段即指两个端点或结点之间的一条直线段。例如街道、铁路、机场跑道等。在这种结构中,线段通常被认为是直线型的。如果出现弧段,可以将其看作是一系列有序直线的合成。DIME 文件中每条线段均单独进行编码。文件编辑存储的基本要素包括线段名(如街道名)、描述线段两端结点的“始”结点号和“终”结点号以及描述该线段两侧区域的“左”区号和“右”区号。此外,许多辅助的属性信息在DIME 文件中也可以给予编码。这些信息包括如街道两侧的地址范围、地区码、人口统计地段码、非街道要素的代码、邮政代码和选举分区代码等。下图简要地表明了DIME 文件的拓扑结构编码方式。
(三)弧段一结点结构(Arc —Node Structure)
在弧段一结点数据结构中,数据元素在数据库中是分层次组织的。其中,点是最基本的元素,弧段由一组X ,y 坐标对来定义,而多边形则由一组闭合的弧段限定的区域构成。这种结构中的结点是由弧段的端点或几条弧段相交的交点组成。许多结点为一些弧段和邻接的多边形共有,但是一些与线段无关的点不能作为结点。
弧段一结点数据结构与全多边形结构不同,它在对数据进行几何位臵编码时没有冗余。点在编码中仅仅记录一次,但可以反复调出来使用。各种类型的属性数据利用这种结构很容易编入数据库,而且属性数据和数据元素的几何位臵是相互联系的。
下图是弧段一结点结构的直观表示,表达了“面-弧”、“结点-弧”等一系列空间拓扑关系。
在数字化输入完成以后建立矢量拓扑结构的过程可以分为五个阶段来完成。
1) 首先,在所涉及的范围内对所有边界线进行分类,通过自相交或两
两相交使各边界线都分割成两结点之间的具有单一拓扑性质的弧
段,建立连接指针,构成图形外边界;
2) 然后,检查该外边界构成的多边形是否闭合,即应保证连接指针的
正确,只有在单弧段组成的“孤岛”情况下,弧段指针才可能指向
该弧本身;
3) 第三步从外边界连接各弧段构成各个内多边形,并给以顺序编导;
4) 第四步按梯形规则计算各多边形面积,井将其作为附加属性记录,
5) 最后,向建立的多边形连接其同性数据,建正与属性库的联系。 自动建立拓扑结构编码可以简化数据录入流程,减少工作量,生成的拓扑关系的可靠性和一致性较好,此外,该法还具有如下优点:
(1)可将多边形生成完好的网络,减少数据冗余和公共边界不重合的矛盾,
(2)因为生成的多边形、边界及其属性都存在着互相联系,从而可以实现邻域分析,
(3)多边形与生成“岛”的层次关系不受限制;
(4)其精度仅受数字化仪本身精度和计算机字长的限制。
多边形编码与拓扑关系自动生成的具体算法原理可参见《地理信息系统使用教程》一书。
总之,矢量结构自身的待点决定于矢量编码具有信息的完整性和运算的灵活性。但是从目前来说,尚无统一的最佳矢量结构编码方法。所以在具体工作中应根据任务的性质、要求和数据特点灵活地应用与设计。
在计算机辅助制图和地理信息系统发展早期,最初引用的是矢量处理技术,栅格数据处理始于70年代中期。几年以前,这两种数据结构势不两立,很难兼容,因此给数据利用带来许多不便。近年来,人们越来越清楚地认识到:原先把栅格和矢量数据结构的差别当成重要的概念差别,事实上都是技术问题。计算机技术的发展使运算速度、存储能力、地理数据的空间分辨率等大大
提高。为了更有效地利用GIS ,人们面临的问题之一是栅格和矢量数据结构的选择。
一、矢量与栅格数据结构的比较
地理信息系统的数据范围十分广泛,数据保存方式多种多样,数据结构类型复杂。空间数据的矢量结构和栅格结构是模拟地理信息系统的截然不同的两种方法,它们各有千秋,相互补充、相互促进。矢量数据与栅格数据结构详细比较见下表。
表:矢量与栅格数据的比较
二、矢量数据和栅格数据的选择
根据上述比较,在GIS 建立过程中,应根据应用目的要求、实际应用特点、可能获得的数据精度以及地理信息系统软件和硬件配制情况,在矢量和栅格数据结构中选择合适的数据结构。
矢量数据结构是人们最熟悉的图形表达形式,对于线划地图来说,用矢量数据来记录往往比用栅格数据节省存贮空间。相互连接的线网络或多边形网络则只有矢量数据结构模式才能做到,因此矢量结构更有利于网络分析(交通网,供、排水网,煤气管道,电缆等)和制图应用。矢量数据表示的数据精度高,并易于附加上对制图物体的属性所作的分门别类的描述。目前解析几何被频繁地应用于矢量数据的处理中,对于一些直接与点位有关的处理以及有现成数学公式可循的针对个别符号的操作计算,用矢量数据有其独到的便利之处。矢量数据便于产生各个独立的制图物体,并便于存贮备图形元素间的关系信息。
栅格数据结构是一种影像数据结构,适用于遥感图像的处理。它与制图物体的空间分布特征有着简单、直观而严格的对应关系,对于制图物体空间位臵的可探性强,并为应用机器视觉提供了可能性,对于探测物体之间的位臵关系,栅格数据最为便捷。多边形数据结构的计算方法中常常采用栅格选择方案,而且在许多情况下,栅格方案还更有效。例如,多边形周长、面积、总和、平均值的计算、从一点出发的半径等在栅格数据结构中都减化为简单的计数操作。又因为栅格坐标是规则的,删除和提取数据都可按位臵确定窗口来实
现,比矢量数据结构方便得多。最近以矢量数据结构为基础发展起来的栅格算法表明存在着一种比以前想象中更为有效的方法去解决某些栅格结构曾经存在的问题。例如,栅格结构的数据存储量过大的问题可用前面提出的压缩方法使其减少。
栅格结构和矢量结构都有一定的局限性。一般来说,大范围小比例的自然资源、环境、农业、林业、地质等区域问题的研究,城市总体规划阶段的战略性布局研究等,使用栅格模型比较合适。城市分区或详细规划、土地管理、公用事业管理等方面的应用,矢量模型比较合适。当然也可以把两种模型混合起来使用,在同一屏幕上同时显示两种方式的地图。目前GIS 的开发者和使用者都积极研究这两类数据结构的相互转换技术,而且己开发出栅格数据结构和矢量数据结构相互转换的软件。
对地图数字化主要是采用两种方式,即手扶跟踪数字化产生矢量结构数据和图像扫描产生栅格结构数据。在GIS 中,这两种数据结构是最基本的。因此矢量数据与栅格数据的相互转换的方法也就必然要成为在不同GIS 之间进行数据传输、信息共享所不可缺少的手段;即使在同一GIS 系统中,在实现其空间分析和数据操作的过程中,为使系统运行的总体效率和功能得以圆满完成,这种数据格式的相互转换也是不可避免的,并且也是GIS 的重要功能之一。 一般地,GIS 中的数据格式转换基本上可分为矢量数据向栅格数据转换和栅格数据向矢量数据转换两种方式。这种互相转换是通过各种算法编制的转换程序得以实现的。近年来已发展了许多高效的转换算法以适应不同的环境需要。
一、矢量数据向栅格数据的转换
对于以矢量结构表述的点状实体而言,每个实体仅由一个坐标对表示其空间位臵,而在概格结构中的点实体(像元)的位臵,则是由该点所处的行列位臵所确定。因此对于点实体的两种结构转换基本上只是一个坐标精度变换的问题,在技术上并不难解决。
用矢量结构表示的线实体是由一系列点的坐标对来表述其位臵的,在变换为栅格结构时,按解析几何中的两点式直线方程,根据栅格精度要求,在每两坐标点之间插入一系列栅格像元,每个坐标点变换为栅格结构的行列坐标,可见在线实体上实现这种结构转换也是不难实现的。因此,通常对转换算法的研究主要放在对面实体或称多边形的数据结构转换上。为便于叙述,这里对所谓多边形及其矢量格式和栅格格式给予具体定义。
多边形:指由折线段组成的封闭曲线围成的多边形区域,具有可唯一标识的多边形编号。该编号可作为多边形属性代码也可是指向属性数据记录地址的指针。
所谓矢量格式向栅格格式的数据转换,就是在矢量格式的多边形内部给所有栅格像元上赋以相应的多边形编号,故又可称为多边形填充。现将几种主要的转换算法描述如下:
(l )内部点扩散算法
该算法由每个多边形的一个内部点(种子点)开始,向周围8个方向的邻点扩散,然后判断各个新加入点是否在多边形边界上。若新点在边界上,则该
点不作为种子点,停止扩散;如果该点不在多边形边界上,则该点作为新的种子点与原有的种子点一起继续向外扩散,并将新的种子点赋以该多边形编号。重复上述过程直到所有的种子点填满该多边形并遇到多边形边界停止为止。 扩散算法程序设计比较复杂,需要在栅格阵列中进行搜索,占用内存较大。当计算机内存容量受限制时,由于搜索过程中读写磁盘文件需花费大量的时间,故该法难于采用。另外,由于栅格精度的限制,在一定的栅格精度下,如果复杂图形中某个多边形两侧的边界落入同一个或相邻的两个栅格像元之内,就会造成该多边形不连通,如图3-22(e )所示,此时,仅用一个种子点就不能完成整个多边形的填充。
(2)射线算法
射线算法是逐点判断各栅格点
是位于多边形内或在多边形之外。
通过从待判点向外引射线,然后判
断该射线与多边形的边界相交的次
数。如果相交偶数次,则该点在多
边形外部;若为奇数次,则该点为
多边形内部点。如图3-23所示,
当n 一奇数时,可给该点赋值该多
边形编号。
射线算法要计算射线与多边形边
界的交点,计算量较大。此外,判断
射线与多边形边界相交时,有一些特
殊情况会影响判断的正确性,如图3
-22所示的几种特例情况,必须予以
排除。而这又会造成算法的不完善并
增加编程的复杂性。
(3)扫描算法
扫描算法是射线算法的改进。通常情况下,沿栅格阵列的行(或列)方向进行逐行(列)扫描,对扫描线每两次遇到多边形边界的交点之间的栅格,判别为属于多边形内部点给予赋值该多边形编号。扫描算法较射线算法大大提高了计算效率。但是,射线算法中的一些特殊情况,如图3-22所示,在扫描算法中仍然存在,仍需给予特殊处理。
(4)边界代数算法
边界代数法是一种基于积分思想的矢量格式向栅格格式转换的方法。在平面直角坐标系下,沿多边形边界对坐标轴积分,可以得到闭合多边形的面积。模仿积分求多边形面积的过程,首先以单个多边形的简单情况为例,说明边界代数法的转换原理,然后再推广到由多个多边形组成的区域转换方法。
图3-24表示转换单个多边形的情况。设该多边形编号为a ,对初始化的栅格阵列各像元赋值为零,欲完成转换,就是要将该多边形区域内的所有栅格像元均赋值为a ,而多边形区域以外的像元仍保持原值零。因此,转换时以栅格行列为参考坐标轴,从多边形边界上某点开始顺时针搜索边界线。当边界上行时,如图3-24(a ),位于该边界线段左侧的具有相同行号的所有栅格像元被减去a 值;当边界下行时,如图3-24(b ),该边界左侧(或为边界行进方向的右侧)的所有栅格像元加上一个值a ,当沿边界搜索一周重新回到起点后,所有多边形内部像元点都已被赋值a ,而多边形外部的栅格像元值不变,从而完成多边形填充的转换.
二、栅格数据向矢量数据的转换
栅格数据向矢量数据的转换实际上就是将具有相同属性代码的栅格像元集合表示为以边界弧段以及边界的拓扑信息所确定的多边形区域,而每个边界弧段又是由一系列小直线所组成的矢量格式边界线。通常这种转换包括对多边形边界的提取、多边形边界的跟踪、拓扑关系的生成和去除冗余点及曲线光滑等步骤。上述步骤是为了使栅格数据中包含的空间实体之间的拓扑关系和固定的属性代码在转换过程中仍保持其原有关系和原代码,保证数据转换的真实性和一致性。所谓多边形边界提取实际上是通过确定边界点和结点来实现的;边界线跟踪则是根据已经提取的结点或边界点,判断跟踪搜索方向后,逐个边界弧段地进行跟踪;拓扑关系生成则是将原栅格数据含有的边界拓扑关系转换为矢量拓扑数据结构并建立与属性数据的联系;去除冗余点以及曲线光滑是为减少数据冗余,将因逐点搜索边界点造成的多余点去掉,并采用一定的插补算法对由于栅格精度限制造成的边界曲线不圆滑进行处理。
下面介绍一种双边界直接搜索算法。其基本思想是通过边界提取将边界弧段左右多边形的拓扑信息保存在边界点或结点上,在对边界跟踪搜索时采用2X2栅格阵列作为窗口,顺序沿行(或列)方向对整个栅格阵列进行全图搜索,根据当前窗口内的四个栅格代码值的结构模式可以确定下一个窗口的搜索方向以及与被搜索边界的拓扑关系。具体步骤可分为三个阶段:
(1)边界点和结点的提取
对于一个mXn 的栅格图像阵列,采用
2X2栅格阵列作为窗口顺序沿行、列方向对
全图进行扫描。若当前窗口内的四个栅格像
元的代码值相同,则表示它们属于同一区
域,不是边界点;若当前窗口内的四个栅格
值有且仅有两个不同的值,则该窗口内的四
个栅格可确定出边界点。这说明该点位于以
这两个值为编号的多边形边界上。为此可以
将这四个栅格作为确定边界点的标识,并保
留各栅格的原属性代码值;若窗口内四个栅
格中有三个以上不同编码,则可以确定出结
点,说明该点是三条以上不同边界弧段的交
汇点,为此可用这四个栅格作为确定该结点
的标识,并保留各栅格原代码值。若窗口中
四个栅格出现对角线上两两相同的情况,说
明该处多边形不连通,此时仍将这四个栅格确定的点当作结点处理。图3-
27、图3-28所示分别为结点和边界点的几种结构模式。
(2)边界线搜索与拓扑信息的生成
边界点和结点提取后,即可在此基础上进行边界线搜索。边界线搜索是逐个孤段进行的,对每个弧段由一个结点开始,选定与之相邻的任意一个边界点或结点进行搜索。首先记录边界点的两个多边形编号作为被搜索边界的左右多边形,而搜索方向则由进入当前点的方向和当前点下一步要走的方向来确定。因此每个边界点只能有两个走向:一个是前点的进入方向,另一个是要搜索的后续点方向。如图 3-28(3)所示的边界点只能有两个走向,即向下方和右方。若该边界点是由下方搜索得到的,也就是说,若其前点位于它的下方,则该点的搜索方向只能是右方,该边界弧段的左右多边形编号应分别为a 和b ;反之,如果该点是被其右方的点搜索到,即右点是该点的前点,则后续搜索方向应确定为下方,此时,该边界弧段的左右多边形编号应分别为b 和a 。其它情况依此类推。由此可见,这种结构可以唯一地确定搜索方向,从而大大地减少搜索时间,同时形成的矢量结构带有左右多边形编号的拓扑信息,容易建立拓扑结构和与属性数据的联系,利于提高转换效率。
(3)去除冗余点和曲线光滑
在进行边界搜索时,由于是沿边界逐点搜索,当遇到边界弧段是直线的情况时,就会产生多余点,从而造成数据冗余。为此,需要除去这些多余点记录。去除多余点的基本思想是根据解析几何中的直线方程来确定需要去除的点。在一个边界弧段上的连续三个点(x1,y1),(x2,y2)和(x3,y3),如果在一定的精度范围内可以认为它们是处于一条直线上,即满足直线方程,则三个中间的一点可以被认为是多余,应予以去除。
通过边界搜索产生的边界线由于栅格精度的限制,可能不够光滑,通常可以采用一些插值算法进行光滑处理,常用的算法有:
①线性迭代法;②分段三次多项式插值法;③正轴抛物线平均加权法;④斜轴抛物线平均加权法;⑤样条函数插值法。
GIS涉及的数据量很大,而且数据之间的联系又是错综复杂,因此,GIS 数据库的数据组织是一个核心问题。数据组织的好坏将影响到GIS 效率的高低以及用户对GIS 的使用。通常,数据库技术在处理数据库组织时,是从全局出发,对数据内部的联系和用户要求进行综合平衡来考虑。在设计数据库全局逻辑结构时,现有的数据库管理系统通常使用三种方法对数据构成三种不同形式的数据库数据结构,即:
(l )层次方法:将数据库数据接层次结构的形式进行组织;
(2)网状方法:将数据库数据接“有向图”的结构形式组织;
(3)关系方法:将数据库数据按关系形式,即表格结构的形式进行组织。 对于不同形式的数据库数据结构方法,对应有不同类型的数据库数据的操作集合,以及为了保证数据库数据的完整性规定的完整性规则集合。一般情况下,数据库数据模型就是由上述的数据库数据结构、数据库操作集合和完整性规则集合三者组成。所谓模型是人们对客观世界的认识和理解,是对客观现实
系统的近似描述。所以数据模型又称为数据库结构,它反映了数据库中数据的整体逻辑组织,反映了实体之间的逻辑联系。
GIS数据模型是描述GIS 的数据内容和数据之间的联系工具,它是衡量GIS 数据库能力强弱的一个主要标志,也是数据库系统的基础。GIS 数据库主要涉及对图形数据和属性数据的管理和组织,它是以一定的组织方式将互相关联的数据集合存贮在一起,并且能够以最佳方式和最小的数据冗余为多种目的服务。另一方面,由于计算机处理的数据既可以存放在数据文件里,也可以存放在数据库中,例如目前很多GIS 系统就是用文件系统管理空间数据(图形数据),用数据库系统管理属性数据,所以也可以说数据库就是一些相互关联的存贮文件的集合。
目前在数据库领域中,流行的数据模型主要有三种,即层次模型、网状模型和关系模型,除此之外还有最近兴起的面向对象模型。需要说明的是,所谓关系数据库管理系统,就是说数据库管理系统所支持的数据模型是关系的,或者说该数据库管理系统采用的是关系方法。类似地,还有网状数据库管理系统和层次数据库管理系统。从目前数据库技术的状况和发展趋势来看,关系数据库将占主导地位。另外,面向对象技术用在数据库设计领域后,受到人们的重视,有趋势表明可能将发展成下一代数据库的主流。
一、层次模型
用树状结构来表示实体之间联系的模型称为层次模型。它是以结点来表示数据库中的
记录类型的有向树。如图3-29所示为一个简单
的多边形地图。按层次方法可将图3-29构造成
树结构的层次模型,如图3-30所示。
由图3-30可看出,层次模型揭示的是实体
(记录)之间的一对多(1:n)的联系。通常把表
示1的实体放在上方,称为“父结点”;而将表
示n 的实体放在下方,称为“子结点”;最上层
只能有一个结点,称为根结点。为符合1:n 的联
系,除根结点外,其它的结点都有且仅有一个
“父结点”,但是每
个父结点可以对应于
多个子结点。最下层
的末端结点也称为叶
结点。
在层次模型中,
检索是向从根开始的
某条路径提出询问,
依照从左到右的顺序
检查路径。图3-30
是用层次模型表示的简单多边形地图数据库结构,该结构按多边形、弧段和结点分为不同层次,如查询结点6,则从根结点开始,可循多边形 I一弧段f 结点 6的路径搜索,层次关系非常清晰。
如上所述,可得出层次模型的两个限制条件:
(l )有且仅有一个结点无父结点,即根结点;
(2)除根结点之外,所有结点有且仅有一个父结点。
这就使层次模型不能直接表示实体之间多对多(m :n )的联系。若需要用层次模型表示m :n 联系,就必须设法先将该联系分解为1:n 联系后,才能用其表示。这是令人遗憾的缺陷。在GIS 中,若采用这种层次模型将难以顾及公共点、线数据共享和实体元素间的拓扑关系,导致数据冗余度增加,也给拓扑查询带来困难。归纳起来,层次模型的优点是容易理解,单码查找速度快,易于更新和扩充;但是多码查找比较困难,一般需要较大的索引文件,所以产生数据冗余。
二、网状模型
如果取消层次模型中的两个限制,即允许有多于一个以上的结点没有父结点,且允许每个结点可以有多个
父结点,则树形结构便可形成网
络形式。因此,网状模型就是用
网络结构来表示实体之间联系的
模型。理论上,由于网状模型没
有层次模型的那两点限制,所以
可以直接表示m :n 联系。但是在
实际应用上,一些已经实现的支
持网状模型的数据库管理系统
上,对直接处理实体之间的m :n 联系作了限制。
网状模型和层次模型在本质上是一样的。从逻辑上看它们都是用连线表示实体之间的联系,用结点表示实体集。如图3-31所示为图3-29的网状模型,从物理上看,层次模型和网状模型都是用指针来实现两个文件之间的联系。区别仅在于网状模型中的连线更加复杂,更加纵横交错,从而使数据结构更加复杂。
由此可知,网状模型是以有向图表示的网络结构,每个结点仍然表示数据库中的一个记录类型(实体)。网状模型的有向图与层次模型的有向树比较,其区别在于:
(1)可以有零个或多个结点无父结点(图3-32(a ));
(2)至少有一个结点有多于一个父结点(图3-32
(a ,b ));
(3)允许两个结点之间有两种或多种联系(图3-32
(C )。
网状模型中,结点之间的联系是任意的,为区分这些
结点之间不同的联系,对这些联系要进行命名,通常将其
称为“系型”。系型表示各结点之间,即记录类型之间的
联系。例如,记录型O 和记录型M 之间的联系命名S ,则系型可表示为图3-
33
(a )所示;若将该关系用在教授与研究生之间的指导关系,则可表示为图3-33(b )所示。
在基于矢量结构的GIS 中,图形数据通常采用拓扑数据模型,这种模型非常类似于网状模型,只是在拓扑模型中一般采用目标标识来代替网状结构中的指针。
图3-34是用网
状模型表示自然要
素、社会经济要素
和地理位臵要素之
间联系的示例。
总之,网状模
型较层次模型扩充
了对实体之间联系
的限制,可以较灵
活地表示实体之间
的多种关系,对确
定的数据表示效率
较高,数据冗余也较小,适合于表示关系较复杂的地理数据和具有网络状特征的地理实体,但网状模型的数据指针比较复杂,数据更新也较为繁琐。
三、关系模型
表格是人们熟悉的数据表示方法。用表格数据表示实体和实体之间联系的模型称为关系模型。
在层次模型和网状模型中,文件中存放的是数据,各文件之间的联系是通过指针(连线)来实现的。而在关系模型中,文件中存放两类数据:一是实体本身的数据,二是实体间的联系。这里的联系是通过联接字段实现的。
关系模型源于数学,它把数据看成是二维表格中的元素,而这个二维表格就是所谓关系。表中的每一行代表一个记录或一个取样;每一列称为关系的一个属性集,列可以命名,称为属性名,或数据项类型。显然,关系是记录(行)的集合。如果表格中有n 列,则称该关系是n 元关系。
一个实体可由若干关系组成,而关系表的集合就构成关系模型。对这种数学化的模型,每个关系应满足下列条件:
(1)表中的每一列属性都是不能再分的基本字段;
(2)各列被指定一个相异的名字;
(3)各行(记录)相异,不允许重复;
(4)行、列次序无关。
综合以上四点可知,一个关系是一个概念文件,该文件中的每个记录是唯一的,所有记录具有相同个数和类型的字段,也就是说,所有的记录有同样的固定长度和格式。图3-29所示的多边形地图,可用下列关系表示出多边形实体与其边界弧段实体和结点实体之间的关系。如图3-35所示各实体之间的联系可以通过连接字段来实现。例如关系1中边界弧段号C 可与关系2中相同字段边界弧段号C 进行连接,同样道理,关系2中结点号3也可与关系3中结点号3进行连接。
关系模型的最大特色是对实体描述的一致性,上述示例中用连接字段实现各实体之间联系正说明这一点。关系模型正是利用数据本身通过公共值隐含地表达它们之间的联系,并且可采用关系代数和关系运算来操作数据。在关系模型下,实体及其实体之间的联系均采用关系来描述,通过关系之间的连接运算还可建立新的关系,对关系数据库的查询和统计操作也都可以采用关系运算得以实现。此外,关系模型还具有结构简单、灵活、数据修改和更新方便、容易维护等特点。所以它是当前数据库中较常用的数据模型。目前,很多GIS 中的属性数据都是采用关系数据模型,甚至某些关系还采用关系数据库管理系统来管理空间数据。
但是GIS 中的关系模型在效率、数据语义、模型扩充和目标标识等方面还存在一些问题,特别是在处理空间数据库所涉及的复杂目标方面,传统的关系模型显得难以适应,此外,关系数据库系统的管理也较为复杂,查找速度与网状和层次模型相比也要慢一些。
四、面向对象模型(略)
综上所述,数据库理论是GIS 的理论基础,尽管目前流行的通用数据库管理系统在对空间实体的定义、描述和检索运算上仍存在着很大的不足,进行GIS 的技术设计时,完全采用通用数据库管理系统远非理想;但是,由于通用数据库管理系统在数据定义、结构扩充、数据更新和数据运算上效率高、通用性较强,因此目前很多GIS 仍倾向于采用通用数据库管理系统作为其数据管理的支持系统。而与此同时,更适合于GIS 需要的具有最小冗余、最大灵活性以及最快速的空间型数据库管理系统也正在发展之中。
-《地理信息系统基本原理及应用》