本章引言

地理空间数据是GIS的重要组成部分,如何实现其在计算机中的存储和处理,是GIS开发的核心问题之一。空间数据结构就是对地理实体的空间排列方式和相互关系的抽象描述,是对空间数据的一种理解和解释。没有合适的数据结构的空间数据,GIS无法正确运行;即便是同样的空间数据,按不同的结构去组织处理,也可能会得到不一样的结果。空间数据结构是GIS沟通信息的桥梁,只有充分理解GIS所采用的特定数据结构,才能正确、有效地使用系统。在GIS中,常用的数据结构有矢量数据结构和栅格数据结构两种。本章详细论述了这两种常用的空间数据结构和数据编码方法,以及它们的相互转换。

本章重点

●GIS地理空间及表达;

●GIS空间数据特征;

●空间数据模型;

●栅格结构数据的特征及获取;

●栅格结构数据的编码;

●矢量结构数据的特征及获取;

●矢量结构数据的编码;

●栅格-矢量一体化数据结构;

●栅格结构与矢量结构的区别。

2.1 地理空间信息基础

2.1.1 地理空间及其表达

地理世界以实体为单位进行组织,将客观世界作为一个整体看待,每一个实体不仅具有空间位置属性和空间上的联系,更重要的是它与其他实体间还具有逻辑上的语义联系,此外,它还具有时间属性。将真实世界的空间物理对象进行抽象概括,形成空间数据模型,对模型描述的空间数据按照一定的形式组织表达而形成空间数据结构,进而形成空间数据库(如图2.1所示)。存在于地球表面的地理对象、对象间的相互关系,以及各自的位置属性和时间属性,就形成GIS中的地理空间信息(Geo-spatial)。一般而言,在地理空间中,特征实体表示地理空间信息的几何形态、时空分布规律及其相互之间的关系,它们是具有形状、属性和时序的空间对象或地理实体,包括点、线、面和体四种几何体。这些几何体是GIS表示和建库的主要对象。

图2.1 空间信息的抽象过程示意图

1.空间对象信息

现实世界中存在很多的地理对象,这些地理空间对象虽然几何形状不一样,但是都有一些相同的信息描述方法,即属性信息、定位信息、拓扑信息和网络信息。

1)空间实体的属性信息s

各种空间实体都有自己的属性,这些属性可分为不同类型。

(1)数量型。在某一地理空间内所发生的由数量可以表述的属性,如城市的面积、森林的覆盖率等。

(2)非数量型。例如森林、河流等。

(3)等级型。按实体的内在性质划分出若干种类型并具有一定的排序,如地位等级、火险等级等。

(4)二元型。仅表示某种事物或现象对某一空间实体的有或无,如该空间是绿地还是非绿地。

这些属性信息通过分解、综合还可以生成新的信息。

2)空间实体的定位信息

在一个GIS中,应该使用至少一种或多种坐标系,并能够在一定场合对坐标进行变换处理,在一定的坐标系下可获得空间实体的定位信息。点、线和面等空间实体及由它们构成的复合空间实体都具有一定的空间位置,可以用指定的坐标系来描述。最常用的是笛卡儿坐标系,其中,点可以用坐标(x, y)来描述,线可以看成点的集合,而面实体则可以用一组邻接的闭合线来确定位置。

3)空间实体的拓扑信息

在GIS中,为了真实地反映地理实体,不仅要记录实体的位置、形状、大小和属性,还必须反映实体之间的相互关系。通常情况下,空间实体之间会隐含一些独立于坐标系统的几何关系,这些关系不会因为几何实体的平移、旋转、缩放而改变。在实际应用时,有时人们所使用的信息不强调描述实体的坐标位置,而是关注实体的空间连接关系。在GIS中,这些连接关系就构成了空间实体的拓扑关系,如图2.2所示。

空间数据的拓扑关系主要有以下几种。

(1)邻接关系。指存在于空间图形的同类元素之间的关系。例如,节点邻接关系A/D、B/D,多边形邻接关系P1/P2、P3/P2等。

(2)关联关系。指存在于空间图形不同元素之间的拓扑关系。例如,节点与弧段的关联关系:A与e、a、c,B与a、b、d;多边形与弧段的关联关系:P3与c、e、f,P1与a、c、b、g等。

(3)包含关系。指存在于空间图形的同类但不同级的元素之间的拓扑关系。包含关系有简单包含、多层包含和等价包含三种形式(如图2.3所示)。

图2.2 空间数据的拓扑关系示意图

图2.3 面实体间的拓扑包含关系示意图

空间数据的拓扑关系,对数据处理和空间分析具有重要的意义,原因如下所述。

① 根据拓扑关系,不需要利用坐标或距离,就可以确定一种空间实体相对于另一种空间实体的位置关系。拓扑关系能清楚地反映实体之间的逻辑结构关系,它比几何数据的稳定性更强,不随地图投影的变化而变化。

② 利用拓扑关系有利于空间要素的查询,如某条铁路通过哪些地区、某县与哪些县邻接等。又如,分析某河流能为哪些地区的居民提供水源、某湖泊周围的土地类型及对生物栖息环境做出评价等。

③ 可以根据拓扑关系重建地理实体。例如,根据弧段构建多边形,实现道路的选取,进行最佳路径的选择等。

2.空间信息的坐标变换

1)地图简介

地图在人们生活中起着非常重要的作用,社会经济的各个方面都离不开地图的存在。地图既是GIS的主要数据来源,又是GIS的主要输出形式之一。没有数字化的电子地图, GIS就不能运行。地图以画线、颜色、符号和标注等表示现实世界的地形地物。从地图的载体形式来看,地图可划分为常规静态地图和动态的数字地图(如图2.4所示)。

图2.4 地图示例

常规静态地图按照内容可分为普通地图和专题地图两大类。其中普通地图是具有自然和社会经济等一般特征的地图,它包含水文、地形、土质、植被、居民点、交通线及社会经济等因素。专题地图是在普通地图基础上,着重表示一种或几种自然或社会经济现象的地图,如植被图、地貌图,土壤图、人口图、经济分布图、航空图和军事图等。不同的地图有不同的比例尺、覆盖范围和用途。

动态的数字地图是随着计算机的发展而出现的一种崭新的地图形式,其核心是以数字形式来记录和存储地图。与常规的静态地图相比,数字地图有很多的优势。例如,数字地图存储容量大、体积小、携带方便;数字地图借助计算机识别的数字代码反映各类地理特征,可以在显示器上显示;数字地图可以和GIS结合,实现快速更新和多层次分析。数字地图随着社会的发展已经成为数字地球的基础。

2)空间信息的坐标变换

随着用途和区域的不同,GIS的数据来源和数据类型各不相同,但它们必须有统一的地理基础,以正确反映地理位置和地理关系特征。由于地球的表面基本上是一个椭球面,而地图是一个平面,因此,把椭球面展开为平面时,就像把一个乒乓球破开、压平一样,必然产生破裂。这样也就不能如实地表示各地面景物的形状、大小和相互关系,显然,这是制作地图所不允许的。实际上制作地图使用的是投影方法,这种投影方法称为地图投影。简单来讲,地图投影就是将地理坐标系(也称为大地坐标)的地理实体的位置坐标映射在平面坐标系中。

在地理坐标系中,把地球视为一个椭球,以地轴(地球椭球体的旋转轴)与椭球面的交点(N为北极,S为南极)为极点,用经度和纬度来表示椭球面上的各点的地理位置,如图2.5所示。所有经过地轴的平面都称为子午面。子午面与地球椭球体的交线称为子午线或经线。经线是长半径为a、短半径为b的椭圆。所有垂直于地轴的平面与椭球体面的交线都称为纬线。纬线是不同半径的圆。赤道是其中半径最大的纬线。假设椭球面上有一点A,通过A点作椭球面的垂线,称之为过A点的法线。法线与赤道面的交角叫做A点的纬度,通常以字母ω表示。纬度从赤道起算,在赤道上纬度为0°。过A点的子午面与通过英国格林尼治天文台的子午面所夹的角叫做A点的经度,通常以字母λ表示。国际规定通过英国格林尼治天文台的子午线作为计算经度的起点。绕地球一周,东0°~180°为东经,西0°~180°为西经。

在地理坐标中,因为任意一点都处在一个椭球面上,用坐标很难进行距离、方向和面积的计算。因此,必须完成地理坐标到平面坐标的映射(投影)。要完成地图投影,用平面坐标表示地面上任何一点的位置,首先要把曲面展开为平面。然而,地球表面作为一个不可展开的曲面,曲面上的各点不能直接表示在平面上,因此必须运用地图投影的方法,建立地球表面和平面上点的函数关系,对地球表面上任一个点,(ω,λ),在平面上必有一个与它相对应的点(yx)。其数学转换公式如下:

图2.5 地理坐标(大地坐标)示意图

其中,不同的投影方法下f1f2也有所不同。地图投影变换引起了地理空间实体在平面形态上的变化,这种变化主要反映在三个方面,即长度变形、面积变形和角度变形。长度变形指投影后地图上不同地点和不同方位上的比例各不相同,从而无法从地图上量算和比较不同地点和不同方位的景物之间的距离;面积变形指投影所得地图上面积比例随地点而改变,其结果是不能直接在地图上量算和比较景物所占的面积;角度变形是指地图上角度和相应景物在球面上的相应角度不相等,如在地球仪上成直角的经线和纬线,在地图上经纬线不成直角。经过前述的坐标变化,平面直角坐标系(x, y)易于进行距离、方向、面积等空间参数的量算及进一步的空间数据处理和分析。

3.地理实体的地图化描述

地理环境复杂多样,人们看到的地理现象可能是现实世界的直接表象,如野外观察;也有可能是来自虚拟现实世界。不同的人对事物的观察点不一样,对事物的分析结果也就不同。在不同比例尺的GIS中,同样的地理对象可能被看做一个“点”对象,也可能被看做一个“面”对象。例如,大家熟悉的居民点,在大、中比例尺GIS中被表示成面状对象,在小比例尺GIS中则被表示成点状对象。事实上,人们对现实的地理对象进行分析归纳后,一般把GIS中的地理对象分成几种类型,如点、线、面、曲面和体等,然后根据地理对象的不同属性分类编码,按照一定的结构和模型进行表达、组织和存储。如何以有效的形式表达它们,关系到计算机识别、存储处理的可能性和有效性。

1)点状地理对象

在现实中,真正的点状事物并不多,一般都占有一定的面积,只是大小有差别。城镇、工厂、学校、医院、交通枢纽等都是呈现点状分布的地理对象。这些点状分布的对象,在较大规模的空间上来看占地面积较小,一般不按比例尺表示,但是又需要定位,因此就当做点状对象看待。对于点状分布的地理对象的质量和数量特征,一般用点状符号表示,而点状符号的颜色、形状和大小则表征这些属性。在电子地图上,将点状符号定位于地理对象所相应的位置上。如图2.6所示是几种点状符号。

2)线状地理对象

对于在地面上呈线状或带状分布的地理对象,如铁路、海岸、地下网管、河流、境界线、行政边界等,在地图上均用线状符号来表示。这些线状地理对象有单线、双线和网状之分。当然,对于线状对象和面状对象的区别,也和地图比例尺密切相关。在实际地面上,水面、路面等都可以是狭长的或区域的面状。通常用线状地理对象的符号形状和颜色来表示质量差别,而线状符号的尺寸变化(线宽)则表示数量特征。如图2.7所示是几种线状符号。

图2.6 几种点状符号

图2.7 几种线状符号

3)面状地理对象

面状地理对象在现实世界中非常多,分布状况并不一样,有连续分布的,也有离散分布的。例如,气温、土壤等是连续分布的地理对象,而像森林、建筑物、农作物等则是离散分布的。在呈现面状分布的地理对象中,有些有确切的边界,如建筑物;有些从宏观上看似乎有一条确切的边界,但是实际上并没有明显的边界,如土壤类型的边界,只能由专家们通过研究确定。显然,面状分布的地理对象一般用封闭的多边形符号表示。如图2.8所示是几种面状符号。

4)体状地理对象

除了上面描述的三种地理对象以外,从三维观测的角度看,许多地理对象可以看做体状对象,如大家熟悉的云彩、高层建筑、地铁站等。这些地理对象除了在二维空间占有一定的平面大小外,在三维空间中还有一定的高度或厚度。

5)遥感影像对地图化描述

遥感作为一门新兴技术,从20世纪60年代产生到现在,在人类社会各方面得到了广泛应用,例如,检测地表资源、环境变化,了解沙漠化、土壤侵蚀等缓慢变化,监视森林火灾、洪水和天气迅速变化状况,进行作物估产等。遥感技术的核心是为空间信息资料的获取提供方便,进而为利用空间信息的各行各业服务。卫星遥感可以覆盖全球任何一个角落,不存在由于自然因素或社会因素所造成的信息获取的空白地区,卫星遥感资料可以及时地提供广大地区的同一时相、同一波段、同一比例尺、同一精度的空间信息,航空遥感也可以快速获取小范围地区的详细资料。也就是说,遥感技术的使用极大地提高了空间信息获取的便利性。

图2.8 几种面状符号

遥感影像对空间信息的描述主要通过不同的颜色和灰度来表示。这是因为地物的结构、成分、分布等不同,其反射和发射的光谱特性也各不相同,传感器记录的各种地物在某一波段的电磁辐射反射能量也各不相同,反映在遥感影像上就表现为不同的颜色和灰度信息。因此,通过遥感影像可以获取大量的空间地物的特征信息。如图2.9(a)所示的遥感图像就反映了这个区域的地貌特征和断裂带的信息,如果用前述的地图表示,则如图2.9(b)和2.9(c)所示。

图2.9 遥感影像、地图对地理空间描述的对比

需要注意的是,利用遥感影像通常可以获得多层面的信息,因此,对于遥感信息的提取,一般需要具有专业知识的人员通过遥感解译才能完成。

2.1.2 空间数据

在GIS中,用空间数据来描述空间实体的位置、形状、大小及分布特征等,所有操作的对象都是空间数据。因此,GIS设计和使用的首要任务就是根据系统的功能获取所需要的空间数据,并用相应的数据结构来组织和表达这些数据。空间数据是GIS的核心内容。

1.空间数据的类型

空间实体是对存在于这个自然世界中的地理实体的抽象,主要包括点、线、面、体等基本类型。例如,把一个学校抽象成为一个点对象,那么它就包含了该学校所处的位置信息、学校设施等相关信息;把一条道路抽象为一条线,则线对象包含了道路所处的位置信息、起点、终点、长度、宽度、道路等级等相关信息;把一片林地抽象为一个面,则面对像包含了林地所处的位置、面积、林种、树种、土壤等相关信息。

GIS中的空间数据按空间实体的几何形状可以抽象为点、线、面三类,这三种空间数据按其表示对象不同又可以分为7种类型(如图2.10所示),它们表示的内容如下所述。

图2.10 空间数据类型

(1)类型数据,如考古地点、道路线和土壤类型的分布等。

(2)面域数据,如随机多边形的中心点、行政区域界线和行政单元等。

(3)网络数量,如道路交点、街道和街区等。

(4)样本数量,如气象站、航线和野外样方的分布区等。

(5)曲面数据,如高程点、等高线和等值区域。

(6)文本数据,如地名、河流名称和区域名称。

(7)符号数据,如点状符号、线状符号和面状符号等。

由此可以看出,对于点实体,它有可能是点状地物、面状地物的中心点、线状地物的交点、定位点、注记、点状符号等;对于线实体和面实体,也可按照上面的7种类型得出其描述内容,这些内容是点、线、面三种实体编码的主要内容。

2.空间数据的特征

空间数据是现实世界中的地理实体和现象在计算机中的映射,它不仅包括表示实体本身的空间位置及形态的信息,还包括表示实体属性和空间关系的信息。GIS空间数据的基本特征如图2.11所示。

图2.11 GIS空间数据的基本特征(Jack Dangermond,1984)

空间数据库存储了空间数据和非空间数据,两者之间联系密切。不同用途的GIS其地理空间数据的种类、精度不尽相同,但一般都包括三种互相联系的数据类型。

(1)空间特征数据。标识地理景观在自然界或包含某个区域的地图中的空间位置,如经纬度、平面直角坐标、极坐标等,采用数字化仪输入时通常采用数字化仪直角坐标或屏幕直角坐标。

(2)时间属性数据。主要是在一个特定时段采集或计算得到的数据。很多时候空间数据随时间变化相对较慢,因而经常被忽略。

(3)专题属性数据。主要是指地理实体所具有的各种性质,如人口密度、空气污染程度和交通流量等,常以数字、符号、文本和图像等形式描述。

2.1.3 空间数据模型

地理环境是复杂多样的,要正确地认识、掌握与应用这种广泛而复杂的信息,需要进行去粗取精、去伪存真的加工,这就要求对地理环境进行科学的认识。对复杂对象的认识是一个从感性认识到理性认识的抽象过程。一般情况下,人们对现实空间世界的认识都要经历三个阶段。首先,对现实空间世界的各种实体和实体间联系要素进行翻译和归纳,形成基于感性认识的空间概念数据模型;然后,对概念模型中的数据实体及其关系进行表述,形成逻辑数据模型;最后,对数据在计算机中的物理组织、存储路径和数据库结构进行描述,并最终形成物理数据模型(如图2.12所示)。确定空间数据模型既要考虑能把所需要的空间基本信息存储于计算机兼容的介质中,还要考虑到应用空间数据库时对空间信息进行复原、查询、分析和处理操作的可能性和效率。

图2.12 空间数据模型

一般而言,地理数据在计算机中有三种表示方法:栅格(raster)、矢量(vector)和面向对象(Object-oriented)法。栅格法以规则网格描述地理实体、记录和表示地理数据;矢量法以点、线、面(多边形)描述地理实体、记录和表示地理数据;面向对象法则将每一个地理实体看成是一个对象,从实体的属性和操作运算方法两个方面来描述每一个对象及对象之间的相互联系,以对象为单位记录和表示地理数据。空间数据结构就是相应的空间数据模型在计算机中的存储和组织方式,是适合于计算机存储、管理和处理的空间数据的逻辑结构。换句话说,是指空间数据以什么形式在计算机中存储和处理,是对地理对象空间排列方式和相互关系的抽象描述。空间数据模型和数据结构决定了GIS获取、存储、处理和使用地理数据的方法。GIS的空间数据可以按照数据的采集方式、存储方法和使用目标等使用不同的数据模型进行组织。目前,地理信息系统中用来组织空间数据的模型主要分为以下两种:矢量数据模型和栅格数据模型。目前流行的大多数GIS软件都支持这两种模型,并可相互转换(如图2.13所示)。具体选用哪种模型,除了要考虑用户的需求外,还要根据空间对象的特点来选择。一般来说,温度场等具有连续分布和变化趋势的空间对象往往选用栅格数据模型,利用卫星等收集来的遥感数据大多也采用栅格数据模型;而不连续分布的空间对象,如城市、工厂等,往往选择以矢量数据模型来表示。这两种模型代表着从信息世界观点对现实世界空间目标的两种不同的数据表达方式,在功能、使用方法和应用对象上具有一定的差异,这也在某种程度上反映了GIS表示现实世界的不同概念。

图2.13 GIS常用的两种数据模型

在栅格数据模型里,地理空间对象被人为地划分为一系列像元,而没有考虑完整的实体边界。为使计算机识别这些像元描述的特定空间实体,这些像元都被赋予了相同的编码,或者使用相同的颜色、符号、数字和灰度值来表示。对于每个像元,只记录其属性值而不记录它的坐标值。属性相同且位置相邻的像元集合即是对空间实体的表达。栅格数据模型对空间位置的表达是隐式的,但对属性表达是显式的。它对空间信息表达的先决条件是定义空间属性的分类系统和栅格单元的大小,因为栅格单元的大小决定了表达空间的分辨率。用栅格数据表达的优点是结构简单,操作简便;缺点是精度低,数据存储量大,难以建立地物间的拓扑关系,难以操作单个目标。

在使用矢量数据表达时,地理空间对象是由一系列定义了的坐标来确定的,类似于地图对地理信息的描述,用点、线、面来描述地理空间实体的空间要素,每一种采取不同的编码。矢量数据模型对空间实体位置是显式表达,而对

实体属性则是隐式表达(如图2.14所示)。

图2.14 空间实体的矢量数据表达示意图

用矢量数据模型表达空间实体的优点是精度高,易于完整地表达实体间的拓扑关系,容易操纵单个目标,数据存储量小;缺点是数据结构复杂,进行空间分析和叠加操作时一般都要进行大量的计算,效率较低。当然,用矢量数据模型表达空间信息必须有一个确定空间位置的参照坐标系和划分地理实体的分类系统,同样,参照坐标系决定了表达空间的精度。

这两种空间模型的数据表达方式可以用下面的例子来说明。在图2.14所示的地图中,既有点状物,如烟囱、地物高程点;又有面状地物,如居民点、林地和菜地;还有线状地物,如铁路等。在矢量数据表达中,用点状地物所在位置的坐标表示其位置,其属性值(是高程点还是烟囱,高程点的值是多少)则用其他的数据项来表示。线状地物则用一组有序的坐标来表示,如矢量图中铁路的表示;面状地物则用面状地物的边界来表示,如居民点、林地等。与点状地物一样,线状地物和面状地物的属性值也都要用其他的数据项来表示。用栅格数据表达中,首先要给定每个物体的编码,如给定高程点的编码为9,烟囱的编码为7,铁路的编码为1,居民点的编码为5,林地的编码为3,菜地的编码为4,则图2.15(a)所示的地图用矢量和栅格表达分别如图2.15(b)和2.15(c)所示。

图2.15 GIS数据表达示意图

2.2 栅格数据结构

2.2.1 栅格数据结构概述

基于栅格数据模型的数据结构就是栅格结构,它是最简单也是最直观的空间数据结构,主要用来组织连续分布的空间对象的数据。所谓的栅格空间数据结构,就是将空间化分成有规则的、大小均匀、紧密相邻的网格阵列,将每个网格作为一个像元,通过在每个网格上给出相应的属性值来表示地理实体的一种数据组织方式。也就是说,栅格数据结构就是像元阵列,用每个像元的行列号来确定位置,用每个像元的值表示实体的类型、等级等的属性编码。在确定位置时,直接记录栅格单元的行列号,栅格单元的行列号通常以左上角为坐标零点。在给定分辨率的条件下,栅格单元按顺序编号,以左上角为起点,以右下角为终点。

栅格结构表示的是二维平面上的地理要素的离散化数值,每个网格单元都代表了实际地表上的一个区域。栅格结构中的网格单元通常为正方形,有时也采用三角形、矩形或六边形等(如图2.16所示)。

图2.16 栅格结构中的格网类型

在栅格结构中,对于不占面积(通常意义上根据比例尺大小而定)的点状地物由一个单元网格表示;线状地物由一串有序(按照线的走向)的相互连接的栅格单元表示,每个栅格单元最多只有两个相邻单元在主线上;至于面状地物或区域地物,由聚集在一起的相互连接的栅格单元组成,每个栅格单元可以有多于两个的相邻单元属于同一个区域。任何面状分布的地理对象(如土地利用、环境污染、地势变化等)都可以用栅格数据逼近,如图2.17所示。遥感影像就是典型的栅格结构,每个像元的数字表示影像的灰度级别。

图2.17 栅格结构中的格网表示

栅格数据的比例尺就是栅格(像元)的大小与地表相应单元的大小之比,一个栅格单元代表的地表区域越小,数据的精确度越高,但是数据量和冗余度也会相应地剧增。例如,用分辨率是250m×250m的栅格数据表示1km2的区域要用16(4×4)个栅格点,而用分辨率是1km×1km的数据则只需要一个栅格点。显然前者比后者更加精确,但是占用的存储空间也是显而易见的。当像元所表示的面积较大时,对长度、面积等的量测有较大影响。每个像元的属性是地表相应区域内地理数据的近似值,因而有可能产生属性方面的偏差。

栅格数据记录的是属性数据本身,数值含义由用户指定。一般来讲,含义有两种类型:一种是实际测量数值,如温度、数字高程模型等;另一种是代表某种类型的编码,如森林覆盖等。位置数据可以由属性数据对应的行列号转换为相应的坐标。栅格数据的阵列方式很容易为计算机存储和操作,不但很直观,而且易于维护和修改。

栅格数据把真实世界的球面映射在笛卡儿平面上来描述地理空间,用离散化的栅格值表示空间实体。在笛卡儿平面上用行列值来确定每个栅格元素的位置,而用栅格元素值来表示空间属性。采用栅格结构,在计算地表的面积、长度、距离等空间指标时,如果栅格尺寸较大,则会造成较大误差。同时,由于在一个栅格的地表范围内可能存在多种地物,而表示在相应的栅格结构中只有一个代码,这样系统的精确度显然不高。虽然描述实体的栅格单元的尺寸越小精度越高,但数据量也会相应增加,这不仅使存储量增加,还会影响系统分析和处理数据的速度。因而,栅格模型中栅格单元的大小非常重要,在运用时要合理确定栅格单元尺寸。一般情况下,可以通过保证最小多边形的精度标准来确定网格尺寸,使得栅格数据既能有效地逼近地理实体,又可以最大限度地降低数据冗余度。

当然,用栅格结构表述的数据有很大优势:第一,描述区域位置明确,属性明确,栅格数据的位置一般用坐标(行列数)来确定,栅格值可用单位栅格交点归属法、单元栅格面积占优法和单位栅格长度占优法来描述;第二,栅格数据以阵列方式来描述空间实体,容易存储、操作和显示;第三,栅格结构容易实现,便于扩充、易于同遥感影像结合。但是,因为栅格数据只是针对位置的结构,所以很难完整地建立地物间的拓扑关系,也不便于对单目标的操作处理。

2.2.2 栅格结构数据的获取途径

栅格结构的数据通过位置来表述空间实体。栅格数据的来源非常广泛,主要的获取途径有以下几个。

1.来自于遥感数据

遥感是利用航空和航天技术实时动态地获取地表信息的重要手段,图像是遥感数据的主要表现形式,通过遥感手段获得的数字图像就是一种栅格数据。它是遥感传感器在某个特定的时间、对一个区域地面景象的辐射和反射能量的扫描抽样,并按不同的光谱段分光并量化后,以数字形式记录下来的栅格数据。

2.来自扫描仪、摄像机等设备

扫描仪已经成为获取栅格数据的主要设备,它可以高精度快速获取栅格数据,其数据格式已经标准化。另外,通过摄像机可以获得各种景物的视频数据,对视频数据采样转换后就可以形成栅格数据。

3.由矢量数据转换而来

通过运用矢量数据栅格化技术,把矢量数据转换成栅格数据。这种情况通常是为了方便GIS中的某些操作,如叠加分析等,或者是为了得到更好的输出效果。

4.规则点采样、不规则点采样和插值

在研究区域不大和数据分辨率要求不高的情况下,可以用规则点采样的方式获得栅格数据。在具体操作时,先将研究区域划分为均匀网格,然后记录每个网格的数值,就形成该区域的栅格数据。由于客观条件限制,规则点采样不太容易实现,采样点也可以不均匀分布,每个栅格点的数值通过观测数值的插值而得到。

5.由手工方法获取

在专题图上均匀划分网格,逐个网格地确定其属性代码的值,最后形成栅格数据文件。

2.2.3 栅格数据的编码

空间数据结构是对空间数据在计算机内的组织和表达方式的描述,数据组织的目的就是提高数据的存取速度和减少其处理时间,同时尽量减小存储空间。栅格结构以栅格单元的行列号来表示位置,数据的精度取决于栅格单元的大小,在记录时相对占用空间比较大,因此在存储时往往要进行数据压缩。除此之外,人们经常接触到的图像也是栅格数据,不过不同的图像有不同的压缩格式和压缩方式。

在栅格结构中,最主要的编码方式有:直接栅格编码、链式编码、游程长度编码、块状编码和四叉树编码等。在这些编码方式中,有无压缩编码和压缩编码之分。如直接栅格编码是一种最常见的无压缩编码,而链式编码、游程长度编码、块状编码和四叉树编码等都属于压缩编码方式。压缩的目的就是用尽可能少的数据量记录尽可能多的信息。值得注意的是,压缩编码有信息无损压缩编码和信息有损压缩编码之分。信息无损压缩编码在编码过程中没有任何信息损失,通过解码操作可以完全恢复原来的信息,而信息有损压缩编码在压缩过程中会损失一部分相对不重要的信息,这部分信息在解码时很难恢复,这样做的目的是提高编码效率、最大限度地压缩数据。在GIS中,大都采用信息无损压缩编码,仅在少数情况下对原始的遥感影像采取信息有损压缩编码方式。

1.直接栅格编码

直接栅格编码(Direct Raster Code)也称为二维矩阵编码,是最简单、最直观的一种栅格结构编码方式,它把规则格网平面作为一个二维矩阵进行数字表达,在格网中每一个栅格像元都具有相应的行列号,而把属性值作为相应矩阵元素的值,逐行逐个记录代码。图2.18所示为面状地物的栅格矩阵结构。

图2.18 面状地物的栅格矩阵结构

在上述直接编码的栅格结构中,如果栅格矩阵是mn列的,其中矩阵中的每个元素占用的存储容量是c,则单个图层的全栅格数据所需的存储空间是m(行)×n(列)×c。随着栅格分辨率的提高,存储空间将呈几何级数递增,一个图层或一幅图像将占据相当大的存储空间。因此,如何对栅格数据进行压缩是首先要解决的问题之一。

2.链式编码

链式编码(Chain Code)也称为弗里曼链码(Freeman,1961)或边界链码,适合于对曲线和边界的编码。它是基于栅格的邻域思想,将任意一条曲线或边界线用某一起点开始的矢量链来表示。链式编码主要是记录线状地物和面状地物的边界,它把线状地物和面状地物的边界表示为:由某一起始点开始并按某些基本方向确定的单位矢量链。基本方向可定义为:东=0,东南=l,南=2,西南=3,西=4,西北=5,北=6,东北=7,八个基本方向(如图2.19所示)。

如果对于图2.20所示的线状地物确定其起始点为像元(1,5),则其链式编码为:

1,5,3,2,2,3,3,2,3

图2.19 链式编码的方向代码

图2.20 链式编码示意图

对于图2.20所示的面状地物,假设其原起始点定为像元(3,7),则该多边形边界按顺时针方向的链式编码为:

3,7,2,1,3,2,4,4,6,6,7,6,0

链式编码的前两个数字表示起点的行、列数,从第三个数字开始,每个数字都表示单位矢量的方向,八个方向用图2.19中所示的整数代表。

链状编码作为一种压缩编码方式,具有很多优势。例如,对于线状和面状地理实体的表示,链式编码具有很强的数据压缩能力,且对许多数据操作有良好的支持,如计算面积和周长、探测边界急弯和凹进部分等都比较容易。当然,链式编码的缺点也是显而易见的,如组合及相交等叠加等运算很难实施,对局部的修改将改变整体结构,效率较低,而且由于链码以每个区域为单位存储边界,相邻区域的边界会被重复存储而产生冗余,等等。

3.游程长度编码

游程长度编码(Run-length Code)克服了栅格直接编码占用空间比较大的缺点,它保持了二维矩阵的行结构,在每行中将属性编码值相同且位置相邻的像元合并为一个“游程”记录。其出发点是:对于一个栅格矩阵,常常有行(或列)方向上相邻的若干点具有相同的属性代码,故可采取某种方法压缩那些重复的记录内容。这样做的目的是压缩栅格数据量,消除数据的冗余。游程编码结构的建立方法是:将栅格矩阵的数据序列X1X2X3Xn映射为相应的二元组序列(Ai,Pi),i=1,K,且Kn。其中,A为栅格像元属性值,P为游程,K为游程序号。也就是说,在各行(或列)数据的代码发生变化时依次记录该代码及相同代码重复的个数即可(如图2.21所示)。

图2.21 游程编码表示的栅格矩阵数据

游程长度编码对数据压缩的效果十分明显。从图2.21来看,如果用直接栅格编码,需要30个数才能表示,但是用游程长度编码只需要20个就可以了。事实上,数据压缩比率的大小和图的复杂程度成反比,在变化多的部分,游程数就多;在变化少的部分,游程数就少。

4.块状编码

块状编码(Block Code)是游程长度编码扩展到二维的情况,采用方形区域作为记录单元,每个记录单元包括相邻的若干栅格,数据结构由四部分构成:初始位置行号、初始位置列号、块的覆盖半径和栅格单元的属性值(如图2.22所示)。

不难看出,一个多边形所包含的区域越少,多边形的边界越简单,块状编码的效率就越高。事实上,块状编码更加适合对简单且大的多边形编码,但是对分割比较零碎的复杂多边形的编码效果并不好。块状编码的优越性在于合并、插入、检查延伸性、计算面积等操作比较容易实现。但是对有些运算并不能很好地适应,必须经过编码转换才可以。

图2.22 块状编码示意图

5.四叉树编码

游程长度编码是在一维上对栅格数据进行压缩编码,为了进一步提高压缩率,需要在二维方向上对数据采取压缩,这样四叉树编码(Quad-tree Code)就成为必然的选择。所谓四叉树是指树中的每个节点最多只有4棵子树,即树中任意节点的度数不大于4。

四叉树编码的基本思想是把一幅图像或一幅栅格地图按照面积四等分的方式分成四个子区。若每次分解时被分解的次级子区的各栅格的属性编码值相同,则终止对这个子区的继续分割;否则,把该子区域再分割成四个子区域,这样不停地分割,直至每个子区都只含有相同值为止(如图2.23所示)。

图2.23 四叉树压缩编码表示法

图2.23(a)所示为栅格平面(斜线部分)四分的过程;图2.23(b)所示为该区域对应的四叉树,其中树根代表整个区域,树的每个节点有四个或零个子节点,子集为空的节点称为叶节点,对应于区域分割时的均质方块的子象限。从四叉树的分解过程看出,被分解的图必须为2n×2n个栅格,对于不满足2n×2n的图,在分解前需用0补足。

四叉树结构按其编码的方法不同分为常规四叉树和线性四叉树。常规四叉树除了要记录叶节点之外,还要记录中间节点。节点之间通过指针相互联系,每个节点通常存储6个量:4个子节点指针,一个父节点指针(根节点的父指针为空,叶节点的子指针为空)和一个节点的属性或灰度值。这些指针不仅增加了数据存储量,而且增大了操作的复杂性。对于数据检索、多要素叠合分析、分析物体间的空间关系等操作而言,采用常规四叉树结构非常便利。

线性四叉树则只存储最后叶节点的三个信息:叶节点的位置、深度和本节点的属性或灰度值。与常规四叉树相比节省了存储空间。根据节点地址,就可以直接找到它在四叉树中的走向路径,也可以换算出它在整个栅格区域中的行列位置。所谓深度,是指处于四叉树的第几层上,由深度可推知子区的大小。

无论是常规四叉树还是线性四叉树,都可以通过自上而下(top-down)和自下而上bottom-up)两种方式建立(详细内容请看《数据结构》相应教材)。

四叉树编码的优点主要有:① 四叉树编码实质上是一种可变分辨率编码,对边界复杂部分分级多,分辨率高,而不需表示许多细节的部分则分级少,分辨率低,因此,可用较少的存储量精确地表示复杂的图形;② 栅格到四叉树及四叉树到简单栅格结构的转换比其他压缩方法容易;③ 便于在多边形中嵌套多边形,如表示“岛”;④ 对多边形的数量特征计算比较容易。四叉树编码的最大缺点是数据结构较复杂,用同一形状和大小的多边形可能得出多种不同的四叉树结构,故不利于形状分析和模式识别。但因四叉树允许多边形中嵌套多边形(即“岛”)结构的存在,也逐渐引起了很多GIS工作者的兴趣。

6.八叉树编码

四叉树编码是将一幅平面栅格图每次四等分划分而成。如果将四叉树编码方式进一步发展,就会形成八叉树码和十六叉树编码等多种方式。八叉树编码的原理是将空间区域不断地分解为八个同样大小的子区域(即将一个六面的立方体分解为八个相同大小的小立方体),分解的次数越多,子区域就越小,这样一直迭代分解下去,直到同一区域的属性单一为止(如图2.24所示)。八叉树结构按从下而上合并的方式来说,就是将研究区空间先按一定的分辨率将三维空间划分为三维栅格网,然后按规定的顺序每次比较3个相邻的栅格单元,如果其属性值相同则合并,否则就记盘,依次递归运算,直到每个子区域均为单值为止。

八叉树同样可分为常规八叉树和线性八叉树。常规八叉树的节点要记录十个值,即8个指向子节点的指针,一个指向父节点的指针和一个属性值(或标识号)。线性八叉树则只需要记录叶节点的地址码和属性值。因此,它的主要优点是:首先,节省存储空间,因为只需对叶节点编码,节省了大量中间节点的存储空间。同时,每个节点的指针信息也不需要存储,因为从根到某一特定节点的方向和路径的信息隐含在定位码之中,定位码数字的个位数则显示了分辨率的高低或分解程度。其次,线性八叉树可直接寻址,通过其坐标值就能计算出任何输入节点的定位码(称编码),而不必实际建立八叉树,并且定位码本身就是坐标的另一种形式,不必特意去存储坐标值。若需要,还能从定位码中获取其坐标值(称解码)。再次,所产生的定位码存储和执行起来比较容易,便于实现集合、相加等组合操作。此外,如果应用任务很大,致使核心存储器不能容纳所有定位码,也可以将定位码安排在B树中,以便划分成许多页面并存储在外围设备中。八叉树主要用来解决GIS中的三维问题。将八叉树编码进一步扩展就可以形成十六叉树编码方式。

图2.24 八叉树编码示意图(n=3)

2.3 矢量数据结构

矢量数据结构是GIS中的另一种常见结构,是利用欧几里得几何学中的点、线、面及其组合体来表示地理空间分布的一种数据组织方式。通过记录坐标的方式,这种数据组织方式能直观地表达地理空间,精确地表示空间实体的位置和具有什么样的属性,能够方便地进行比例尺变化、投影变换及图形的输入/输出等操作,数据精度高、冗余度小,便于进行实体的网络分析,但是对于多层空间数据的叠合分析相对比较困难。

2.3.1 矢量数据结构编码的基本内容

矢量数据结构以坐标来表示地理空间分布,在地理空间中主要有点、线、面和体空间等对象实体。因此,矢量结构编码主要是针对这些地理实体进行的。

1.点实体

点实体是地理空间中最基本的实体要素,形式化上可以理解为在特定的比例尺前提下一切可以忽略面积的单个地理要素。点实体是不可再分的空间对象,用来描述地图上的各种抽象或具体的标识点,如监控点、居民点等。点实体用坐标点(x, y)来定位。在矢量数据结构中,除了存储点实体的坐标外,还存储与点实体相关的属性数据,这些数据用来描述点实体的类型、绘图符号和显示要求等。如果点是一个与其他信息无关的符号,则记录时应包括符号类型、大小、方向等有关信息;如果点实体是文本实体,则记录数据时应包括符号大小、字体、排列方式、比例和方向及与其他非图形属性的联系方式等信息。对其他类型的点实体也应该做相应处理。图2.25是点实体矢量数据结构组织方式示意图。

2.线实体

线实体在地理空间内可以被看做忽略了宽度而只有长度的地理对象,包括直线和曲线,曲线又包括一般曲线和封闭曲线,分别用来表示河流、道路和行政区域的边界等,除此之外,还可能包括一些特殊曲线,如等高线等。一般而言,线实体可以看做由一系列足够短的直线段首尾相接而形成的曲线(直线可被认为是具有特殊形状的曲线),当这条曲线被分割为尽可能多的短线段后,这些小线段可被近似地看做直线,而对应的曲线可用这些小直线段序列表示,在矢量结构中记录这些小直线段的端点坐标,就可以将一条曲线表示为一个坐标序列,而坐标之间被认为是直线相连的。在一定精度范围内,任何曲线都可以用类似方法形成首尾相连的小直线段的集合来逼近。

在线实体组成的网络结构中,线实体一般携带互相间连接的空间信息,这种信息是网络分析必不可少的。因此,在数据结构中建立指针系统才能让计算机在复杂的线网结构中跟踪每一条线,如建立水网中每条支流之间连接关系时必须使用这种指针系统。指针的建立要以节点为基础,包括节点指向线的指针、每条从节点出发的线汇于节点处的角度等,从而完整地定义线状网络的拓扑关系。线实体矢量数据结构编码基本内容如图2.26所示。

图2.25 点实体矢量数据结构组织方式示意图

图2.26 线实体矢量数据结构编码基本内容

3.面实体

面实体是由曲线段组成的形状任意且边界完全闭合的空间区域,用来描述一块连续的区域,如湖泊、林地等。多边形的边界将整个空间划分为两部分:多边形的内部和外部。多边形可以被看做由一系列微小直线段组成的,每个小线段作为这个区域的一条边。所以,多边形的矢量数据可以用组成这个多边形的小线段的坐标系列来表示。在对面实体编码时,不仅要描述位置和属性,更重要的是能表达多边形的拓扑特征。多边形矢量编码比点实体和线实体的矢量编码要复杂得多,也更为重要。在对多边形的数据结构编码时,应注意以下问题。

(1)地图中的每一个多边形应有唯一的形状、周长和面积。

即使大多数美国的规划街区,也不能设想它们具有完全一样的形状和大小,对土壤或地质图上的多边形来说更不可能有相同的形状和大小。这和栅格结构完全不同,因为栅格结构具有简单而标准的基本单元。

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

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

2.3.2 矢量数据的特征和获取方式

1.矢量数据的特征

矢量数据根据坐标来直接存储,而点、线、面等空间实体的其他属性则存储于数据结构的其他位置。通过离散的点或线来描述地理现象及特征,借助坐标定位地理空间实体位置,因此定位非常明显,而将属性隐含在文件头或其他位置;矢量数据用拓扑关系描述彼此间的几何位置关系,能够很清楚地表达空间实体间的结构;矢量数据的精度一般只受到数字化设备的精度和数值记录字长的限制,通常精度比栅格数据要高得多;在连续的空间中,矢量数据没有必要像栅格数据那样进行量化处理,因此能够更精确地定义实体的位置、大小等。对矢量数据的操作更多的是面向目标对象,运算量一般要比栅格数据少;当然,矢量数据不像栅格数据那样容易与遥感数据结合。

2.矢量数据的获取途径

矢量数据最基本的获取方式就是利用各种定位仪器设备采集空间数据,例如,利用GPS、平板测土仪等可以快速测得空间任意一点的地理坐标。通常,利用这些设备得到的坐标是大地坐标(即经纬度数据),需要经过投影方可被GIS所使用。另外,对纸质地图用数字化仪跟踪扫描也可以获取矢量数据,这也是获取矢量数据的主要方式之一。除了这两种方式外,也可以通过间接手段获取矢量数据,例如,对栅格数据进行转换或对已有的矢量数据通过模型运算都可以生成矢量数据。

2.3.3 矢量数据结构的编码方式

基于矢量模型的矢量数据结构利用几何学中的点、线、面及其组合来表示地理实体在地理空间中的分布。这种数据组织方式能最好地逼近地理实体的空间分布特征,但对于多层空间数据的叠加分析比较困难。矢量数据结构的编码主要有实体数据结构编码、拓扑结构编码和曲面结构编码等。

1.实体数据结构编码

实体数据结构编码也称坐标序列编码,它是矢量数据结构最简单的编码方式。空间数据以基本的空间对象(点、线或面)为单元进行单独组织,以坐标点为基础分别编码,在编码时不考虑矢量数据的拓扑信息。坐标序列编码最典型的是Spaghetti编码结构(如图2.27所示)。图2.27中,xiyi是每个点的坐标值,Pi是多边形。

在这种编码方式里,数据以点、线或面为单元进行组织,数据编排直观、数字化操作简单。具体表现在:点用一个坐标(xi, yi)表示,在计算机内部只是一个位置数据;线对象用一串(两个以上)坐标(x1, y1), (x2, y2),…,(xn, yn)表示;而面对象用首尾相连的多个x, y)坐标来表示其边界。点、线或面有各自的坐标数据,但是没有拓扑数据,彼此之间不相互关联。在编码时每个多边形都按照封闭线段在数据库中相互独立分开存储,线和多边形都没有拓扑数据,多边形的公共边界是两个相邻多边形的公共部分,每一条公共边界被数字化两次和存储两次;对于像“岛”或“洞”这样结构,内部嵌套的多边形与外界多边形之间没有联系。

图2.27 Spaghetti数据结构及编码文件

这种编码方式结构简单,易于实现以实体为单位的运算和显示操作,能够顺序进行数字化绘制工作。点、线和多边形都有各自的坐标表,相互之间并不相连,这种连接只有通过计算空间坐标才能确定坐标表。坐标表与每一个空间对象相联系,在分析一个点是否在某个多边形内或确定两条线的交点等操作时,需要查找所有的空间坐标,因此对查询操作非常不利。但正因为直接用坐标标识空间实体位置,所以对显示操作非常方便。这种数据结构编码方式需要占据大量的存储空间来存储坐标表。这种编码方式的不足之处体现在以下几个方面。

(1)编码时多边形之间的公共边界被数字化和存储两次,容易造成数据冗余和一系列误差;沿公共边界数字化两次的数据可能不完全相同,导致相邻多边形间存在人为的空隙和窄缝,甚至有叠加的情况。

(2)每个多边形自成体系而不能产生邻域信息,也不能产生组成多边形的点、线、面之间的拓扑信息,难以体现面实体之间的相邻关系,但实际中相邻关系在GIS空间分析中非常重要。

(3)在编辑修改边界时需要同时修改两个多边形记录。也会给空间分析和查询带来很大不便,如,消除某两个多边形之间的共同边界、检查有无不完整的多边形等。

(4)岛只作为一个单个的图形建造,没有与外包多边形建立联系。

值得注意的是,对上述的坐标序列编码方式稍微加以改进就会产生很实用的非完全拓扑的表达实体地图的方法和数据结构,这种方法可称为矢量数据结构的索引编码。这种编码方式采用树状索引来减少数据冗余,并且可以间接地增加邻域信息。在具体编码时对所有边界点进行数字化,将坐标对按照顺序方式存储,由点索引与边界号相联系,以线索引与各多边形相联系,形成一种树状索引结构。图2.27(a)所示的多边形原始数据对应的多边形文件和线文件树状索引示意图如图2.28、图2.29所示。树状索引结构消除了相邻多边形边界的数据冗余和不一致的问题,在简化过于复杂的边界线或合并多边形时不必改造索引表,邻域信息和岛状信息可以通过对多边形文件的线索引处理得到,但是其操作比较烦琐,因而给邻域函数运算、消除无用边、处理岛状信息及检查拓扑关系等带来了一定的困难,而且两个编码表都要以人工方式建立,工作量大且容易出错。

图2.28 线与多边形间的树状索引

图2.29 点与多边形边界线间的树状索引

2.拓扑结构编码

采用坐标序列编码时,不能够表达空间对象的拓扑关系。但是在GIS中,很多时候拓扑关系显得尤为重要。因此,有必要建立完整的拓扑关系结构。此外,要彻底解决邻域和岛状信息处理的问题,也离不开完整的拓扑关系结构。

在拓扑结构发展方面,美国人口统计局为进行人口普查分析和绘图而研制了DIME Dual Independent Map Encoding)结构。DIME也称之为双重独立地图编码。DIME以城市街道为编码主体,建立城市街道网和统计单位,如街区、人口统计区等的数据库,并实现自动和半自动的编辑和分析,用于人口分析绘图,也可以用于土地利用等多种信息系统的编辑和分析。除此之外,目前比较常用的拓扑结构有多边形转换器POLYVRT结构、加拿大农业部于20世纪70年代开发的CANSIS结构、美国为进行人口普查而开发的TIGER Topologically Integrated Geographic Encoding and Reference)结构等。尽管这些拓扑结构在记录方式上各不相同,但其基本概念都是类似的。主要的共同点体现在:多边形由弧段构成,弧段由起点、终点、左多边形、右多边形、外接多边形边界等组成;岛多边形由一条弧段组成;弧段的交点、节点和多边形都作为一个对象记录;多边形是单连通的区域,含岛的多边形为复杂多边形,复杂多边形由外边界和内边界组成,内边界即为岛的多边形边界。

在拓扑结构中,数据组织的基本对象是弧段,节点与节点或多边形与多边形之间为邻接关系,节点与线段或多边形与线段之间为关联关系。利用这种拓扑关系来组织数据,可以有效地进行数据存储正确性检查,同时便于对数据进行更新和检索。在组织数据时主要存在四个文件:多边形文件、弧段文件、弧段坐标文件和节点文件。弧段文件由弧段记录组成,每个弧段记录包括弧段标识码、起始节点、终止节点、左多边形和右多边形及其他属性;多边形文件主要由多边形记录组成,包括多边形标识码、组成多边形的弧段号及其他属性等,多边形文件也可以通过软件自动检索各有关弧段生成,同时计算出多边形的周长和面积及中心点的坐标,当多边形中含有“岛”时,则此“岛”的面积为负,应该在总面积中减去“岛的面积”,其组成的弧段号前也冠以负号;节点文件由节点记录组成,包括每个节点的标识码、节点坐标及与该节点相连接的弧段标识码等;弧段坐标文件由一系列点的位置坐标组成,一般从数字化过程获取,数字化的顺序确定了这条弧段的方向。一个典型的拓扑结构编码如图2.30及表2.1、表2.2、表2.3和表2.4所示。

图2.30 拓扑数据关系结构

表2.1 拓扑数据结构的多边形文件构成

表2.2 拓扑数据结构的节点文件构成

表2.3中的第一行表示弧段a1的方向是从节点N1到节点N2,其左侧多边形为P1,右侧多边形为Φ。利用这样的拓扑结构可以有效地进行数据存储正确性检查,同时便于对数据进行更新和检索。当编码数据经过计算机编辑处理以后,多边形单元的第一个始节点应当和最后一个终节点相一致,而且当按照左侧多边形或右侧多边形来自动建立一个指定的区域单元时,其空间点的坐标应当自行闭合。如果不能自行闭合,或者出现多余的线段,则表示数据存储或编码有错,这样就达到数据正确性检查的目的。例如,从表2.3中寻找右多边形为P3的记录,则可以得到组成P3多边形的弧线及节点如表2.4所示,通过这种方法可以自动形成面文件,并可以检查弧段文件数据的正确性。

表2.3 拓扑数据结构的弧段文件构成

表2.4 查找右多边形为P1时生成的弧段和节点

3.曲面结构编码

曲面是指连续分布现象的覆盖表面,具有这种覆盖表面的要素有地形、降水量、温度和磁场等。表示和存储这些要素的基本要求是必须便于连续现象在任意一点的内插计算,因此经常采用不规则三角网来拟合连续分布现象的覆盖表面,称为TIN(Triangulated rregular Network)数据结构,如图2.31所示。TIN数据结构被广泛应用于数字地形的表示,ARC/INFO、MGE等地理信息系统都采用这种数据结构。TIN数据结构按照曲面要素的实测点分布,将它们连成三角网,三角网中的每个三角形要尽量接近等边形状,并保证由最邻近的点构成三角形,即三角形的边长之和最小。在所有可能的三角网中,狄洛尼(Delaunay)三角网在地形拟合方面表现最出色,因此常被用于TIN的生成。这种数据结构可以方便地进行各种地形分析,如坡度和坡向信息的提取、填挖方计算、阴影和地形通视分析及等高线自动生成等。

图2.31 不规则三角网及其数据组织

2.4 栅格-矢量一体化数据结构

栅格数据结构和矢量数据结构采用不同的数据组织方式,在数据存储和表达方面各有其优缺点。事实上,这两种数据结构的优缺点是互补的,为了有效地发挥GIS的各项功能,如与遥感的高效结合、有效的空间分析等,可以将两种空间数据结构结合起来,形成一种新的数据结构——栅格—矢量一体化结构。

在表达空间数据方面,矢量结构和栅格结构同样具有很好的效果。栅格数据结构以行列式的矩阵来组织数据,因而更适合于和遥感影像的结合;而对地图数字化、拓扑生成和检验、矢量图等的组织表达方面,矢量结构则显得更加适用。因此,理想的方式是将栅格结构和矢量结构相结合,通过计算机程序实现两种结构的高效转换和融合,根据需要选择合适的数据结构来存储空间数据,尽可能在提高数据精度的同时减少数据冗余,在提取、分析和输出空间数据时则可以采取拟人化的方式,由程序自动选择合适的结构,以获取最强的分析能力和最高的处理效率。

按照传统模式,栅格和矢量是两种截然不同的空间数据结构,当利用它们来表达和组织空间对象时,对于线实体习惯于用矢量结构;而对于面实体,在基于矢量的GIS中主要使用矢量结构表达(记录边界多边形的坐标),而在基于栅格的GIS中则使用栅格结构表达(一般使用空间填充表达法)。事实上,如果将矢量方法表示的线状地物也用类似栅格结构的像元空间充填表达的话,就可以将矢量和栅格的概念辨证统一起来,进而发展为矢量栅格一体化的数据结构。假定在对一个线状地物目标数字化采集时,恰好在路径所经过的栅格内部取得采样点,记录下采样点和矢量化经过的栅格,这样的数据就具有矢量和栅格的双重性质。一方面,它保留了矢量数据的全部性质,以目标为单元直接获取位置信息,并能建立拓扑关系;另一方面,它建立了栅格与地物的关系,即路径上的任意一点都直接与目标建立了联系。同样,对于面实体在记录多边形边界外还记录中间包含的栅格。这样,既保留了矢量特性,又具有栅格性质,就可以将两种结构统一起来。

因此,可采用填满线状目标路径和填充面状目标空间的表达方法作为一体化数据结构的基础。每个线状目标除记录原始取样点外,还记录路径所通过的栅格;每个面状地物除记录它的多边形边界以外,还包括中间的面域栅格。无论是点状地物、线状地物还是面状地物,均采用面向目标的描述方法,因而它可以完全保持矢量的特性,而像元空间填充表达则建立了位置与地物的联系,使之具有栅格的性质。从原理上看,这是一种以矢量的方式来组织栅格数据的数据结构。在这种一体化结构中,对于用矢量结构表达的线实体,可以在对其矢量化时,记录原始采样点和矢量化时所经过的栅格。这样,线实体也可以用栅格结构的方法来表达。同样,对于面实体除记录多边形边界外,还记录中间包含的栅格。这样,既保留了矢量特性,又具有栅格性质,就可以将两种结构统一起来。在建立栅格矢量一体化数据结构时,数据结构的存储要根据不同地物实体采取不同的策略。例如,对于点状实体,在计算机中只存储表示该点的一个位置数据及节点相关的弧段信息;对于线状实体,因为只有形状而没有面积,在计算机内部需要用一组像元来填满整个路径,并表示该弧段相关的拓扑信息;对于面状实体,既有形状又有面积,在计算机内部需要表示为由像元填满路径的一组边界和由边界组成的紧凑空间。

2.5 两种数据结构的比较

如前文所述,栅格结构和矢量结构是GIS中组织和表达空间数据的两种截然不同的空间数据结构,各有各的优缺点,可以在一定条件下相互转换。

作为两种最常用的空间数据结构,最明显的不同在于:栅格结构“属性明显,位置隐含”,而矢量数据结构“位置明显、属性隐含”。

首先,在某些操作上栅格数据结构总体来讲操作比矢量结构要简单,实现也比较容易。如按照空间坐标位置的搜索,用栅格结构实现会非常便利,但若使用矢量结构就需要耗费很大工作量。对于一些基于栅格的空间信息模型的分析,如在给定区域内统计指标运算,包括计算多边形的形状、面积、线密度等,栅格结构可以快速得到结果,但类似的工作用矢量结构则由于所在区域边界限制条件难以提取,使得效率相对较低;矢量结构用于拓扑关系的搜索则比栅格结构更为高效,即诸如计算多边形形状搜索邻域、层次信息等,对于网络信息只有矢量结构才能完全描述。

其次,栅格数据表达精度不高,数据存储量大,工作效率较低。如果要提高一倍的表达精度(栅格单元减少一半),数据量就需增加三倍,同时增加了数据的冗余。因此,对于基于栅格数据结构的应用来说,需要根据应用项目的自身特点及其精度要求来恰当地平衡栅格数据的表达精度和工作效率两者之间的关系。矢量结构在计算精度与数据量方面的优势也是矢量结构比栅格结构受到欢迎的原因之一。事实上,无论那种数据结构,数据精度和数据规模都是相互矛盾的,要提高精度,栅格结构需要更多的栅格单元,而矢量结构则需记录更多的线段节点。一般来说,栅格结构只是矢量结构在某种进度上的一种近似,如果要使栅格结构描述的图形取得和矢量结构同样的精度,甚至仅在量上接近,那么数据量也要比矢量结构多得多。

再次,栅格数据格式一般不经过压缩编码,更容易表达像图形一样的实体,数据格式容易为大多数程序设计人员和用户理解接受,对于基于栅格数据基础之上的信息共享也更加容易。

最后,遥感影像是以像元为单位的栅格结构,所以可以直接把遥感影像或处理后的数据应用于栅格结构的地理信息系统中。换言之,栅格数据结构比较容易和遥感相结合。对矢量数据结构和栅格数据结构的比较如表2.5所示。

表2.5 矢量数据结构与栅格数据结构的比较

本章小结

地理空间实体是在地理空间中与一定的空间位置有关、且具有一定几何形态的事件或现象。为了能够运用信息系统这类工具来表述现实世界中的地理空间实体,并解决其中的相关问题,必须对现实世界及其实体进行建模。空间数据模型是空间实体及其关系的描述。根据空间数据的组织和处理方式,空间数据模型主要有栅格数据模型和矢量数据模型两类。

在GIS中,要表达的地理空间数据及其关系往往是非常复杂的,必须采用合理的数据结构和数据组织管理方法统一组织这些数据,并将它们映射到计算机存储器中,才能进行有效的存取、检索、处理和分析。空间数据结构是GIS中对空间数据元素之间结构关系的描述。根据数据存储格式的不同,地理空间数据主要有栅格数据和矢量数据两类。本章详细论述了目前通用的及比较有发展前途的空间数据结构种类和数据编码方法,以及它们的相互转换。随着GIS技术的发展,新的数据编码技术正在不断涌现。

问题讨论

1.空间数据与非空间数据有哪些不同?

2.根据你对GIS空间数据的了解,请说明空间数据的特征及空间数据在计算机中的表示方法。

3.请简述空间数据的拓扑关系及其对GIS数据处理和空间分析的意义。

4.栅格数据和矢量数据在结构表达方面各有什么特色?

5.什么是栅格数据结构?如何获取栅格数据?

6.什么是栅格数据的压缩编码?主要有哪些压缩编码方法?各自的优缺点是什么?

7.具有拓扑关系的矢量数据结构是如何定义的?

8.什么是空间数据的拓扑关系?空间数据的拓扑关系的种类有哪些?

9.矢量结构数据有哪些编码方式?

10.栅格数据结构和矢量数据结构的区别是什么?栅格数据结构和矢量数据结构有通用标准吗?

11.栅格—矢量一体化的数据结构有什么优势?基本原理是什么?