文档库 最新最全的文档下载
当前位置:文档库 › 空间数据结构word版

空间数据结构word版

空间数据结构word版
空间数据结构word版

第二章空间数据结构

地理信息系统空间数据结构就是指空间数据的编排方式和组织关系。空间数据编码是空间数据结构的实现,目的是将图形数据、影像数据、统计数据等资料,按一定的数据结构转换为适用于计算机存储和处理的过程,不同的数据源,其数据结构相差很大,同一数据源,也可以用许多方式来组织数据,按不同的数据结构去处理,得到截然不同的内容。计算机存储和处理数据的效率,在很大程度上取决于数据组织方式的优劣。数据结构在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代表前景。实体可分为点实体、线实体和面实体。点实体在栅格数据中表示为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实体由聚集在一起的相邻像元集合表示。这种数据结构便于计算机对面状要素的处理。

用栅格数据表示的地表是不连续的,是量化和近似离散的数据,这意味着地表一定面积内(像元地面分辩率范围内)地理数据的近似性,例如平均值、主成分值或按某种规则在像元内提取的值等。另一方面,栅格数据的比例尺就是栅格大小与地表相应单元大小之

22 / 1

22 / 1

。像元大小相对于所表示的面积较大时,对长度、面积等的度量有较大影响。这种影响除对像元的取舍外,还与计算长度面积的方法有关。如图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个平方单位,这种误差随像元的增大而增加。

3

3

a 4

b a 4 b

(a) (b)

图2-1-1栅格数据结构对观测值的影响

二、栅格数据层的概念

地理信息系统对现实世界的描述可以以地理空间位置为基础,按道路、行政区域、土地使用、土壤、房屋、地下管线、自然地形等不同专题属性来组织地理信息。在栅格数据结构中,物体的空间位置就用其在笛卡尔平面网格中的行号和列号坐标表示,物体的属性用像元的取值表示,每个像元在一个网格中只能取值一次,同一像元要表示多重属性的事物就要用多个笛卡尔平面网格,每个笛卡尔平面网格表示一种属性或同一属性的不同特征,这种平面称为层。地理数据在栅格数据结构中必须分层组织存储,每一层构成单一的属性数据层或专题信息层,例如同样以线性特征表示的地理要素,河流可以组织为一个层,道路可以作为另一层,同样以多边形特征表示的地理要素,湖泊可以作为一个层,房屋可以作为另一层,根据使用目的不同,可以确定需要建立哪些层及需要建立哪些描述性属性。在图2-1-2中,左图是现实世界按专题内容的分层表示,第三层为植被,第二层为土壤,第一层为地形,中间是现实世界各专题层所对应的栅格数据层,右图是对不同栅格数据层进行叠加分析得出的分析结论。

三、栅格数据结构的表示

1.二维数组

把栅格数据中各像素的值对应于二维数组相应的各元素加以存储的方式适合于灰度级大(?)的浓淡图像的存储以及在通用计算机中的处理,所以是最常采用的一种方式。在采用二维数组的方式中,还有组合方式和比特面方式。

组合方式是在计算机的一个字长中存储多个像素的方式。从节约存储量的观点来考虑,经常在保存数据时采用。例如:16比特/字的计算机中,按每个像素8比特的数据对待的时候,如图2-1-3(a)所示,可以把相邻的两个像素数据分别存储到上8比特和下8比特中。同样,如果是按每个像素4比特数据,则一个字可以存储连续的4个像素的数据;如果是按每个像素1比特数据,则一个字可以存储16个像素的数据。

图2-1-3 组合方式和比特面方式

图2-1-2 栅格数据的分层与叠合 地图分层 植被分层 叠合分层

现实世界

分析结论 植被

植被 植被

土壤 土壤

土壤

地形 地形 地形

比特面方式,就是把数据存储到能按比特进行存取的二维数组(可以理解为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-4 把栅格数据(二维数组)存储到一维数组中

其次,也有不是存储栅格数据全体,而只是把应该存储的像素的信息,按照一定规则存储到一维数组中去的方法。这种方法主要是在栅格数据中用来存储图形轮廓线信息等。具体来讲是坐标序列、链码等。

四、栅格数据的组织方法

假定基于笛卡尔坐标系上的一系列叠置层的栅格地图文件已建立起来,那么如何在计算机内组织这些数据才能达到最优数据存取、最少的存储空间、最短处理过程呢?如果每一层中每一个像元在数据库中都是独立单元即数据值、像元和位置之间存在着一对一的关系,按上述要求组织数据的可能方式有三种(图2-1-5)。

(1)以像元为记录的序列。不同层上同一像元位置上的各属性值表示为一个列数组(2-1-5a)。

(2)以层为基础。每一层又以像元为序记录它的坐标和属性值,一层记录完后再记录第二层(图2-1-5b)。这种方法较为简单,但需要的存储空间最大。

(3)以层为基础,但每一层内则以多边形(也称制图单元)为序记录多边形的属性值和充满多边形的各像元的坐标(图2-1-5c)。

这三种方法中(1)节省了许多存储空间,因为N层中实际只存储了一层的像元坐标;方法(3)则节省了许多用于存储属性的空间,同一属性的制图单元的n个像元只记录一次

属性值。它

实际上是地图分析软件包中所使用的分级结构,这种多像元对应一种属性值的多对一的关系,相当于把相同属性的像元排列在一起,使地图分析和制图处理较为方便;方法(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)所示。

重要性法:根据栅格内不同地物的重要性程度,选取特别重要的空间实体决定对应的栅格单元值,如稀有金属矿产区,其所在区域尽管面积很小或不位于中心,也应采取保留的原则,如图2-1-6(d) 所示。

1 1

2 2 1 1 1 2

1 1

2 2 1 1 2 2

1 3

2 2 1

3 3 2

3 1 3 3 3 3 3 3

(a)(c)

1 1 1

2 1 4 1 2

1 1

2 2 1 1 2 4

1 3

2 2 1

3 3 2

3 1 3 3 3 3 3 3

(b)(d)

图2-1-6栅格数据取值方法

六、栅格数据存储的压缩编码

直接栅格编码是最简单最直观而又非常重要的一种栅格结构编码方法,通常称这种编码为图像文件或栅格文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐像元记录,也可奇数据行从左到右,而偶数行由右向左记录,为了特定目的还可采用其它特殊的顺序。栅格结构不论采用何种压缩方法,其逻辑原型都是直接编码的网格文件。

当每个像元都有唯一一个属性值时,一层内的编码就需要m(行)×n(列)个存储单元。数字地面模型就属此种情况。如果一个多边形(或制图单元)内的每个像元都具有相同的属性值,就有可能大大节省栅格数据的存储需要量,关键是恰当地设计数据结构和编码方法。

1.链式编码//第一个像素往东北走,所以是 0 1 然后往东 0 往东南 0 3 所以是 0

1 02 3

链式编码又称为弗里曼链码(Freeman,1961)或边界链码。考虑图2-1-7中的多边形。该多边形边界可以表示为:由某一原点开始并按某些基本方向确定的单位矢量链。基本方向可定义为:东=0,南=3,西=2,北=1等。如果再确定原点为像元(10,1),则该多边形界按顺时方向的链式编码为:

0,1,02,3,02,1,0,3,0,1,03,32,2,33,02,1,05,32,22,3,23,3,23,1,22,1,22,1,22,1,22,13

链式编码对多边形的表示具有很强的数据压缩能力,且具有一定的运算功能,如面积和周长计算等,探测边界急弯和凹进部分等都比较容易。但是,叠置运算如组合、相交等则很难实施,除非还原成栅格结构方可,况且公共边界需要存储两次,从而产生多余的数据。

2.行程编码

只在各行(或列)数据的代码发生变化时依次记录该代码以及相同代码重复的个数,即按(属性值,重复个数)编码,图2-1-8可沿行方向进行行程编码:

1行:(3,3),(4,5);2行:(3,4),(4,4);3行:(1,1),(3,3),(4,3),(2,1);4行:(1,2),(3,3),(2,3);5行:(1,4),(3,1),(2,3);6行:(1,4),(2,4);7行:(1,5),(2,3);8行:(1,5),(2,3)。

逐个记录各行(或列)代码发生变化的位置和相应的代码,即按(位置,属性值)编码,图2-1-8可沿列方向进行行程编码:

1列:(1,3),(3,1);2列:(1,3),(4,1);3列:(1,3),(5,1);4列:(1,4),(2,3),(5,1);5列:(1,4),(4,3),(6,2),(7,1);6列:(1,4),(4,2);7列:(1,4),(4,2);8列:(1,4),(3,2)。

按行(或列)记录相同代码的始末像元的列号(或行号)和相应的代码,即按(起位,止位,属性值)编码,图2-1-8可沿行方向进行程编码:

1行:(1,3,3),(4,8,4);2行:(3,4,3),(5,8,4);3行:(1,1,1),(2,4,3),(5,7,4),(8,8,2);4行:(1,2,1),(3,5,3),(6,8,2);5行:(1,4,1),(5,5,3),(6,8,2);6行:(1,4,1),(5,8,2);7行:(1,5,1),(6,8,2);8行:(1,5,1),(6,8,2)。

1 3 3 3 4 4 4 4 4

2 3 3 3 3 4 4 4 4

3 1 3 3 3

4 4 4 2

4 1 1 3 3 3 2 2 2

5 1 1 1 1 3 2 2 2

6 1 1 1 1 2 2 2 2

7 1 1 1 1 1 2 2 2

8 1 1 1 1 1 2 2 2

图2-1-8多区域栅格地图

图2-1-7 栅格地图上的一个简单区域

3.块式编码

块式编码是将行程编码扩大到二维的情况,把多边形范围划分成由像元组成的正方

相关文档
相关文档 最新文档