空间数据输入则是图形的数字化处理过程。需要注意的是没有统一而简 单的方法来输入图形数据,只有一些普遍适用的方法供 GIS 用户选择使用。 用户可以用单一方法或几种方法结合起来输入他们需要的图形数据。选择输 入方法的依据是如何应用图形数据、图形数据类型、现有设备状况、现有人 力财力状况等。
一、手工数据输入方法
虽然手工数据输入方法是早期使用的地理信息系统定位的方法,但其基 本原理是明确的,手工输入矢量图形数据实际就是将表示点、线、面实体的 地理位置数据(各种坐标系中的坐标)通过键盘输入数据文件或输入到程序 中去。实体坐标可以用地图上的坐标网或其它格网覆盖在地图上量取,这是 最简单又不用任何特殊设备的图形数据输入法。手工输入栅格数据是将已知 格子内所观测到的优势特征值予以编码,随后将代码输入自动化文件。图 2-2 表示了一个文件的编码过程。图中表示二种主要的 GIS 数据模型输入形式的 特征。图 2-2(a)为原图,以及将已确定大小的透明方格纸覆盖在底图上, 然后将各方格内的特征值以编码的形式记录,结果便是图 2-2(b)的编码栅 格形式。
0
0
0
0
0 0 0 1 0
1
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0 0 0 1 0
0 0 0 1 0
0 0 2 2 0
1
1
0
1
0
0
0
0
0
0
1
1
2
2 2 0 0 0
0
0
0
0
0
0
2
0 0 0 0 0
0
0
0
(b)栅格编码
0=没有水体
1=水体
2=河流
图 2-2 栅格编码方法
二、手扶跟踪数字化仪
人工数字化技术包括利用称为数字化器的电码静电装置。数字化器将点 定位器的信号转换为电子识别位置,用以直接读入计算机。数字化器能够记 录每个点、线和多边形的位置,形成数据文件。应用数字化仪输入速度快, 精度高,各种商业化的 GIS 软件均能用数字化仪来输入数据。
数字化仪主要由二部分所组成:绘图板和定点装置。绘图板的工作区是
一个垂直的区域,在该区域内能接受由定点装置所传送的信息。按工作区的 大小一般可以分为二类 6 种尺寸,格式如表 2-2 所示。
表 2-2 数字化仪类型
类别 工作区范围
A4 12 ″× 12 ″( 305mm × 305mm )
小型 A3
A2
A1
大型 A0
12 ″× 18 ″( 305mm × 407mm )
18 ″× 24 ″( 457mm × 610mm )
24 ″× 36 ″( 610mm × 914mm )
36 ″× 48 ″( 914mm × 1219mm )
A00 44 ″× 60 ″( 1118mm × 1524mm )
需要指出的是,在数字化过程中,虽然在工作区内均是有效的,但其边
缘部分的精度会有所降低,除非在必不可少的情况,应尽量避免用“足”工 作区,以提高精度和避免图幅拼接时的修订工作量。
定点装置主要有笔式和光标式二种类型。常用的光标式定点装置是带有 聚焦和十字丝的鼠标器,十字丝的定点指示需要数字化的点。鼠标器有 4 键
及 16 键,每一个键的功能可通过软件应用来定义,4 键光标分按线状排列和
方块形排列二种,16 键为十六进制的形式,即 0—9 和 A—F,其用法与 4 键 光标相类似。
在进行数字化时,首先要确定地图坐标系统、比例尺和表明参考坐标控 制点的位置(左,右,下),然后用户可在点、线、多边形的定义下,利用 平板上的 4 键或 16 键光标进行数字化。
三、自动扫描器
扫描数字化系统一般比数字化仪大和昂贵,常用的滚筒式自动光学扫描 器的主体为一个可旋转的滚筒,需要数字化的底图固定在滚筒上,当滚筒旋 转时,以类似行车形式固定在滚筒上的光源和监测器来回走动,将底图以数 字化的形式一行一行的直接输入到计算机内(图 2-3)。一般的扫描器能识
别 100 种以上的不同形式的图斑,并能对不同数据结构进行转换和数据压缩 处理(如游程编码)。描述一幅 24×36 英寸(1 英寸=25.4mm)的底图,每 厘米 20 行一般需要用一个半小时。
§3.空间数据编辑处理
一、格式转换
格式转换分为二大类:不同数据介质之间的转换,即它是将各种不同的 源材料信息如地图、照片、各种文字及表格转换为计算机兼容的格式,这在 上一节中已经说明;第二类是数据结构间的转换。而数据结构间的转换又包 括同一数据结构不同组织形式间的转换和不同数据结构间的转换。
对于栅格结构,如果栅格 GIS 数据库要记录高程、降水和土地利用类型 三种信息(图 2-4),其数据的组织形式可以是不同的。第一种组织形式可 以是每一层次记录一种数据集,即每一个文件记录包含不同的要素变量,每 一个文件中的每一栅格单元记录一个数字;第二种组织形式可以是每一个单 元内顺序记录不同的要素;第三种组织形式可以是以行的形式按顺序记录各 要素的数据。当同时要使用二种及二种以上组织形式的数据时,便要将其转 换为对当前工作适用的统一的格式。
对于矢量结构,也有弧、节点组织形式、全多边形组织形式等之间的转 换。
矢量和栅格结构之间的转换是地理信息系统中的一个重要问题,这将在
下一章中详细说明。
二、图形单元的修改与增删
无论是采用任何方式输入数据,都会出现误差,因此在任何信息系统中, 均要具有检查数据库误差的设备。
如对多边形进行数字化,可能出现的误差有多边形不闭合,相邻多边形 出现重叠和裂口等(图 2-5)。造成多边形不闭合的原因可能是输入错误的 代码,如将多边形物体定义为弧段,也可能是数字化时引起的误差如忽略了
点与点之间的连结。 当相邻的多边形的共同边界要数字化二次时,便会出现重叠和裂口,这
便要在数字化以后进行修正和编辑,目前一些地理信息系统软件采用弧结点 数据库结构时便能避免这类错误,因为这种结构形式公共点和线只记录一 次,如 ARC/INFO 地理信息系统。
三、图幅拼接
当对底图进行数字化或扫描后,由于图幅比较大或采用小型数字化仪 时,难以将研究区域的底图以整幅的形式来完成,如上海市区 1∶25000 的地 图便有九幅 1/2 开大的地图,即便采用上述最大号的 A00 幅面(1118mm×
1524mm)的数字化仪也不能完成整幅输入,在分幅输入完成并经过误差检查 和编辑后虽然对每一分幅图来说错误订正是完成了,当在二幅图进行拼接时 一般仍然会出现边缘不匹配的情况,如图 2-6 所示。因此便要进行图幅数据 边缘匹配处理,一般可采用二种方法来调整边界,第一种方法是小心地修改 空间数据库中点和矢量的坐标,以维护数据库的连续性;第二种方法是先对 准两幅图的一条边缘线,然后再小心地调整其它线段使其取得连续。目前各 种商业化的 GIS 软件均有图幅拼接的功能,拼接技术各有不同。
为了能便于相邻图幅的识别及计算机处理,在对图幅进行编号时可用十 位数来指示图幅的横向顺序而以个位数来表示图幅的纵向顺序(表 2-3)。
表 2-3 图幅编号方法
31
32
33
21
22
23
11
12
13
四、坐标转换
地球是一个近似的椭球体,用平面形状来表示地球表面其真实的形状便 会出现差异。有大量地图投影的方法,也有各种分类方法,如可将地图投影 分为方位角投影、圆锥投影和圆柱投影。最常用的是平面参考系统,其中又 以全球变换墨卡托系统最为著名,在这个系统中每 6 度经度,8 度纬度组成 一个四边形,每一四边形均被标号。有关地图投影的知识读者可参阅有关地
图学的参考书。 在地理信息系统中要对各不同投影进行坐标转换的原因是多方面的,最
常见的情况有二种:一种是输入的地图是一种投影,而要求输出的地图产物 是另一种投影;另一种是输入的底图是照片底图,而输出则要按一定比例的 矢量方式。一般来说可通过原始影像坐标和订正后坐标之间的数字坐标转换 未完成订正处理,计算两者相应坐标回归方程的多项式方法最为常用,其表 达式为:
Lo=h+by+cx+dy2+eyx+fx2
La=g+hy+ix+jy2+kyx+lx2
式中:Lo:经度;La:纬度:h 和 g 为截距;b-f 和 h-l 为回归方程的系数。
这一多项式计算可由地理信息系统自身来完成,也可以用统计软件计算 后输入 x,y 数据。目前一些地理信息系统软件均有多种地图投影输入变换与 输出变换的功能。
五、拓扑结构及拓扑关系的自动生成
在矢量结构表示方法中,任何地理实体均可以用点、线、面来表示其特 征,进而可根据各特征间的空间关系,解译出更多的信息,为此可用确定区 域定义、连通性和邻接性的方法来达到上述目的。其特点是弧段用点的连接 来定义,多边形用点及弧段的连接来定义,这样相邻多边形的公共边不必要 重复输入,且通过邻接性的关系,能识别出各地理信息实体的相对位置,从 而解译出多种信息。
拓扑结构是明确这些空间关系的一种数据方法,也就是用来表示要素之
间连通性或相邻性的关系称为拓扑结构。
美国环境系统研究所开发的 ARC/INFO 地理信息系统良好地建立了拓扑 结构及其在地理信息系统中的应用。由中科院地理所资源与环境信息系统实 验室翻译的 ARC/INFO 地理信息系统用户指南比较详细地介绍了拓扑结构的 建立。以下是该指南对区域定义、连通性和邻接性的介绍:
1.用拓扑结构定义区域:多边形可用一组封闭的线来定义,而不用列出
封闭线上的所有点的坐标。考虑下面的例子,如图 2-7。
图中的阴影区是由一组线定义的。即线 1,3,4,5 加上由线 2 定义的多 边形弧岛。多边形的定义是一组线,并作为一个简单的表存储在计算机中。 注意,这些定义了一个封闭区的线是有序排列的,接着排列的是组成弧 岛的线。洞(即弧岛)是由一条或多条线组成的,一个多边形可能包括许多
洞。
如下图所示,阴影区可通过定义该区的一组线存储在计算机中,而这些 线又可作为定义每条线的坐标的指针。
注意,这种结构的优点是,对于每条线来说,只需列出一次的坐标,这 不同于那种用封闭线上的坐标来定义每个多边形的方法,从而大大减少了所 需要的存储空间。其次,这种结构还克服了定义多边形的坐标数量受到限制 的缺点。
这种拓扑数据结构通常被称为弧段一节点。每条线被称为一个弧段,每 个节点被认为是弧段相交的位置。
2.邻接性的表示:另一种可以用拓扑描述的空间关系是邻接性,即确定 多边形相互之间的邻接关系。邻接性对于许多应用来说都是非常重要的。例 如,野生动物学家可能想确定一块与琥珀相邻的土地覆盖区,用于对栖息环 境做出评价;城市规划人员可能要在两个相邻地区之间确定一下潜在的地区 冲突,例如,寻找与新发展的居民区相邻的工业区。
图 2-8 多边形邻接性的表示相邻的多边形可用它们公用的一组弧段来 定义,每个弧段的左右两侧可用于对多边形进行判别。例如,在图 2-8 中, 弧段 4 的一侧是多边形 2,而另一侧则是多边形 6。
每段弧的坐标列表确定了弧段的方向,如图中箭头所示。 利用这种显示的方向表示法,可以明确指出位于左侧右侧的多边形。对
于所有弧段的相邻区,可按照其结构列表。
3.连通性的表示:连通性的拓扑关系与邻接性相似。连通性指的是对弧
段连接的判别。这种关系对于路径搜寻以及其它网络应用,如最佳路径计算 和全部网络流程分析都是非常重要的。
连通性可以用在每个节点上汇集弧段的列表来表示,如图 2-9 所示。 在节点 2 上汇集了三个弧段,即弧段 1,4 和 10。每个弧段的起点和终
点都是节点。对于每个节点都可以列出它的起始节点和终止节点。例如,在
弧段坐标的列表中,如 x1,y1;x2,y2;x3,y3;?;x10,x10,在这个列表
中第一节点和最后一个节点都是标有序号的节点。如果在另一条弧段上具有 与上面节点之一相同的 x,y 坐标,则该弧段上的那个节点将具有相同的节点 序号。在图 2-9 中,弧段 4 的起始节点为 2,终止节点为 3,另外还有三条弧 段汇集在节点 3 上。
图 2-10 给出了图上所有弧段的节点列表:
注意,这些连通性可通过网络确定路径,例如如同选择一条行车路线, 从城市的一个地方到达另一个地方去一样。当你到达一个交叉路口时,有好 几个方向可以选择,这就如同在每一节点上有许多弧段汇集在该节点上一 样。
弧段一节点拓扑还有其它重要性质。例如,每个弧段的起始节点与终止 节点表示了弧段的方向,这样使得判别每一弧段的左侧和右侧更加容易。另 外,起始节点是每个弧段的起始坐标,终止节点是每个弧段的终止坐标。这 就是说,节点坐标不需要在两个地方存储:一次是作为弧段坐标,另一次是 作为节点坐标。
第三章 地理信息系统空间数据结构
地理信息系统管理大量的地学数据,这些数据存在数据库中,因此需要 有数据库管理系统。
在地理系统中,描述地理要素和地理现象的空间数据,主要包括空间位 置、拓扑关系和属性三个方面的内容。地理信息系统空间数据结构就是指这 种空间数据在系统内的组织和编码形式。GIS 数据结构也可称为图形数据格 式,它是指适合于计算机系统存储、管理和处理地理图形的逻辑结构,是地 理实体的空间排列方式和相互关系的抽象描述,是对数据的一种理解和解 释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序 也无法正确处理。对同样一组数据,按不同的数据结构去处理,得到的是截 然不同的内容。只有充分理解了地理信息系统的特定的数据结构,才能正确 有效地使用系统。
空间数据编码是空间数据结构的实现,是指根据地理信息系统的目的和 任务所搜集的,并经过审核了的地形图、专题地图和遥感影像等资料,按一 定数据结构转换为适于计算机存储和处理的数据过程。由于地理信息系统数 据量极大,一般需要采用压缩数据编码方式以节省空间。图形资料的编码一 般需借助数字化仪进行。
§1.GIS 数据库
一、GIS 数据库特点
数据库(Data Base)是以一定的组织方式存储在一起的相互关联的数据 集合,能以最佳方式,最少重复(冗余)为多种目的服务。数据库也可看成 是与某方面有关的所有文件的集合,数据库对数据文件重新组织,最大限度 地减少数据冗余,增强数据间的联系,实现对数据的合理组织和灵活存取。 GIS 数据库是某区域内关于一定地理要素特征的数据集合,主要涉及对
图形和属性数据的管理和组织。它与一般数据库相比,具有以下特点:
1.GIS 数据库不仅有与一般数据库数据性质相似的地理要素的属性数 据,还有大量的空间数据,即描述地理要素空间分布位置的数据,并且这两 种数据之间具有不可分割的联系。
2.地理系统是一个复杂的巨系统,要用数据来描述各种地理要素,尤其 是地理的空间位置数据量往往大得惊人,即使是一个极小区域的数据库也是 如此。
3.数据的应用相当广,如地理研究、环境保护、土地利用与规划、资源
开发、生态环境、市政管理、道路建设等等。 上述特点,尤其是第一点,决定了建立 GIS 数据库时,一方面应该遵循
和应用通用的数据库的原理和方法,另一方面还必须采取一些特殊的技术和
方法,来解决其它数据库所没有的管理空间数据的问题。由于 GIS 数据库具 有明显的空间特性,所以有人又称它为空间数据库。
二、数据库结构
数据库由许多文件和文件中的大量数据组成。为便于从一个文件或多个 文件中存取数据,必须用某种方式来构造或组织数据库。目前通用的有三种 数据库结构,即层次结构、网络结构和关系结构。
(一)层次数据库结构
层次数据库结构是将数据组成一对多(或父结点与子结点)关系的结构
(图 3-1(e))。例如,土壤族下属的土类、类下的亚类就是常见的分级结 构之一。环境科学中多用这种数据组织系统,除土壤外还用于动物、植物、 岩石等分类。
层次结构采用关键字来访问其中每一层次的每个部分,并假定关键属性 和数据项之间可能具有紧密的相关性。
关键字是指识别标志,如记录序号、数据项名称和其它属性等。 层次数据库结构的优点是存取方便且速度快,容易理解,数据修改和数
据库扩展都较容易,检索关键属性十分方便等。层次结构最适合于文献目录、 银行等管理系统。
层次结构用于环境数据时则有如下不足之处:结构呆板,没有灵活性, 且不得不保留大量的索引文件,同样一个属性数据要存储多次,因而引起大 量冗余数据(图 3-1(e))。
(二)网络数据库结构
层次数据库结构中数据的联结只限于上下通路。许多情况下,特别是图 形数据的数据库结构要求具有更多的通路,以便更为快速地把需要的数据组 织起来。例如,一个复杂的图形中,各图形要素(甚至相邻接的要素),常 常存储在数据库的不同部分,要把这些元素组织在一起,需要进行多通路连 接,才能迅速形成图形。网络数据库结构满足这种要求。
网络数据库结构是用连接指令或指针来确定数据间的显式连接关系,且 具有多对多类型的数据组织方法。
图 3-1(a)是一幅包括两个多边形的地图,两个多边形由 a,b,?,g 七条线组成,其中 c 同属多边形Ⅰ和Ⅱ;每一条线由起止两对 x,y 坐标定义。 反言之,每一坐标对都属于两条不同线。很显然,用层次结构来存储时,就 会引起许多冗余,因为每一坐标值都必须存储两次,点 3 和点 4 要存储 4 次
(图 3-1(a))。在需把多边形Ⅰ和Ⅱ合并时,线 a 成为多余的线,但又无 法去掉。网络结构就可避免这种情况;图 3-1(c)中每一条线及每一坐标对 都只出现一次,要去掉 c 也是很容易的事。这一特点为制图综合提供了很大 益处。
图 3-1(d)表示环形指针之一,这种环形指针在复杂的拓扑结构中是 非常有用的方法,它能明确而方便地指出拓扑关系。另外,如果数据间的关 系及其连接方式都可预先指定的话,网络数据库的结构最为实用,既避免了 数据冗余又便于使用。
网络数据结构的缺点是:指针数据项使数据量增大,当数据复杂时,指
针部分会占大量数据库存储空间。另外,数据库中的数据变化(或修改)时, 指针也必须随着变化。因此网络数据库中指针的建立和维护可能成为相当大 的额外负担。
(三)关系数据库结构
关系数据库以记录组(或数据表)的形式组织数据,以便于利用各种实 体(图形)与属性之间的关系进行数据存取和变换,不分层也无指针。
就地理科学来说,分析研究工作离不开空间(主要指图形)数据和非空
间(主要指属性)数据。关系数据库则以建立这两类数据之间的关系为主要 目标来组织数据。点、线、面图形数据的记录中都包含一个有序特征值,此 特征值也可成为关键字,其后存储其它信息。整个记录称为一个“元组”, 多个元组组成一张二维表,称为“关系”。每个关系通常是一个独立的文件。
图 3-2 是图 3-1 两个多边形的图形数据在关系数据库中的存储方式。其中多
边形Ⅰ和Ⅱ是特征值(关键字)。另一个存储坐标的表格图中未绘出。
属性数据如线α,b,?,g 有关的属性和与多边形Ⅰ、Ⅱ有关的属性则 存储在另外的数据表中。属性数据项可以很多,例如,线属性可包括线性质
(道路还是水渠等)、宽度、建筑材料、使用情况等,视需要而定。点和面
的属性以同样方式组织。图形和属性数据表中的关键字还必须同时存储在另 一个独立的关系表中。关系数据库主要依靠这个关系表把图形和属性连接在 一起。
从关系数据库中提取数据时,用户要用询问语言编写一个简单的程序称
为“过程”。在这个过程中,用户按自己的需要定义数据间的关系,数据库 管理程序则用关系代数法取出用户需要的数据,重新建立数据表。
关系数据库的最大优点是它的结构特别灵活,可满足所有布尔逻辑运算
和数字运算规则形成的询问要求。关系数据库还能搜索、组合和比较不同类 型的数据;加入和删除数据都非常方便,因为这一活动只涉及单个元组。
关系数据库的缺点是许多操作都要求在文件中顺序查找满足特定关系的
数据。如果数据库很大的话,这一查找过程要花很多时间。商业性的关系数 据库必须非常精心地设计才能达到一定的速度,这是关系数据库的主要技术 指标,也是建立关系数据库花费高的主要原因。
三、数据库管理系统
数据库管理系统(DBMS)是处理数据库存储和各种管理控制的软件。它 是数据库系统的中心枢纽,与各部分有密切的联系,应用程序对数据库的操 作全部通过 DBMS 进行。
数据库管理系统的功能因不同系统而有所差异,但一般都具有数据库定 义、数据库管理、数据库维护、数据库通讯等功能。
为了实现上述功能,每一项工作都有相应的程序,所以数据库管理系统 实际上是许多系统程序组成的一个整体。它大体上可分成三大组成部分:
1.语言处理程序:包括完成数据库定义、操作等功能的程序,主要有: 数据描述语言(DDL)编译程序、数据操作语言(DML)的处理程序、终端命 令解释程序和主语言的预编译程序等。
2.系统运行控制程序:主要系统控制程序、数据存取程序、数据更新程 序、并发控制程序、保密控制程序、数据完整性控制程序等。
3.建立和维护程序:包括数据装入程序、性能监督程序、工作日志程序、 重新组织程序、转储程序和系统恢复程序等。
用户通过 DBMS 存取记录的过程,一般要经过以下主要步骤(图 3-3):
(1)应用程序向 DBMS 发出读取记录的命令;
(2)DBMS 查找出应用程序所有的外部模式;
(3)DBMS 找出模式;
(4)DBMS 查阅存储模式;
(5)DBMS 向操作系统(OS)发出读取记录的命令;
(6)操作系统应用 I/O 程序,把记录送入系统缓冲区;
(7)DBMS 从系统缓冲区中导出应用程序所需记录,并送入应用程序工 作区;
(8)DBMS 向应用程序报告操作状态信息,如“执行成功”、“数据未 找到”等。
建立和维护数据库是一项十分复杂繁重的工作,需要若干人参加才能完 成。数据库管理员必须了解用户要求,决定数据库的信息内容,充当数据库 系统的联络员,决定存储结构和访问策略、系统的保护策略以及监督系统工 作。
数据库理论是地理信息系统的理论基础,尽管目前流行的通用数据库管
理系统在空间实体的定义、描述和检索运算上存在很大不足,完全采用通用
的 DBMS 建立地理信息系统远非理想。但是由于 DBMS 在数据定义、结构扩充、 数据更新和检索运算(特别是逻辑运算)上效率高、通用性强。因此现阶段 仍倾向于采用 DBMS 管理属性数据,也就是扩充目前通用 DBMS 以作为 GIS 的 支持系统,与此同时,更适合于 GIS 需要的空间型数据库管理系统也正在积 极发展之中。
§2.地理数据的显式和隐式表示
人们靠自己的眼睛能高效率地识别形状和形式,但计算机却不能。要使 计算机能识别地理事物的形状,就必须精确地指出空间模式如何处理,如何 显示等。在计算机内描述空间实体有两种形式:显式描述和隐式描述。例如 一把椅子,在计算机中的显式表示,就是栅格中的一系列像元(点),如图
3-4 所示,为使计算机认识这些像元描述的是椅子而不是其它物体,这些像 元都给予相同编码值“c”,其实,值“c”不一定用 c 的形式,而可以用颜 色、符号、数字、灰度值来显示,于是得到椅子的简单数据结构为:
椅子的属性→符号/颜色→像元 x
椅子的隐式表示是由一系列定义了始点和终点的线及某种连接关系来描 述,线的始点和终点坐标定义为一条表示椅子形式的矢量,线之间的指示字, 告诉计算机怎样把这些矢量连接在一起形成椅子(图 3-4(b)),隐式表 示的数据为:
椅子的属性→一系列矢量→连接关系 又如,有一幅具有森林、河流、住房的地图也可用相互对照而又互补的
方式来表示空间数据,即用直观和隐含的方式来描述空间实体,见图 3-5。 直观表示是用栅格或网络中一组点来构成地理事物的形态,这里不同的地理 事物被赋予不同的代码值“R”、“P”、“S”、“H”,当然,也可以用数 字、颜色或其它符号表示。在栅格格式中,空间被规则地分为一个个小块(通 常为正方形)。地理事物由占据小块的横排与竖列的位置决定,空间单位就 是这些小块,小块的位置则由其横排竖列的数码决定。栅格编码后的全图是 规则的阵列,与遥感图像数据相同,因而数字遥感影像就是栅格编码。
隐含表示则利用一组线及它们的各种连接方式来表示森林、河流、住房
的形态。
图 3-4、图 3-5 还表示出两种表示方法的区别:①隐式(矢量)表示 法用于存储地理事物的数据量较少,即需要的存储空间少(矢量表示的 x,y 坐标和连接指示字较少而栅格表示需要的像元较多);②矢量法比栅格法(显 式)要精美得多。栅格法要达到相同的分辨率,格网要非常小才行,这就需 要更多的像元即更多对 x,y 坐标;③矢量法中的连接信息使数据搜索能沿着 一定的方向进行。栅格法则能方便地改变地理事物的形状和大小,因为栅格 数据修改只包括清除某些旧值和输入新值两个步骤。而矢量数据的修改除改 变坐标值外,还需要重建连接关系(指示字)。
由此例可以看出,至少有两种方法可用来表示拓扑数据,即: 栅格法:一系列 x,y 坐标定位的像元,每个像元独立编码,并载有属性
值。
矢量法:三种主要地理实体的点、线、面中,点类似于像元,但点不占 有面积,其余两种均由一系列内部相关联的坐标形成,一定的面或线则能与 一定的属性连接。
§3.栅格数据结构
一、栅格数据的概念
如上所述,栅格数据结构实际就是像元阵列,每个像元由行列确定它的 位置。如图 3-5 中的 H 值表示属性或编码为 H 的一个点,其位置由所在的第 六行,第九列作交叉而得到。由于栅格结构是按一定的规则排列的,所表示 的实体位置很容易隐含在网络文件的存储结构中。在后面讲述栅格结构编码 时可以看到每个存储单元的行列位置可方便地根据其在文件中的记录位置得 到,且行列坐标可以很容易地转为其它坐标系下的坐标。在网络文件中每个 代码本身明确地代表了实体的属性或属性的编码。点实体在栅格数据中表示 为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实 体由聚集在一起的相邻像元结合表示。这种数据结构很适合计算机处理,因 为行列像元阵列非常容易存储、维护和显示。
用栅格数据表示的地表是不连续的,是量化和近似离散的数据,这就意 味着地表一定面积内(像元地面分辨率范围内)地理数据的近似性,例如平 均值、主成分值或按某种规则在像元内提取的值等。另一方面,栅格数据的 比例尺就是栅格大小与地表相应单元大小之比。像元大小相对于所表示的面 积较大时,对长度、面积等的度量有较大影响。这种影响除对像元的取舍外, 还与计算长度、面积的方法有关。如图 3-6(a)中 a 点与 c 点之间的距离
是 5 个单位,但在图 3-6(b)中,ac 之间的距离可能是 7,也可能是 4,取
决于算法。如以像元边线计算则为 7,以像元为单位计算则为4。同样,图 3
-6(a)中三角形的面积为 6 个平方单位,而图 3-6(b)中则为 7 个平方 单位,这种误差随像元的增大而增加。
二、栅格数据的取值方法
栅格数据的取得,可在专题地图上均匀地划分网格(相当于将一透明方 格纸覆盖在地图上),每一单位格子覆盖部分的属性数据便成为图中各点的 值,最后形成栅格数字地图文件如图 3-7 所示。也可以用数字化仪跟踪,得 到矢量结构数据后再转换为网格结构,或用扫描数字化方法,逐步扫描专题 地图,将扫描数据重采样和再编码得到栅格数据文件。
栅格数据的获取需尽可能保持原图或原始数据的精度。在决定代码时尽 可能保持地表的真实性,保证最大的信息容量。在图 3-8 中的网格覆盖后, 常常会在同一格子下对应了几种不同的属性值,而每一个单元只能取一个 值,在这种情况下,有不同的取值方法:
中心点法:用处于栅格中心处的地物类型或现象特性决定栅格代码。为 了寻找中心的方便,覆盖使用的网格常常使交点与网格单元的中心对准,这 时读数据只考虑网格交点所对应地图上的值,因此中心点法也可以叫做“网 格交点归属法”。如图 3-8A 成为:
1
1
2
2
2
1
1
2
3
3
3
3
3
3
3
此法常用于具有连续分布特性的地理要素,如降雨量分布、人口密度图
等。
面积占优法:以占栅格最大的地物类型或现象特征决定栅格单元的代 码。如图 3-8B 用这种取值方法得到:
1
1
2
2
2
1
1
1
3
3
3
3
3
3
3
面积占优法最适合分类较细、地物类别斑块较小的情况。 长度最占优法:当覆盖的格网过中心部位时,横线占据该格中的大部分
长度的属性值定为该栅格单元的代码。如图 3-8C 格网线覆盖时,格网横线
放在行中心线上,格网竖线不变,此图为:
1
1
2
2
2
1
1
1
3
3
3
3
3
3
3
重要性法:根据栅格内不同地物的重要性,选取最重要的地物类型决定 相应的栅格单元代码。这种方法对于特别重要的地理实体,其所在区域尽管 面积很小或不在中心,也采取保留的原则,如稀有金属矿产区域等,因此图
3-8B 便成为:
1
1
2
2
2
1
1
3
3
3
3
3
3
4
3
重要性法常用于具有特殊意义而面积较小的地理要素,特别是具有点、 线状分布的地理要素,如城镇、交通枢纽、河流水系等。
为了逼近原图或原始数据精度,除了采用上述几种取值方法外,还可以 采用缩小单个栅格单元的面积,即增加栅格单元总数的方法,这样行列数也 相应增加,每个栅格单元可代表更为精细的地面矩形单元,混合单元减少, 可以大大提高量算的精度,更接近真实形态,表现更细小的地物类型。然而
增加栅格个数、提高精度的同时也带来了一个严重的问题,那就是数据量的 大幅度增加,数据冗余严重。为了解决这一矛盾,现已发展了一系列栅格数 据压缩编码方法,如键码、游程长度编码、块码和四分树编码等。其目的, 就是尽可能少的数据量记录尽可能多的信息,其类型又有信息无损编码和信 息有损编码之分。信息无损编码是指编码过程中没有任何信息损失,通过解 码操作可以完全恢复原来的信息;信息有损编码是指为了提高编码效率,最 大限度地压缩数据,在压缩过程中损失一部分相对不太重要的信息,解码时 这部分难以恢复。在地理信息系统中多采用信息无损编码,而对原始遥感影 像进行压缩编码时,有时也采取有损型的压缩编码方法。
三、减少栅格数据存储量的编码方法
直接栅格编码是最简单、最直观而又非常重要的一种栅格结构编码方 法,通常称这种编码的图像文件为网络文件或栅格文件。直接编码就是将栅 格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左 到右逐像元记录,也可奇数行从左到右,而偶数行由右向左记录,为了特定 目的还可采用其它特殊的顺序。栅格结构不论采用何种压缩方法,其逻辑原 型都是直接编码的网格文件。
当每个像元都有唯一一个属性值时,一层内的编码就需要 m 行×n 列×3
(x,y 和属性编码值)个存储单元。数字地面模型就属此种情况。如果一个 多边形(或制图单元)内的每个像元都具有相同的属性值,就有可能大大节 省栅格数据的存储需要量,关键是恰当地设计数据结构和编码方法。
(一)链式编码(Chain Codes)
链式编码又称为弗里曼链码(Freeman,1961)或边界链码。考虑图 3-
9 中的多边形。该多边形的边界可表示为:由某一原点开始并按某些基本方 向确定的单位矢量链。基本方向可定义为:东=0,东南=1,南=2,西南=
3,西=4,西北=5,北=6,东北=7 等八个基本方向。如果再确定原点为
像元(10,1),则该多边形边界按顺时针方向的链式编码为:
10,1,7,0,1,0,7,1,7,0,0,2,3,2,2,1,0,7,0,0,0,
0,2,4,3,4,4,3,4,4,5,4,5,4,5,4,5,4,6,6。其中前两个 数字 10 和 1 表示起点为第十行第一列,从第三个数字开始每个数字表示单位 矢量的方向,八个方向以 0—7 的整数代表。
链式编码对多边形的表示具有很强的数据压缩能力,且具有一定的运算
功能,如面积和周长计算等,探测边界急弯和凹进部分等都比较容易,比较 适于存储图形数据。缺点是对叠置运算如组合、相交等则很难实施,对局部 修改将改变整体结构,效率较低,而且由于链码以每个区域为单位存储边界, 相邻区域的边界则被重复存储而产生冗余。
(二)游程长度编码(Run-Length Codes)
游程长度编码是按行的顺序存储多边形内的各个像元的列号,即在某行 上从左至右存储属该多边形的始末像元的列号。图 3-9 中多边形按游程长度 编码方法的编码为:
第 9 行 2,36,68,10 第 10 行 1,10
第 11 行 1,9
第 12 行 1,9
第 13 行 3,912,16 第 14 行 5,16
第 15 行 7,14 第 16 行 9,11
在这个例子中,69 个像元的多边形只用 22 个编码值就完整地表示出来 了,因而大大减少了存储量。
显然,游程编码在对“多对一”的结构,即许多像元同属一个地理属性 值的情况下大大改善了传统编法的存储情况。游程长度编码栅格加密时,数 据量没有明显增加,压缩效率较高,且易于检索、叠加、合并等操作。这种 编码方法最适合于小型计算机,同时也减少了栅格数据库的数据输入量,但 计算期间的处理和制图输出处理工作量都有所增加。
(三)块式编码(Block Codes)
块式编码是将游程长度编码扩大到二维的情况,把多边形范围划分成由 像元组成的正方形,然后对各个正方形进行编码。图 3-10 说明如何对图 3
-9 所示多边形进行分块和编码。
块式编码的数据结构由初始位置(行号,列号)和半径,再加上记录单 元的代码组成。根据这一编码原则,上述多边形只需 17 个单位正方形。9 个
4 单位的正方形和 1 个 16 单位的正方形就能完整表示。如果该区域是一片森
林,用代码 4 表示,则图 3-7 的块式编码为:
(9,2,1,4),(9,3,1,4),(9,6,1,4),(9,8,1,4),
(9,9,2,4)
(10,1,1,4),(10,2,1,4),(10,3,4,4),(10,7,2,
4),(11,1,2,4)
(11,9,1,4),(12,7,2,4),(12,9,1,4),(13,9,1,
4),(13,12,1,4)
(13,13,1,4),(13,14,1,4),(13,15,2,4),(14,5,
1,4),(14,6,1,4)
(14,7,2,4),(14,9,2,4),(14,11,2,4),(14,13,2,
4),(16,9,1,4)
(16,10,1,4),(16,11,1,4) 一个多边形所能包含的正方形越大,多边形的边界越简单,块式编码的
效果越好。游程和块式编码都对大而简单的多边形更有效,而对那些碎部较 多的复杂多边形效果并不好。块码在合并、插入、检查延伸性、计算面积等 操作时有明显的优越性。然而对某些运算不适应,必须再转换成简单数据形 式才能顺利进行。
(四)四叉树编码(Quadtree Encoding)
四叉树编码又称为四分树、四元树编码。它是一种更有效地压编数据的 方法。它将 2n×2n 像元阵列的区域,逐步分解为包含单一类型的方形区域,
最小的方形区域为一个栅格像元。图像区域划分的原则是将区域分为大小相
同的象限,而每一个象限又可根据一定规则判断是否继续等分为次一层的四 个象限。其终止判据是,不管是哪一层上的象限,只要划分到仅代表一种地 物或符合既定要求的几种地物时,则不再继续划分否则一直分到单个栅格像
元为止。这种分块过程示于图 3-11。而块状结构则用四叉树来描述,习惯 上称为四叉树编码(如图 3-12)。
所谓四叉树结构,即把整个 2n×2n像元组成的阵列当作树的根结点,n 为极限分割次数,n+1 为四分树的最大高度或最大层数。每个结点有分别代 表西北、东北、西南、东南四个象限的四个分支。四个分支中要么是树叶, 要么是树叉。树叉、树叶用方框表示,它说明该四分之一范围全属多边形范 围(黑色)或全不属多边形范围(空心四方块),因此不再划分这些分枝; 树用圆圈表示,它说明该四分之一范围内,部分在多边形内,另一部分在多 边形外,因而继续划分,直到变成树叶为止。
为了在计算机中既能以最小的冗余存储与图像对应的四叉树,又能方便 地完成各种图形操作,专家们已提出多种编码方式。下面介绍美国马里兰大 学地理信息系统中采用的编码方式。该方法记录每个终点(或叶子结点)的 地址和值,值就是子区的代码,其中地址包括两个部分,共占有 32 位(二进 制),最右边四位记录该叶子结点的深度,即处于四叉树的第几层上,有了 深度可以推知子区的大小;地址由从根结点到该叶子结点的路径表示。0,1,
2,3 分别表示 NW、NE、SW、SE,从右边第五位开始 2n 字节记录这些方向。
如图 3-9 第 10 个结点深度为 4,第一层处于 SW 象限记为 1,第四层处于象
限 SE,记为 3,表示为二进制为:
20 位 8 位 4 位
0000?00100001110100 每层象限位置由二位二进制表示,共八位。上述二进制换算成十进制整
数为 2164。这样,记录了各个叶子的地址,再记上相应的代码值,就记录了
整个图像,并可在此编码的基础上进行多种图像操作。 四叉树编码有许多优点:①容易而有效地计算多边形的数量特征。②阵
列各部分的分辨率是可变的,边界复杂部分四叉树较高,即分级多,分辨率
也高,而不需表示的细节部分则分级少,分辨率低。因而既可精确表示图形 结构,又可减少存储量。③栅格到四叉树及四叉树到简单栅格结构的转换比 其它压缩方法容易。④多边形中嵌套不同类型小多边形的表示较方便。
四叉树编码的最大缺点是,树状表示的变换不具有稳定性,相同形状和
大小的多边形可能得出不同四叉树结构,故不利于形状分析和模式识别。但 因它允许多边形中嵌套多边形,即所谓“洞”的结构存在,使越来越多的地 理信息系统工作者对四叉树结构很感兴趣。上述这些压缩数据的方法应视图 形的复杂情况合理选用,同时应在系统中备用相应的程序。另外,用户的分 析目的和分析方法也决定着压缩方法的选取。
§4.矢量数据结构
矢量数据结构是另一种最常见的图形数据结构,即通过记录坐标的方 式,尽可能地将点、线、面地理实体表现得精确无误。其坐标空间假定为连 续空间,不必象栅格数据结构那样进行量化处理。因此矢量数据能更精确地 定义位置、长度和大小。实际上,因如下原因也不可能绝对精确:①表示坐 标的计算机字长有限;②所有矢量输出设备包括绘图仪在内,尽管分辨率比 栅格设备高,但也有一定的步长;③矢量法输入时曲线上选取的点不可能太 多;④数字化仪分辨率也有限。⑤人工输图中不可避免的定位误差。
除数学上的精确坐标假设外,矢量数据存储是以隐式关系以最小的存储 空间存储复杂的数据。当然这只是相对而言的,在地理信息系统中没有绝对 “最好”的方法。
一、矢量数据结构编码的基本内容
(一)点实体
点实体包括由单独一对 x,y 坐标定位的一切地理或制图实体。在矢量数 据结构中,除点实体的 x,y 坐标外还应存储其它一些与点实体有关的数据来 描述点实体的类型、制图符号和显示要求等。点是空间上不可再分的地理实 体,可以是具体的也可以是抽象的,如地物点、文本位置点或线段网络的结 点等,如果点是一个与其它信息无关的符号,则记录时应包括符号类型、大 小、方向等有关信息;如果点是文本实体,记录的数据应包括字符大小、字 体、排列方式、比例、方向以及与其它非图形属性的联系方式等信息。对其 它类型的点实体也应做相应的处理。图 3-13 说明点实体的矢量数据结构的 一种组织方式。
(二)线实体
线实体可以定义为直线元素组成的各种线性要素,直线元素由两对以上
的 x,y 坐标定义。最简单的线实体只存储它的起止点坐标、属性、显示符等 有关数据。例如,线实体输出时可能用实线或虚线描绘,这类信息属符号信 息,它说明线实体的输出方式。虽然线实体并不是以虚线存储,仍可用虚线 输出。
弧、链是 n 个坐标对的集合,这些坐标可以描述任何连续而又复杂的曲 线。组成曲线的线元素越短,x,y 坐标数量越多,就越逼近于一条复杂曲线。 既要节省存储空间,又要求较为精确地描绘曲线,唯一的办法是增加数据处 理工作量。亦即在线实体的纪录中加入一个指示字,当起动显示程序时,这 个指示字告诉程序:需要数学内插函数(例如样条函数)加密数据点且与原 来的点匹配。于是能在输出设备上得到较精确的曲线。不过,数据内播工作 却增加了。弧和链的存储记录中也要加入线的符号类型等信息。
线的网络结构。简单的线或链携带彼此互相连接的空间信息,而这种连 接信息又是供排水网和道路网分析中必不可少的信息。因此要在数据结构中 建立指针系统才能让计算机在复杂的线网结构中逐线跟踪每一条线。指针的 建立要以结点为基础。如建立水网中每条支流之间连接关系时必须使用这种 指针系统。指针系统包括结点指向线的指针。每条从结点出发的线汇于结点 处的角度等,从而完整地定义线网络的拓扑关系。
如上所述,线实体主要用来表示线状地物(公路、水系、山脊线)、符
号线和多边形边界,有时也称为“弧”、“链”、“串”等,其矢量编码包 括以下内容:
其中唯一标识是系统排列序号:线标识码可以标识线的类型;起始点和
终止点可以用点号或直接用坐标表示;显示信息是显示时的文本或符号等; 与线相联的非几何属性可以直接存储于线文件中,也可单独存储,而由标识 码联接查找。
(三)面实体
多边形(有时称为区域)数据是描述地理空间信息的最重要的一类数据。 在区域实体中,具有名称属性和分类属性的,多用多边形表示,如行政区、 土地类型、植被分布等;具有标量属性的有时也用等值线描述(如地形、降 雨量等)。
多边形矢量编码,不但要表示位置和属性,更重要的是能表达区域的拓
扑特征,如形状、邻域和层次结构等,以便恢复这些基本的空间单元可以作 为专题图的资料进行显示和操作,由于要表达的信息十分丰富,基于多边形 的运算多而复杂,因此多边形矢量编码比点和线实体的矢量编码要复杂得 多,也更为重要。
在讨论多边形数据结构编码的时候,首先对多边形网提出如下的要求:
(1)组成地图的每个多边形应有唯一的形状、周长和面积。它们不象栅 格结构那样具有简单而标准的基本单元。即使大多数美国的规划街区也不能 设想它们具有完全一样的形状和大小。对土壤或地质图上的多边形来说更不 可能有相同的形状和大小。
(2)地理分析要求的数据结构应能够记录每个多边形的邻域关系,其方 法与水系网中记录连接关系一样。
(3)专题地图上的多边形并不都是同一等级的多边形,而可能是多边形 内嵌套小的多边形(次一级)。例如,湖泊的水域线在土地利用图上可算是
个岛状多边形,而湖中的岛屿为“岛中之岛”。这种所谓“岛”或“洞”的 结构是多边形关系中较难处理的问题。
二、矢量编码方法
(一)x,y 坐标方法
任何点、线、面实体都可以用直角坐标点 x,y 来表示。这里 x,y 可以 对应于地面坐标经度和纬度,也可以对应于数字化时所建立的平面坐标系 x
和 y。对于点则是一组(x,y);对于线,则是多组(x1,y1;x2,y2;x3 ,
y3;?,xn,yn);而对于多边形,也是多组(x,y)坐标,但由于多边形
封闭,坐标必须首尾相同。这些点是由光滑的曲线间隔采样而来。同样的曲 线长度,取点越多,以后恢复时越接近原来曲线,失真越少;反之,取点过 少,恢复时就会成为折线。图 3-15 为点、线、面的实体表示。
特征码 位置坐标
点 10
线 12
面 35
x , y
x1 , y1 ; x2 , y2 ; x3 , y3 ; x4 , y4 ; x5 , y5 ; x6 , y6
x1 , y1 ; x2 , y2 ; x3 , y3 ; x4 , y4 ; x5 , y5 ; x6 , y6
x7 , y7 ; x8 , y8 ; x9 , y9 ; x10 , y10 ; x11 , y11 ; x12 , y12 , x1 ,
y1
图 3-15 点、线、面实体的坐标表示
如果是多个相邻多边形,其矢量编码的坐标文件如图 3-16
特征码 坐标位置
1 x1 , y1 ; x2 , y2 ; x3 , y3 ; x4 , y4 ; x5 , y5 ; x6 , y6x7 , y7 ; x8 , y8 ;
x9 , y9 ; x10 , y10 ; x1 , y1 ;
2 x28 , y28 ; x29 , y29 ; x30 , y30 ; x31 , y31 ; x32 , y32 ; x33 , y33 ; x28 , y28
x1 , y1 ; x11 , y11 ; x12 , y12 ; x13 , y13 ; x14 , y14 ; x15 , y15 ; x16 , y16 ;
3 x17 , y17 ; x18 , y18 ; x19 , x19 ;
x9 , y9 ; x10 , y10 ; x1 , y1 ;
4 x18 , y18 ; x19 , y19 ; x9 , y9 ; x8 , y8 ; x7 , y7 ; x20 , y20 ; x21 , y21 ;
x22 , y22 ; x23 , y23 ; x24 , y24 ; x18 , y18 ;
x16 , y16 ; x17 , y17 ; x18 , y18 ; x24 , y24 ; x23 , y23 ; x27 , y27 ; x26, y26 ;
5 x25 , y25 ; x16 , y16
( b )
图 3-16 多种形矢量编码 坐标法文件结构简单,易于实现以多边形为单位的运算和显示。这种方
法的缺点是:
(1)邻接多边形的公共边被数字化和存储两次,由此产生冗余和边界不 重合的匹配误差。
(2)每个多边形自成体系,而缺少有关邻域关系的信息。
(3)不能解决“洞”或“岛”之类的多边形嵌套问题,岛只作为单个的 图形建造,没有与外包多边形的联系。
(4)没有方便方法来检查多边形边界的拓扑关系正确与否,如有无不完 整的多边形等。
(二)树状索引编码法
该法采用树状索引以减少数据冗余并间接增加邻域信息,方法是对所有 边界点进行数字化,将坐标对以顺序方式存储,有点索引与边界线号相联系, 以线索引与各多边形相联系,形成树状结构。
图 3-17 和图 3-18 分别为图 3-16(a)多边形文件和线文件索引示意 图。其文件结构如下:
(1)点文件
点号 坐标
1 x1 , y1
2 x2 , y2
? ?
33 x33 , y33
(2)线文件
线号 起点
终点
点号
Ⅰ 1
Ⅱ 7
Ⅲ 9
? ?
Ⅹ 16
7
9
1
?
23
1 2 3 4 5 6 7
7 8 9
9 10 1
???
16 25 26 27 23
(3)多边形文件
多边行号 边界线号
1 Ⅰ Ⅱ Ⅲ
2 Ⅳ
3 Ⅲ Ⅴ Ⅵ Ⅶ
4 Ⅱ Ⅶ Ⅸ Ⅷ
5 Ⅵ Ⅸ Ⅹ
树状索引编码法消除了相邻多边形边界的数据冗余和不一致的问题,邻
域信息和岛状信息可以通过对多边形文件的线索引处理得到,但是较为麻 烦,编码表以人工方式建立也容易出错。
下面举一个例子说明这一类记录方式: 美国农业部制图和地理信息系统室提供的土壤类型图数据,记录在磁带
上供用户使用。其记录格式为矢量格式,从土壤分类专题地图数字化而来。 文件结构分别为:
(1)头文件:共六个记录,每个记录 72 个字符占一行(表 3-1 和表 3
-2)。
记录号
字符数
表 3-1 头文件一
1 - 30 31 - 45 46 - 72
1 数据组名(原图类型)
2 数字化的工作部门名称
比例尺 数字化时间
数字化的地区名
前二个记录是一般介绍,后四个记录为原图四角的坐标值和地面对应的
经纬度值,为恢复时定位或几何校正用。
(2)土壤线数据文件:包括全图所有土壤类型之间的边界线及土壤和水 体(湖泊、水库等)的边界。所有的坐标值都是数字化极坐标,以英寸为单 位。每一个记录不超过 24 个字符。多边形图可以为左多边形和右多边形,其 记录格式如表 3-3。
记录号
表 3-2 头文件二
字符数
1 - 2 4 - 10 12 - 18 20 - 28 30 - 40 43 - 50 52 - 61 62 - 72
3
SW
x
y
经度
经度值
纬度
纬度值
-
4
NW
x
y
经度
经度值
纬度
纬度值
-
5
NE
x
y
经度
经度值
纬度
纬度值
-
6
SE
x
y
经度
经度值
纬度
纬度值
-
记录号
字符数
表 3-3 线数据文件
1 - 5 6 - 3 11 - 15 16 - 24
1 左土壤类(字符) 右土壤类(字符) 坐标点记录数( ni - -
1 )
记录号
字符数
1 - 7 8 - 14 15 - 21 22 - 24
2 x1 - y1 -
? ?
ni xni - 1 - yni - 1 -
(3)土壤类别名称数据文件:包括所有土壤类别名称及水域,每一名称
放在这一类的多边形的区域中,并设置一个标号点(或叫种子点),以便恢 复时确定每一多边形的属性。这里,每一记录不超过 28 个字符,格式如表 3
-4,共 k 个多边形。
表 3-4 土壤类别名称数据文件
记录号
字符数
12 - 11 12 - 13 14 - 20 21 22 - 28
1 "T" 土壤名 "x" x1 "y" y1
· · 或水域 · · · ·
· · (字符) · · · ·
· · · · · · ·
k "T" · "x" xk "y" yk
这种编码主要目的是提供数据资料,基本上没有考虑独立的多边形,因而在
GIS 中查询、检索比较困难。
(三)拓扑结构编码方法
多边形内嵌套多边形即“洞”和邻域关系问题的唯一解决办法是拓扑关 系直接应用到数据结构中。建立拓扑结构的方法有两种:①输入数据的同时 输入拓扑连结关系;②由计算机软件从一系列相互关联的链建立拓扑结构。 前者会增加操作员的工作量,后者则取决于计算机的处理能力。二者都增加 存储量。首先在地理数据结构中建立拓扑关系是美国人口调查局建立的双重 独立地图编码系统。又可简称 DIME(Dual Independent Map Encoding)。 DIME 建立城市街道网和统计单位如街区、人口统计区等的数据库,并实现自 动和半自动的编辑和分析。也可以用于土地利用等多种信息系统的编辑和分 析。DIME 数据文件的基本元素是由始末点定义的简单线元素,复杂的曲线则 有许多这种线元素组成。每条线元素有两个指向结点指针和线元素两边多边 形的编码。由于这种数据结构中没有链反向结点及链指向邻近链的指针,因 此要花很多时间去查找组织多边形的各条边界线。
此外,简单线元素结构法使复杂曲线的处理十分不便,因为有大量的多
余数据同时存储于数据库中。 荷兰土地调查研究院发展了另一种简单而有效的多边形数据结构,并能
在小型计算机上处理多边形数据组的分配问题。基本方法是:地图上的多边
形以线段或链文件的形式存储,该文件中每条链又以组成该链的各坐标对来 列表存储,而且每条链还包括两个指向邻接多边形的指针(图 3-19)。多 边形的名称存储在另一个独立文件中,该文件实际上是一个表格,也包括一 些指针。这种数据结构不能进行更为复杂的邻城关系的搜索,也不能检查奇 异多边形和“死点”等差错。只有完整的拓扑结构数据库才能处理这类问题。
为了建立恰当的拓扑多边形数据结构,使“岛屿多边形”、面积计算、 邻城关系处理、奇异多边形和“死点”检查等都能顺利处理,必须建立图 3
-20 所示的数据结构。许多实验性和生产性的制图系统都要求在数字化的同 时在数据库中建立拓扑联结关系,而且常常要求用户按顺时针方向或逆时针 方向数字化所有的多边形,以便把线元素与其左右两边的多形组合起来。另 外还要求用户用数字化图中的虚线把“岛屿”和它们周围的“湖泊”连接起 来。
下面讨论如何从一系列按任意顺序和任意方向数字化的链,组成完整拓 扑多边形网络结构的数据组织方法(图 3-20)。这种数据结构能够处理湖 和岛屿在任何一级多边形网络中的嵌套问题,能检查奇异多边形和“死点”,
能自动或半自动地将非空间属性数据与多边形连接起来,并全面支持邻域关 系的搜索等。
前面讨论过的简单多边形数据结构经常要求数据输入方法必须满足数据 结构要求,从而给数据输入和数据结构优化处理带来一些问题。因此,把数 据输入和数据结构分成两个单独的处理过程是更加有效的方法。为了建立这 样的数据结构,只需对数据输入作两种假设:①多边形边界已按链或弧编码;
②用以连接图形数据与属性数据的多边形名称则以每个多边形内某处可识别 的点实体的形式数字化。在这种假设条件下,组成完整拓扑多边形数据结构 的步骤如下:
1.将链连接成边界网络:首先按链的尺度(最大最小 x,y 坐标)存储多 边形的链,使各条链能按拓扑关系彼此集中在一起,同时在数据文件中存储 在一起,从而节省查找相邻链的时间。然后对这些链进行检查,看哪些其它 链与它们相交,把各交点存储在组成这些点的所有链的后面,并把链的数据 记录延长以包括指针和角度。
如果链不是在端点相接而是在中间相交,就会自动切成新链和形成新节 点,同时建立新的指针。有些地理信息系统不能自动形成节点,需用手工输 入。虽然手工输入节点及指针可以减少计算处理时间,但会产生非标准的数 据格式和数据库中的多余数据,同时输入工作量也大。
2.检查多边形是否闭合:检查多边形闭合与否的方法很简单,即扫描修
改过的链记录,看每条链是否有指向其它链和从其它链指向它。如果每条链 都至少有一个指针指向其它链和一个从其它链指向它的指针,则说明多边形 网络中的各多边形是闭合的。
如果组成岛的链只有一条,它的指针就指向它本身。某链经检查不合要
求时,系统会以特殊的方法显示出来,让操作员知道某些链有问题,并决定 是否去除或修改。
3.连接各链组成多边形:组成多边形的第一步是建立多边形网最外沿线
组成的包络多边形(实体),这个包络实体由以下记录内容组成:
⊙唯一标识;
⊙唯一的编码,这个编码说明该多边形是包络多边形;
⊙环形指针;
⊙指向边界链的指针列表;
⊙包络多边形的面积;
⊙范围(包围包络多边形的矩形的最大最小 x,y 坐标值)。 此包络多边形用户是看不见的,它的唯一作用是建立多边形网络的拓扑
结构。
包络多边形按如下方法建立:在多边形网的最外沿选择一个点作为起始 点,按顺时针方向沿着边界查找下一个节点。原则是选取每一个节点处的最 左边一条链,并以这条链的另一端作为起点查找最左边的链,以此类推。选 出的链的识别符和其它有关数据需记录和存储,同时还要建立特殊标记来表 明该链已被查找一次。
第二步是一旦外沿线(包络多边形)建立起来以后,就建立其它多边形。 重新从建立包络多边形的起点开始,仍按顺时针方向查找,但不是找最左边 的链而是最右边的链。查找的同时还要记录各条链被查找的次数,如某条链 已被查找两次就不再查找,回到起点就表明一个多边形查找结束。
查找和记录链的同时还要检查角度的累积值,如果总和不等于 360 度, 则说明该节点处数字化有错误,而且会形成奇异多边形。虽然奇异多边形在 第一阶段中已检查并滤除。但如果一条链必须连接到手工输入的节点上时, 这一检查还是必要的。
与包络多边形一样,每个多边形实体也包括如下信息:
⊙唯一的标识符;
⊙多边形编码;
⊙包围多边形到该多边形的环形指针,同时,该多边形的识别符应写入 包络多边形的环形指针记录中去;
⊙所有边界链列表(同时,多边形的识别符应写入链的记录中去);
⊙指向多边形网中邻接多边形的指针;
⊙包络多边形的矩形的最大最小坐标值。 这些工作都完成后,用同样的过程查找下一个多边形,但下一个多边形
必须位于同一多边形网中,且属分级结构中的同一级。直到每个多边形都生 成后才结束查找工作。当最后一个多边形查找完毕时,就将它的指针指回到 包络多边形。这样就能保证每一条链都与两个多边形有关。
“岛”的查找过程与上述基本一样。但“岛”必须按适当的拓扑等级进 行编排,而且把“岛”的水域线围成的多边形也指定为包络多边形,编排岛 的拓扑等级可以按包络多边形的面积分类排列,然后检查小包络多边形(即 岛)是否落入较大的包络多边形内。较为快速的查找方法是比较它们的范围 即包络矩形(最大,最小 x,y 坐标)的大小。如果发现多边形落入较大多边 形内,则用“点在多边形内”程序检查岛多边形是否完全在大多边形内(图
3-21 和图 3-22)。图 3-21 中点 a 在多边形的范围内(最大、最小坐标)
以外,很容易判断 a 点不在多边形内;b 点和 c 点则需用图 3-22 所示的方 法进一步检查。即从所查点开始向一个方向作水平线,如果该水平线与多边 形边界相交的次数为奇数则表明该点在多边形内,否则在外。图 3-22 中多 边形 P'边界上的各点,经检查都在大多边形 P 内,则说明 P'完全在 P 内,P' 可能是岛;如果有些点落在大多边形 P 以外,则可能有某种错误,操作员应 进行必要的检查。
4.计算多边形面积:按梯形法则计算每个多边形的面积,并把所计算的
面积作为多边形的属性数据存储。由于地理数据中,多边形可能具有几百个 边界坐标点,而且多边形网络中常包括多个岛屿。计算机计算面积的有效方 法是尽可能只算一次,因此湖泊水域面积最好是从湖的外沿多边形面积中减 去岛的面积(如果湖中有岛的话)。
5.属性数据与多边形的连接:建立完整拓扑多边形数据结构的最后一步 是把多边形图形数据与对应的属性数据连接在一起。属性数据即描述多边形 特性的一切自然、社会经济数据。这两类数据的连接具有唯一性。
多边形识别符的建立有两种方法:
(1)在每个多边形内数字化一个文本实体作为数据输入的一部分,或者 在多边形形成后交互地输入。文本实体可以是文字、号码、名称等,但整个 多边形网必须统一,而且每个多边形的识别符不能相同,即需在各自的记录 中加入唯一的识别符或称关键字,并将二者的识别符再存储在另一文件—— 关系表中,以便参照查找。
(2)由程序自动寻找多边形的中央点,并在该点写上多边形的识别符(大 多数程序都是顺序号),并打印出这些识别符列表,用户按表再把对应的识 别符写入属性数据文件中去,或建立关系表,以供图形和属性相互参照查找 使用。
虽然建立这类复杂的拓扑多边形网数据结构需要有相当的计算机能力和 复杂的软件,但这类数据结构有如下优点:
(1)多边形网络完全综合成一个整体,没有重叠和漏洞,也没有过多的 冗余数据;
(2)全部多边形、链、属性数据均为内部连接在一起的整体单元的一部 分,可以进行任何类型的邻域分析。而且能将属性数据与链连接后再进行分 析;
(3)多边形中嵌套多边形没有限制,可以无限地嵌套。例如,湖→岛→
小湖→小岛,等等。
(4)数据库的位置精度只受数字化的精度和计算机字长的限制
(5)数据结构与数据收集和输入的牵连不多。
§5.栅格和矢量数据结构的选择及其相互转换算法
一、栅格和矢量数据结构的比较与选择
空间数据的栅格结构和矢量结构是模拟地理信息的截然不同的两种方 法。几年以前,人们习惯的观点是:这两种结构势不两立、互不相容。原因 是栅格数据结构需要大量的计算机内存来存储和处理地理数据,才能达到与 矢量数据结构相同的空间分辨率,而矢量结构在某些特定形式的处理中,如 象多边形叠加、空间均值处理等都表现出大量的技术问题没有解决。同时栅 格结构是“属性明显,位置隐含”,而矢量结构是“位置明显,属性隐含”。 栅格数据结构十分有利于空间分析,但输出的专题地图既不美观也不够精 确;相反矢量数据结构存储量小,并且能输出精美的地图,但空间分析相当 困难。
近几年来,人们越来越清楚地认识到:原来把栅格数据和矢量数据结构 的差别当成重要的概念差别是不正确的,事实上都是技术问题。计算机技术 的发展使运算速度、存储能力、地理数据的空间分辨率大大提高。为了更有 效地利用 GIS,人们面临的问题之一是栅格数据和矢量数据结构的恰当选择 问题。
从图形质量出发,最初研究和发展的是矢量数据处理技术。原因很简单:
矢量数据结构是人们最熟悉的图形表达形式。但到 70 年代后期,许多实际工 作者都认为在许多情况下,栅格方案更有效。例如多边形周长、面积、总和、 平均值的计算、从一点出发的半径等,在栅格数据中都简化为简单的计数操 作。又因为栅格坐标是规则的,删除和提取数据都可按位置确定窗口来实现, 比矢量数据结构方便得多。另一方面,相互连接的线网络和多边形网络则仍 需应用矢量数据结构模式。因为矢量结构更有利于网络分析(交通运输网、 给排水网等)和制图应用。但是矢量表示的多边形网络、线网络数据结构中 包括了大量拓扑信息即关系数据等多余数据,也使矢量结构的数据库容量大 幅度增加。
由此可知栅格结构和矢量结构都有各自的优点和局限性。两种数据结构
的比较如下:
1.矢量数据结构: 优点:
(1)表示地理数据的精度较高;
(2)严密的数据结构,数据量小;
(3)用网络连接法能完整地描述拓扑关系;
(4)图形输出精确美观;
(5)图形数据和属性数据的恢复、更新、综合都能实现。 缺点:
(1)数据结构复杂;
(2)矢量多边形地图或多边形网很难用叠置方法与栅格图进行组合;
(3)显示和绘图费用高,特别是高质量绘图、彩色绘图和晕线图等;
(4)数学模拟比较困难;
(5)技术复杂,多边形内的空间分析不容易实现。
2.栅格数据结构: 优点:
(1)数据结构简单;
(2)空间数据的叠置和组合十分容易方便;
(3)各类空间分析都很易于进行;
(4)数学模拟方便;
(5)技术开发费用低。 缺点:
(1)图形数据量大;
(2)用大像元减少数据量时,可识别的现象结构将损失大量信息;
(3)地图输出不精美;
(4)难以建立网络连接关系;
(5)投影变换花的时间多。 从上述比较中可以了解到栅格数据和矢量数据结构的适用范围。对于一
个与遥感相结合的地理信息系统来说,栅格结构是必不可少的,因为遥感影 像是以像元为单位的,可以直接将原始数据或经处理的影像数据纳入栅格结 构的地理信息系统。而对地图数字化、拓扑检测、矢量绘图等,矢量数据结 构又是必不可少的。较为理想的方案是采用两种数据结构,即栅格结构和矢 量结构并存,用计算机程序实现二种结构的高效转换。数字地图根据需要按 矢量结构或栅格结构存储最大限度地减少冗余,提高数据精度,对于数据的 提取和分析、输出,由程序自动根据操作的需要选取合适的结构,以获取最 强的分析能力和时间效率。栅格和矢量双结构,对于提高地理信息系统的空 间分辨率、数据压缩率和增强系统分析、输入输出的灵活性十分重要。但是 在转换程序效率不高、硬、软件功能不太全的情况下,又要及时开展 GIS 工 作,选用恰当的数据结构是 GIS 有效运行的前提之一。
二、栅格和矢量数据结构相互转换算法
矢量结构与栅格结构的相互转换,一直是地理信息系统的技术难题之 一。这主要是由于转换程序通常占用较多的内存,涉及复杂的数值运算,而 难以在实用系统特别是微机地理信息系统中被采用。近年来已发展了许多高 效的转换算法,适用于不同的环境。
对于点状实体,每个实体仅由一个坐标对表示,其矢量结构和栅格结构
的相互转换基本上只是坐标精度转换问题。线实体的矢量结构由一系列坐标 对表示,在变为栅格结构时,除把序列中坐标对变为栅格行列坐标外,还需 根据栅格精度要求,在坐标点之间插满一系列栅格点,这也容易由两点式直 线方程得到;线实体由栅格结构变为矢量结构与将多边形边界表示为矢量结 构相似。因此以下重点讨论多边形(面实体)的矢量结构与栅格结构相互转 换问题。
(一)矢量格式向栅格格式转换
矢量格式向栅格格式转换又称为多边形填充,就是在矢量表示的多边形 边界内部的所有栅格上赋予相应的多边形编号,从而形成栅格数据阵列。
1.内部点扩散算法;该算法由每个多边形一个内部点(种子点)开始, 向其八个方向的邻点扩散,判断各个新加入点是否在多边形边界上,如果是
边界点,则新加入点不作为种子点,否则把非边界点的邻点作为新的种子点 与原有种子点一起进行新的扩散运算,并将该种子点赋予多边形的编号。重 复上述过程,直到所有种子点填满该多边形并遇到边界为止。
扩散算法程序设计比较复杂,需要在栅格阵列中进行搜索,占用内存很 大。在一定栅格精度上,如果复杂图形的同一多边形的两条边界落在同一个 或相邻的两个栅格内,会造成多边形不连通,则一个种子点不能完成整个多 边形的填充。
2.复数积分算法:对全部栅格阵列逐个栅格单元判断栅格归属的多边形 编码,判别方法是由待判点对每个多边形的封闭边界计算复数积分,对某个 多边形,如果积分值为 2πi,则该待判点属于此多边形,赋予多边形编号, 否则在此多边形外部,不属于该多边形。
复数积分算法涉及许多乘除运算,尽管可靠性好,设计也并不复杂,但 运算时间很长,难以在比较低档次的计算机上采用。采用一些优化方法,如 根据多边形边界坐标的最大最小值范围组成的矩形来判断是否需要做复数积 分运算,可以部分地改善运算时间长的困难。
3.射线算法:射线算法可逐点判别数据栅格点在某多边形之外或在多边 形内,由待判点向图外某点引射线,判断该射线与某多边形所有边界相交的 总次数,如相交偶数次,则待判点在该多边形的外部,如为奇数次,则待判 点在该多边形内部。
射线算法要计算与多边形交点,因此运算量大。另一个比较麻烦的问题
是射线与多边形相交时有些特殊情况如相切、重合等,会影响交点的个数, 必须予以排除,由此造成算法的不完善,并增加了编程的复杂性。
4.扫描算法:扫描算法是射线算法的改进,通常情况下,沿栅格阵列的
行方向扫描,在每两次遇到多边形边界点的两个位置之间的栅格,属于该多 边形。扫描算法省去了计算射线与多边形交点的大量运算,大大提高了效率, 但一般需要预留一个较大的数组以存放边界点,而且扫描线与多边形边界相 交的几种特殊情况仍然存在,需要加以判别。
5.边界代数算法:边界代数多边形填充算法(Boundary Algebra
Filling,简称 BAF),是任伏虎等设计并在微机地理信息系统上实现的一种 基于积分思想的矢量格式向栅格格式转换算法。
为说明边界代数转换法的原理,先考虑图 3-23 所示单个多边形的简单
情况,模仿积分求多边形区域面积的过程,初始化的栅格阵列各栅格值为零, 欲填充多边形编号为 a 的区域,即将区域内栅格点的值变为 a,而区域外各 点仍保持原值零。转换时,以栅格行列为参考坐标轴,由多边形边界上某点 为起点顺时针搜索边界线,当边界线段为上行时(图 3-23(a)),位于搜 索边界曲线左侧的具有相同行坐标的所有栅格点被减去一个值 a;当边界线 段为下行时(图 3-23(b)),则将边界曲线左边(从曲线前进方向看为右 侧)所有具相同行坐标的栅格点加上一个值 a,当沿边界搜索运算一周回到 起始点后,所有多边形内部的栅格点都被赋值 a,而多边形外的栅格点的值 不变。
成为本站VIP会员VIP会员登录,
若未注册,请点击免费注册VIP 成为本站会员.
版权声明:本站所有电子书均来自互联网。如果您发现有任何侵犯您权益的情况,请立即和我们联系,我们会及时作相关处理。