书城教材教辅现代物流技术基础
15495100000049

第49章 导航定位技术与地理信息系统(6)

2.栅格数据压缩编码

随着像元尺寸的减小,完全栅格结构影像的存储空间呈几何级数增长,由此使得一些高分辨率数据变得太大而无法管理,尤其是对于三维数据。存储空间的压力能通过压缩方法得到减轻。

(1)直接栅格编码。

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

大多数的数字图像处理系统采用完全栅格结构。最简单、最常用的是限制一个栅格数据层只存储栅格的一种属性,并且把属性值限定在0~255的整数范围内(一个字节对应一个像元)。在完全栅格结构里,像元顺序一般以行为序,以左上角为起点,按从左到右、从上到下的顺序扫描。

(2)链式编码。

链码又称为弗里曼链码(Freeman)或边界链码,它将多边形的边界表示为:由某一原点开始,并按某些基本方向确定的单位矢量链。基本方向可定义为:东=0,东南=1,南=2,西南=3,西=4,西北=5,北=6,东北=7这八个基本方向。

链式编码的前两个数字表示起点的行、列数,从第三个数字开始的每个数字表示单位矢量的方向,八个方向以0~7的整数代表。

如果对线状地物确定其起始点为像元(1,5),则其链式编码为:1,5,3,2,2,3,3,2,3。

对于面状地物,假设其原起始点定为像元(5,8),则该多边形边界按顺时针方向的链式编码为:5,8,3,2,4,4,6,6,7,6,0,2,1。

(3)游程长度编码(Run-Length Codes)。

游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。

其编码方案是,有相同属性值的邻近像元被合并在一起称为一个游程,游程用一对数字表达;每个游程对中的第一个值表示游程属性值(类别),第二个值表示游程长度;每一个新行都以一个新的游程开始。

游程长度编码在栅格数据压缩时,数据量没有明显增加,压缩效率较高,且易于检索、叠加合并等操作,运算简单,适用于机器存储容量小、数据需大量压缩,而又要避免复杂的编码解码运算增加处理和操作时间的情况。

例如对栅格数据,可沿行方向进行如下游程长度编码:

(0,1),(4,2),(7,5),(4,5),(7,3),(4,4),(8,2),(7,2),(0,2),(4,1),(8,3),(7,2),(0,2),(8,4),(7,1),(8,1),(0,3),(8,5),(0,4),(8,4),(0,5),(8,3)。

(4)块状编码(Block Codes)。

块码是游程长度编码扩展到二维的情况,采用方形区域作为记录单元,每个记录单元包括相邻的若干栅格,数据结构由初始位置(行、列号)和半径,再加上记录单元的代码组成。

根据块状编码的原则,图像用22个单位正方形、6个4单位的正方形和2个9单位的正方形就能完整表示。具体编码如下:

(1,1,1,0),(1,2,2,4),(1,4,1,7),(1,5,1,7),(1,6,2,7),(1,8,1,7)。

(2,1,1,4),(2,4,1,4),(2,5,1,4),(2,8,1,7),(3,1,1,4),(3,2,1,4)。

(3,3,1,4),(3,4,1,4),(3,5,2,8),(3,7,2,7),(4,1,2,0),(4,3,1,4)。

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

(6,1,3,0),(6,6,3,8),(7,4,1,0),(7,5,1,8),(8,4,1,0),(8,5,1,0)。

(5)四叉树编码(Quad-tree Codes)。

四叉树将整个图像区逐步分解为一系列被单一类型区域内含的方形区域,最小的方形区域为一个栅格像元。分割原则是:将图像区域划分为4个大小相同的象限,而每个象限又可根据一定规则判断是否继续等分为次一层的4个象限。其终止判据是:不管是哪一层上的象限,只要划分到仅代表一种地物或符合既定要求的少数几种地物时,不再继续划分;否则,一直划分到单个栅格像元为止。四叉树通过树状结构记录这种划分,并通过这种四叉树状结构实现查询、修改、量算等操作。

四叉树编码又称为四分树、四元树编码。它是一种更有效地压缩数据的方法。它将2n×2n像元阵列连续进行4等分,一直分到正方形的大小正好与像元的大小相等为止,而块状结构则用四叉树描述,习惯上称为四叉树编码。

采用四叉树编码时,为了保证四又树分解能不断地进行下去,要求图像必须为2n×2n的栅格阵列,n为极限分割数,n+1为四叉树的最大高度或最大层数。

3.矢量数据结构

矢量结构是地理信息系统中最常见的图形数据结构,即通过记录坐标的方式尽可能精确地表示点、线、多边形等地理实体、坐标空间设为连续、允许任意位置、长度和面积的精确定义。事实上,其精度仅受数字化设备的精度和数值记录字长的限制,在一般情况下,比栅格结构精度要高得多。其坐标空间假定为连续空间,不必像栅格数据结构那样进行量化处理,因此,矢量数据能更精确地定义位置、长度和大小。实际上,受下列因素的影响,矢量数据也不可能绝对精确:表示坐标的计算机字长有限;所有矢量输出设备包括绘图仪在内,尽管分辨率比栅格设备高,但也有一定的步长;矢量法输入时,曲线上选取的点不可能太多;数字化仪分辨率有限;人工输图中不可避免的定位误差。

4.矢量数据压缩编码

(1)矢量数据编码的内容。

矢量数据结构通过记录空间对象的坐标及空间关系来表达空间对象的位置。其编码内容包括:

①点:空间的一个坐标点;

②线:多个点组成的弧段;

③多边形:不但要表示位置和属性,更重要的是能表达区域的拓扑特征,如形状、邻域和层次结构等,以便使这些基本的空间单元可以作为专题图的资料进行显示和操作。

(2)坐标序列法(Spaghetti方式)

在Spaghetti结构中,坐标表是与每一个基本的空间对象(点、线或多边形)相联系的。它不用拓扑属性,因而对地图的遍历需要查找所有的空间坐标。这对查询操作非常不便,但对显示非常方便。点、线和多边形都有各自的坐标表,相互之间并不相连。这种连接只有通过计算空间坐标才能确定。即使在一幅复杂程度中等的地图中,空间坐标也需占大量的存储空间,如分析一个点是否在某个多边形内,或确定两条线的交点等操作就非常费时。Spaghetti结构中,线和多边形都没有拓扑数据,多边形的公共边界是两个相邻多边形的公共部分,所以被定义了两次。

坐标序列法文件结构简单,易于实现以多边形为单位的运算和显示,能够顺次进行数字化绘置工作。这种方法的缺点是:

①多边形之间的公共边界被数字化和存储两次,由此产生冗余和碎屑多边形;

②每个多边形自成体系而缺少邻域信息,难以进行邻域处理,如消除某两个多边形之间的共同边界;

③岛只作为一个单个的图形建造,没有与外包多边形的联系;

④不易检查拓扑错误,如有无不完整的多边形等。这种方法可用于简单的粗精度制图系统中。

(3)树状索引编码法。

该方法采用树状索引以减少数据冗余并间接增加邻域信息,具体方法是对所有边界点进行数字化,将坐标对以顺序方式存储,由点索引与边界线号相联系,以线索引与各多边形相联系,形成树状索引结构。

树状索引结构消除了相邻多边形边界的数据冗余和不一致的问题,在简化过于复杂的边界线或合并多边形时可不必改造索引表,邻域信息和岛状信息可以通过对多边形文件的线索引处理得到,但是比较繁琐,因而给邻域函数运算、消除无用边、处理岛状信息以及检查拓扑关系等带来一定的困难,而且两个编码表都要以人工方式建立,工作量大且容易出错。

(4)双重独立式编码(DIME)。

这种数据结构最早是由美国人口统计局研制来进行人口普查分析和制图的,简称为DIME(Dual Independent Map Encoding)系统或双重独立式的地图编码法。它以城市街道为编码的主体。其特点是采用了拓扑编码结构。

DIME文件的基本元素是连接两个端点(结点)的一条线段(街段)、线段始结点和终结点标识符、伴有这两个结点的坐标及线段两侧的区域代码(左区号和右区号)。根据结点标识符和结点坐标建立结点坐标文件。根据结点、线段、多边形间的拓扑关系建立拓扑结构文件。在这种结构中,线段通常被认为是直线型的,复杂的曲线由一系列逼近曲线的直线段来表示。结点与结点或者面域与面域之间为邻接关系,而结点与线段或面域与线段之间为关联关系。

5.栅格结构与矢量结构的比较

栅格结构与矢量结构似乎是两种截然不同的空间数据结构,栅格结构属性明显、位置隐含,而矢量结构位置明显、属性隐含。由此可知,栅格结构和矢量结构都有各自的优点和局限性。

对于面状地物,矢量数据用点串序表达边界形状及分布。而在基于栅格的GIS中,一般用元子空间充填表达的方法将多边形内任一点都直接与某一个或某一类地物联系。显然,后者是一种数据直接表达目标的理想方式。对线状目标,以往人们仅用矢量方法表示。

事实上,如果将矢量方法表示的线状地物也用元子空间充填表达的话,就能将矢量和栅格的概念辩证统一起来,进而发展矢量栅格一体化的数据结构。假设在对一个线状目标数字化采集时,恰好在路径所经过的栅格内部获得了取样点,这样的取样数据就具有矢量和栅格双重性质。一方面,它保留了矢量的全部性质,以目标为单元直接聚集所有的位置信息,并能建立拓扑关系;另一方面,它建立了栅格与地物的关系,即路径上的任一点都直接与目标建立了联系。因此,可采用填满线状目标路径和充填面状目标空间的表达方法作为一体化数据结构的基础。

每个线状目标除记录原始取样点外,还记录路径所通过的栅格;每个面状地物除记录它的多边形周边以外,还包括中间的面域栅格。