·22·第二章 空间数据结构地理信息系统空间数据结构就是指空间数据的编排方式和组织关系空间数据编码是空间数据结构的实现,目的是将图形数据、影像数据、统计数据等资料,按一定的数据结构转换为适用于计算机存储和处理的过程,不同的数据源,其数据结构相差很大,同一数据源,也可以用许多方式来组织数据,按不同的数据结构去处理,得到截然不同的内容计算机存储和处理数据的效率,在很大程度上取决于数据组织方式的优劣数据结构在GIS 中对于数据采集、存储、查询、检索和应用分析等操作方式有着重要的影响;一种高效率的数据结构,应具备几方面的要求:(1)组织的数据能够表示要素之间的层次关系,便于不同数据联接和覆盖2)正确反映地理实体的空间排列方式和各实体间相互关系3)便于存取和检索4)节省存贮空间,减少数据冗余5)存取速度快,在运算速度较慢的微机上要达到快速响应6)足够灵活性,数据组织应具有插入新的数据、删除或修改部分数据的基本功能空间数据结构选择对于 GIS 设计和建立起着十分关键的作用,只有充分理解了 GIS 的特定的数据结构,才能正确有效地使用系统GIS 软件支持的主要空间数据结构有矢量数据结构和栅格数据结构两种形式。
§2.1 栅格数据结构一、栅格数据的基本概念将工作区域的平面表象按一定分解力作行和列的规则划分,形成许多格网,每个网格单元称为像素,栅格数据结构实际上就是像元阵列,即像元按矩阵形式的集合,栅格中的每个像元是栅格数据中最基本的信息存储单元,其坐标位置可以用行号和列号确定由于栅格数据是按一定规则排列的,所以表示的实体位置关系是隐含在行号、列号之中的网格中每个元素的代码代表了实体的属性或属性的编码,根据所表示实体的表象信息差异,各像元可用不同的“灰度值”来表示若每个像元规定 N 比特,则其灰度值范围可在 0 到2n—1 之间;把白~灰色~黑的连续变化量化成 8 比特(bit),其灰度值范围就允许在0~255 之间,共 256 级;若每个像元只规定 1 比特,则灰度值仅为 0 和 1,这就是所谓二值图像,0 代表背景,1 代表前景实体可分为点实体、线实体和面实体点实体在栅格数据中表示为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实体由聚集在一起的相邻像元集合表示这种数据结构便于计算机对面状要素的处理用栅格数据表示的地表是不连续的,是量化和近似离散的数据,这意味着地表一定面积内(像元地面分辩率范围内)地理数据的近似性,例如平均值、主成分值或按某种规则在像元内提取的值等。
另一方面,栅格数据的比例尺就是栅格大小与地表相应单元大小之·23·比像元大小相对于所表示的面积较大时,对长度、面积等的度量有较大影响这种影响除对像元的取舍外,还与计算长度面积的方法有关如图 2-1-1(a)中a点与 c 点之间的距离是 5 个单位,但在图 2-1-1(b)中,ac 之间的距离可能是 7,也可能是 4,取决于算法如以像元边线计算则为 7,以像元为单位计算则为 4同样,图 2-1-1(a)中三角形的面积为 6 个平方单位,而图 2-1-1(b)中则为 7 个平方单位,这种误差随像元的增大而增加c c3 4/7 3 5a 4 b a 4 b(a) (b)图 2-1-1 栅格数据结构对观测值的影响二、栅格数据层的概念地理信息系统对现实世界的描述可以以地理空间位置为基础,按道路、行政区域、土地使用、土壤、房屋、地下管线、自然地形等不同专题属性来组织地理信息。
在栅格数据结构中,物体的空间位置就用其在笛卡尔平面网格中的行号和列号坐标表示,物体的属性用像元的取值表示,每个像元在一个网格中只能取值一次,同一像元要表示多重属性的事物就要用多个笛卡尔平面网格,每个笛卡尔平面网格表示一种属性或同一属性的不同特征,这种平面称为层地理数据在栅格数据结构中必须分层组织存储,每一层构成单一的属性数据层或专题信息层,例如同样以线性特征表示的地理要素,河流可以组织为一个层,道路可以作为另一层,同样以多边形特征表示的地理要素,湖泊可以作为一个层,房屋可以作为另一层,根据使用目的不同,可以确定需要建立哪些层及需要建立哪些描述性属性在图 2-1-2 中,左图是现实世界按专题内容的分层表示,第三层为植被,第二层为土壤,第一层为地形,中间是现实世界各专题层所对应的栅格数据层,右图是对不同栅格数据层进行叠加分析得出的分析结论三、栅格数据结构的表示1.二维数组把栅格数据中各像素的值对应于二维数组相应的各元素加以存储的方式适合于灰度级大(?)的浓淡图像的存储以及在通用计算机中的处理,所以是最常采用的一种方式在采用二维数组的方式中,还有组合方式和比特面方式·24·组合方式是在计算机的一个字长中存储多个像素的方式。
从节约存储量的观点来考虑,经常在保存数据时采用例如:16 比特/字的计算机中,按每个像素 8 比特的数据对待的时候,如图 2-1-3(a)所示,可以把相邻的两个像素数据分别存储到上 8 比特和下 8 比特中同样,如果是按每个像素 4 比特数据,则一个字可以存储连续的 4 个像素的数据;如果是按每个像素 1 比特数据,则一个字可以存储 16 个像素的数据图 2-1-3 组合方式和比特面方式图 2-1-2 栅格数据的分层与叠合地图分层 植被分层 叠合分层现实世界分析结论植被植被植被土壤 土壤 土壤地形 地形 地形·25·比特面方式,就是把数据存储到能按比特进行存取的二维数组(可以理解为 1 比特/1字)即比特面中的方式对于 n 个比特的浓淡图像,如图 2-1-3(b)所示,要准备 n 个比特面在比特面 k 中(k=0,1,···,n-1),存储的是以二维形式排列着的各个像素值的第k 比特(0 或者 1)的数据另一方面,也有对于 n 比特/字的二维数组,把它作为 n 个比特面考虑,从而把二维图像存储到各比特面中的用法以比特面作为单位进行处理时,其优点是能够在各面间进行高效率的逻辑运算,存储设备利用率高等,但也存在对浓淡图像的处理上耗费时间的问题。
2.一维数组如果给栅格数据内的全体像素赋予按照某一顺序的一维的连续号码,则能够把栅格数据存储到一维数组中上面的二维数组,在计算机内部如图 2-1-4 所示,实际上也变成为一维数组其次,也有不是存储栅格数据全体,而只是把应该存储的像素的信息,按照一定规则存储到一维数组中去的方法这种方法主要是在栅格数据中用来存储图形轮廓线信息等具体来讲是坐标序列、链码等四、栅格数据的组织方法假定基于笛卡尔坐标系上的一系列叠置层的栅格地图文件已建立起来,那么如何在计算机内组织这些数据才能达到最优数据存取、最少的存储空间、最短处理过程呢?如果每一层中每一个像元在数据库中都是独立单元即数据值、像元和位置之间存在着一对一的关系,按上述要求组织数据的可能方式有三种(图 2-1-5)1)以像元为记录的序列不同层上同一像元位置上的各属性值表示为一个列数组(2-1-5a)2)以层为基础每一层又以像元为序记录它的坐标和属性值,一层记录完后再记录第二层(图 2-1-5b)这种方法较为简单,但需要的存储空间最大3)以层为基础,但每一层内则以多边形(也称制图单元)为序记录多边形的属性值和充满多边形的各像元的坐标(图 2-1-5c)。
这三种方法中(1)节省了许多存储空间,因为 N 层中实际只存储了一层的像元坐标;方法(3)则节省了许多用于存储属性的空间,同一属性的制图单元的n个像元只记录一次属性值它实际上是地图分析软件包中所使用的分级结构,这种多像元对应一种属性值图 2-1-4 把栅格数据(二维数组)存储到一维数组中·26·的多对一的关系,相当于把相同属性的像元排列在一起,使地图分析和制图处理较为方便;方法(2)则是每层每个像元一一记录,它的形式最为简单数据文件 数据文件 数据文件X 坐标 X 坐标 属性值Y 坐标 像元 1 Y 坐标 像元 1 坐标层 1 属性值 属性值 多边形 1 像元 1 层 2 属性值 层 1 像元 2 像元 n 坐标 层 1 多边形 2 层 N 属性值 像元 n 像元 2 层 2 层 2 多边形 N 像元 n 层 N 层 N(a) (b) (c)图 2-1-5 栅格数据组织方式五、栅格数据取值方法地图可以用来表示不同的专题属性,如何在地图上获取栅格数据,简单的方法是在专题地图上均匀地划分网格,或者将一张透明方格网叠置于地图上,每一网格覆盖部分的属性数据,即为该网格栅格数据的取值。
但是常常会遇到一些特殊的情况,同一网格可能对应地图上多种专题属性,而每一个单元只允许取一个值,目前对于这种多重属性的网格,有不同的取值方法:中心归属法:每个栅格单元的值以网格中心点对应的面域属性值来确定,如图 2-1-6(a)所示长度占优法:每个栅格单元的值以网格中线(水平或垂直)的大部分长度所对应的面域的属性值来确定,如图 2-1-6(b)所示面积占优法:每个栅格单元的值以在该网格单元中占据最大面积的属性值来确定,如图 2-1-6(c)所示重要性法:根据栅格内不同地物的重要性程度,选取特别重要的空间实体决定对应的栅格单元值,如稀有金属矿产区,其所在区域尽管面积很小或不位于中心,也应采取保留·27·的原则,如图 2-1-6(d) 所示 . . . . 1 1 2 2 1 1 1 2.1 . .2 . 1 1 2 2 1 2 1 1 2 2. . . . 1 3 2 2 1 3 3 2. . .3 . 3 。