2.4. 矢量数据结构

矢量是具有一定大小和方向的量,数学上和物理上也叫向量。 在纸上用笔划一条线段,绘图机在纸上画一条线段,计算机图形中一条有向线段,都是一个直观的矢量。 线段长度表示大小,线段端点的顺序表示方向。 有向线段用一系列有序特征点表示,有向线段集合就构成了图形。 矢量数据就是代表地图图形的各离散点平面坐标(x,y)的有序集合,矢量数据结构是一种最常见的图形数据结构,主要用于表示地图图形元素几何数据之间及其与属性数据之间的相互关系。 通过记录坐标方式,尽可能地将点、线、面地理实体表现得精确无误。 其坐标空间假定为连续空间,不必象栅格数据结构那样进行量化处理,因此矢量数据更能精确地确定实体的空间位置。

2.4.1. 实体式数据结构

1.点实体

点实体包括由单独一对x,y坐标定位的一切地理或制图实体。 在矢量数据结构中,除点实体的x,y坐标外还应存储其它一些与点实体有关的数据来描述点实体的类型、制图符号和显示要求等。 点是空间上不可再分的地理实体,可以是具体的也可以是抽象的,如地物点、文本位置点或线段网络的结点等,如果点是一个与其它信息无关的符号,则记录时应包括符号类型、大小、方向等有关信息;如果点是文本实体,记录的数据应包括字符大小、字体、排列方式、比例、方向以及与其它非图形属性的联系方式等信息。 对其它类型的点实体也应做相应的处理。 图2-21说明点实体的矢量数据结构的一种组织方式。

image81

图2-21 点实体的矢量数据结构

2. 线实体

线实体可以定义为直线元素组成的各种线性要素,直线元素由两对x,y坐标定义。 最简单的线实体只存储它的起止点坐标、属性、显示符等有关数据。 例如,线实体输出时可能用实线或虚线描绘,这类信息属符号信息,它说明线实体的输出方式。 虽然线实体并不是以虚线存储,仍可用虚线输出。

弧、链是n个坐标对的集合,这些坐标可以描述任何连续而又复杂的曲线。 组成曲线的线元素越短,x,y坐标数量越多,就越逼近于一条复杂的曲线。 既要节省存储空间,又要求较为精确地描绘曲线,唯一的办法是增加数据处理工作量。 亦即在线实体的纪录中加入一个指示字,当启动显示程序时,这个指示字告诉程序:需要数学内插函数(例如样条函数)加密数据点且与原来的点匹配,于是在输出设备上得到较精确的曲线。 不过,数据内插工作却增加了。 弧和链的存储记录中也要加入线的符号类型等信息。

线的网络结构。 简单的线或链没有携带彼此互相连接的空间信息,而这种连接信息又是供排水网和道路网分析中必不可少的信息。 因此要在数据结构中建立指针系统才能让计算机在复杂的线网结构中逐线跟综每一条线。 指针的建立要以结点为基础,如建立水网中每条支流之间连接关系时必须使用这种指针系统。 指针系统包括结点指向线的指针,每条从结点出发的线汇于结点处的角度等,从而完整地定义线网络的拓扑关系。

如上所述。 线实体主要用来表示线状地物(公路、水系、山脊线)、符号线和多边形边界,有时也称为“弧”、“链”、“串”等,其矢量编码的内容如图2-22所示。

../_images/image047.gif

图2-22 线实体矢量编码的基本内容

其中唯一标识是系统排列序号;线标识码可以标识线的类型;起始点和终止点可以用点号或直接用坐标表示;显示信息是显示时的文本或符号等;与线相联的非几何属性可以直接存储于线文件中,也可单独存储,而由标识码联接查找。

3. 面实体

多边形(有时称为区域)数据是描述地理空间信息的最重要的一类数据。 在区域实体中,具有名称属性和分类属性的,多用多边形表示,如行政区、土地类型、植被分布等;具有标量属性的有时也用等值线描述(如地形、降雨量等)。

多边形矢量编码,不但要表示位置和属性,更重要的是能表达区域的拓扑特征,如形状、邻域和层次结构等,以便恢复这些基本的空间单元可以作为专题图的资料进行显示和操作,由于要表示的信息十分丰富,基于多边形的运算多而复杂,因此多边形矢量编码比点和线实体的矢量编码要复杂得多,也更为重要。

在讨论多边形数据结构编码的时候,首先对多边形网提出如下要求:

(1)组成地图的每个多边形应有唯一的形状、周长和面积。 它们不象栅格结构那样具有简单而标准的基本单元。 即使大多数美国的规划街区也不能设想它们具有完全一样的形状和大小。 对土壤或地质图上的多边形来说更不可能有相同的形状和大小。

(2)地理分析要求的数据结构应能够记录每个多边形的邻域关系,其方法与水系网中记录连接关系一样。

(3)专题地图上的多边形并不都是同一等级的多边形,而可能是多边形内嵌套小的多边形(次一级)。 例如,湖泊的水域线在土地用图上可算是个岛状多边形,而湖中的岛屿为“岛中之岛”。 这种所谓“岛”或“洞”的结构是多边形关系中较难处理的问题。

4.点、线、面实体坐标编码

任何点、线、面实体都可以用直角坐标点x,y来表示。 这里的x,y可以对应于地面坐标经度和纬度,也可以对应于数字化时所建立的平面坐标系x和y。 对于点则是一对(x,y)表示,对于线则是用一组有序的x,y坐标对表示,对于多边形则是用一组有序的但首尾坐标相同的坐标对表示,这些点是由光滑的曲线间隔采样而来。 同样的曲线长度,取点越多,以后恢复时越接近原来曲线,反之,取点过少,则恢复时就会成为折线。 图2-23为点线面的实体的坐标表示和坐标点编码文件。

../_images/image048.gif

(a)坐标表示

../_images/image049.gif

(b)坐标点编码文件

图2-23 点、线、面实体的坐标编码

2.4.2. 拓扑数据结构

1. 拓扑学

image50

图2-24  拓扑等价的三个图形

拓扑学(Topology)是一门新兴的几何学,作为几何学。 它仍是研究图形(或形状)的科学。 它之所以较新,是因为它研究的是图形在连续变形下的不变的整体性质。 与其它的几何学相比,它更为灵活和更具可塑性,所以有时又称做“橡皮板几何学”。 拓扑学与欧几里得几何学的不同之处在于它不涉及距离、方位或曲直等性质,即不涉及图形的量度性质。 例如,火车站的交通示意图、公共汽车站的路牌都可以看作拓扑图形,因为这些图形在比例、形状或位置方面均有着极大的变形。 在欧几里得几何学中,只允许图形做刚体运动(平移、旋转、反射),在这种运动中,图形上任意两点间的距离保持不变,因此,这里的几何性质就是指那些在刚体运动中保持不变的性质,因而欧几里得几何学可叫做“刚体几何学”。 拓扑学中的运动可以称作“弹性运动”,对图形可以任意伸张、扭曲、拉缩,但图形中不同的各点仍为不同的点,不可能使不同的两点合并成一点。 当且仅当一图形做弹性运动使其与另一图形重合,这两个图形是“拓扑等价”的(如图2-24),一个图形的拓扑性质是那些与此图形等价的图形都具有的性质。 因此,图形的拓扑性质就是那些在弹性运动中保持不变的性质,一图形的任何弹性运动都丝毫不改变图形的拓扑性质,所以拓扑学也叫“弹性几何学”。

2. 拓扑关系

在地图上仅用距离和方向参数描述图上目标之间的关系是不圆满的。 因为图上两点间的距离或方向(在实地上是一定的)会随地图投影不同而发生变化。 因此仅用距离和方向参数还不可能确切地表示它们之间的空间关系。 并且,在地图图形的连续变换中,它的某些性质发生了变化,如长度、角度和相对距离,但另一些性质则保持不变,如邻接性、包含性、相交性和空间目标的几何类型(点、线、面特征类型)等保持不变。 这类在连续变形中保持不变的属性称为拓扑属性。

空间拓扑关系是讨论空间实体间拓扑属性,即在拓扑变换旋转、平移、缩放等下保持不变的空间关系,它是GIS中不可缺少的一种基本关系。 拓扑关系是不考虑度量和方向的空间实体之间的空间关系,拓扑学是研究图形在拓扑变换下不变的性质,因此拓扑学己成为空间拓扑关系研究的基础,为空间对象间的包含、覆盖、相离、和相接等空间关系的描述提供直接的理论依据。 地理空间中的点、线、面实体之间存在着各种各样的拓扑关系,因此表示拓扑关系的数据是空间数据的重要组成部分。 另外,空间拓扑关系是空间查询与分析的基础。 一方面它为地理信息系统数据库的有效建立、空间查询、空间分析、辅助决策等提供了最基础的关系,另一方面使空间拓扑关系理论应用于地理信息系统查询语言,形成一个标准的空间查询语言成为可能,从而通过应用程序进行空间特征的存储、提取、查询、更新等。

image83

图2-25空间几何实体图形

拓扑关系是指网结构元素结点、弧段、面域之间的空间关系,主要表现为下列三种关系:

(1)拓扑邻接

拓扑邻接指存在于空间图形的同类元素之间的拓扑关系。 如图2-25(a)所示,结点邻接关系有N1/N4,N1/N2···等;多边形邻接关系有P1/P3,P2/P3 ···等。

(2)拓扑关联

拓扑关联指存在于空间图形的不同类元素之间的拓扑关系。 如图2-25(a)所示,结点与弧段关联关系有N1/C1、C3、C6,N2/C1、C2、C5 ···等。 多边形与线段的关联关系有P1/C1、C5、C6,P2/C2、C4、C5、C7等。

(3)拓扑包含

拓扑包含指存在于空间图形的同类但不同级的元素之间的拓扑关系,如图2-25(b)所示,P1包含P2和P3。

空间数据拓扑关系对地理信息系统的数据处理和空间分析具有重要意义。 根据拓扑关系,不需要利用坐标或距离,可以确定一种地理实体相对于另一种地理实体的位置关系,拓扑数据也有利于空间要素的查询,例如,查询某铁路线有哪些车站,汇入某条主流的支流有哪些,以某个交通“结点”为中心,呈辐射状的道路各通向何地。

3. 拓扑数据结构

在矢量拓扑数据结构中,空间数据不但要记录空间实体的位置,而且要记录空间实体间的拓扑关系,这是地理信息系统区别于其它数据库管理系统的重要标志。 建立拓扑关系是一种对空间结构关系进行明确定义的数学方法。 目前,空间数据的拓扑数据结构的表示方式没有固定的格式,也还没有形成标准,其基本原理是相同的。 因此,在矢量拓扑结构表示方法中,任何地理实体均可以用点、线、面来表示其特征,并且可根据各实体间的空间拓扑关系,解译出更多的信息。

对于二维空间数据而言,矢量数据可抽象为点(结点)、线(弧段或边)、面(多边形)三种要素,也称拓扑要素。 对三维而言,还要加上体。 其最基本的拓扑关系主要有拓扑邻接、拓扑关联、拓扑包含等几种。 拓扑数据结构中关键就是对这些拓扑要素间的拓扑关系进行表示,几何数据的表示可参照矢量数据的简单数据。 虽然,目前GIS中基本拓扑关系的表示方法不尽相同,但是只要能完整表达出拓扑要素间的基本拓扑关系就可以。

image80

图2-26基本拓扑关系数据

根据图2-26所示的基本拓扑关系,图2-25(a)中的拓扑实体关系数据结构如表2-1、表2-2、表2-3、表2-4所示。 其中,表2-3中“-”表示边的方向为逆时针方向,“0”为区分含洞的弧段。

目前,人们对拓扑关系的表达进行了大量研究,提出了更复杂的关联和邻接关系,但各种GIS软件对矢量空间数据拓扑关系的表达还没有超过使用上述所列的各种关系。

实际上,许多GIS系统在处理使用上述表格的方式有所不同,对于上述出现变长记录的表格(如结点关联的弧段),有的系统使用指针方法,有的则直接存储变长记录(如ArcGIS)。

表2-1弧段—结点关系

弧段

弧段两端结点

弧段

左面

右面

C1

N2,N1

C1

0

P1

C2

N3,N2

C2

0

P2

C3

N1,N3

C3

0

P3

C4

N4,N3

C4

P3

P2

C5

N2,N4

C5

P1

P2

C6

N1,N4

C6

P3

P1

C7

N5,N5

C7

P4

P2

表2-2弧段—面关系

表2-3面—弧段关系

构成面的弧段

结点

结点关联弧段

P1

C1, C6 , -C5, 0

N1

C6, C3, C1

P2

C4,C5, C2, 0, C7

N2

C1, C5, C2

P3

C4, C6, -C3, 0

N3

C2, C4, C3

P4

C7, 0

N4

C4, C5, C6

N5

C7

表2-4结点—弧段关系

拓扑数据结构的构建实际上大大增加了数据编辑的难度和复杂性。 以至于它成了一个引起广泛争议的问题。

显然,拓扑关系的存在为数据错误的查找和空间分析提供了必要的前提,但并不是所有的GIS应用、都必须具备这种预先存储的、耗费大量精力才能创建的数据结构。

许多GIS软件只使用其中几种最基本的拓扑关系,就能满足大多数的空间分析需要,但更复杂的空间分析,也许需要更多的拓扑关系。 一般地,建立的拓扑关系越多,数据编辑的维护难度就越大、越复杂, 但进行处理比较复杂的空间分析时就越方便,空间分析花费的时间就越少。 因此,究竟是否应预先存储拓扑关系、存储哪些拓扑关系就成为当前争论的焦点。