目录
5. 地理信息系统的数据处理
一旦空间数据和非空间数据都输入计算机后,就须对输入的数据进行处理,数据处理是建立应用地理信息系统过程中不可缺少的一个阶段。在这个阶段中,一方面可对输入的数据进行质量检查与纠正,其中包括:
图形数据和属性数据的编辑、图形数据和属性数据之间的对应关系的校验及纠正、空间数据的误差校正等; 另一方面是对输入的图形数据进行整饰处理,以使这些图形数据能满足地理信息系统的各种应用要求,其中包括:
对矢量数据的压缩与光滑处理、拓扑关系的建立、矢量数据与栅格数据的相互转换、图形的线性变换和投影变换、图框的生成、地图裁剪以及图幅拼接等等。
5.1. 数据编辑
数据编辑又叫数字化编辑,它是指对地图资料数字化后的数据进行编辑加工,其主要目的是在改正数据差错的同时,相应地改正数字化资料的图形。大多数数据编辑都是消耗时间的交互处理过程,编辑时间与输入时间几乎一样多,有时甚至更多。全部编辑工作都是把数据显示在屏幕上并由键盘和鼠标控制数据编辑的各种操作。因此,GIS的图形编辑系统除具有图形编辑和属性编辑的功能外,还应具有窗口显示及操作功能,以达到数据编辑过程中的交互操作目的。
5.1.1. 窗口操作
窗口操作是交互式图形编辑系统的重要工具,利用窗口我们既可以观察图形的全景,又可移动窗口观察图形的不同部分,还可以将图形局部放大,观察其细部,使图形的编辑、修改、设计更加方便、精确。
开窗显示是窗口操作中主要而基本的功能,所谓开窗显示就是按用户指定的空间范围, 进行图形子集合的选取,这个指定范围称之为“窗口”。当人们希望利用指定的有效空间或存贮介质, 对某个局部范围进行图形数据的显示或转贮时,往往都要使用开窗技术。 开窗的方式有两种:正开窗和负开窗。正开窗就是选取整个图形数据在窗口内的子集合;负开窗就是选取整个图形数据在窗口外的子集合。在通常情况下,正开窗用途更大一些。窗口的形状通常为矩形,也可以是任意多边形,这根据用户的需要确定。窗口轮廓点坐标可由键盘输入,也可将全图显示在荧光屏上用光标确定。如果窗口为矩形,只要输入或标定窗口的两个对角坐标即可。
在窗口确定以后,还要考虑如何切掉窗口以外(对正开窗)或以内(对负开窗)的线条,从而只显示窗口以内或以外的内容,这一过程称为裁剪。
窗口规定了产生显示图形的范围,而视口(视见区)规定了显示图形在荧光屏上的位置和大小。要想按用户的需求实现开窗显示,就须用视见变换将窗口内的图形变换到显示器的视口中产生显示。
下面就对开窗技术中所用到的裁剪技术和二维视见变换技术予以介绍。
裁剪技术
不同的图形需要采取不同的裁剪技术,相同元素对不同的窗口形状有不同的方法。现以正开窗且窗口为矩形来讨论图形元素的裁剪方法。
(1)点的选取:
只要窗口左下角和右上角坐标已知,判断点是否在窗口内是非常容易的。设窗口左下角和右上角坐标为:(xl, yl)和(xr, yr),点p的坐标为(xp, yp),显示时只要xl< xp< xr且yl< yp< yr成立,p点在窗内就被选取,否则舍去。
(2)线状要素的选取:
线状要素是由有序线段组成的折线来逼近的。因此对线状要素的选取只要讨论线段的选取就可以了。下面介绍Cohen-Sutherland直线裁剪算法,首先对直线段的两个端点按所在区域进行分区编码,根据编码可以迅速地判明全部在内的线和全部在某边界外侧的线。只有不属于这两种情况的线,才需要求出交点,舍去交点外侧部分。对剩余部分把它作为新的线段看待,又从头开始考虑。两遍循环之后,就能确定该线段是部分裁留下来,还是全部舍弃。
(3)面状要素(多边形)的选取:
多边形的边界也是一条有序线段组成的折线,只不过它是一条封闭的折线罢了。裁剪方法基本上同线状要素的处理,但在显示时要进行校正,即把窗口边界上有关线段加入显示部分的多边形的边并形成一个封闭的值。
二维观察变换
地理信息系统中的地图数据库涉及多种数据源,它们往往参考于不同的坐标系,这为空间数据处理带来很多不便。而各种图形输出设备,如图形屏幕显示器,绘图仪等,又各有其独特的坐标系。为了增强地图数据库的空间数据处理功能和更方便地使用各种图形输入、输出设备,需引入三种坐标系。
(1)世界坐标系(WC-World Coordinate System):
世界坐标系是指用户坐标系。世界坐标系通常为直角坐标系,一般由用户自己选定,与机器设备无关。图形输入到数据库时所依据的就是这种坐标系,图形输出时应当仍然用用户所使用的坐标系,因为图形输出是面向用户的。用户坐标空间一般为实数域,理论上是连续的、无限的。作业区的左下角的坐标值通常为非零值。
(2)规格化数据库坐标系(NDC-Normalized Database Coordinate System):
在图形输入时,其数据来源可能是不一样的,表现在它们的椭球参数、投影方式、比例尺以及单位等的不同。而图形输出时,又可能会由于用户的需求不一样,要求输出结果用不同的椭球参数、不同的投影方式、不同的比例尺、不同的单位等。为了在库中能统一管理,通常在地图数据库中使用规格化数据库坐标系,即在库中将使用统一的椭球参数、投影方式、比例尺和单位等。
(3)设备坐标系(DC-Device Coordinate System):
设备坐标系是物理设备的I/O空间。每一种图形设备都有其独有的坐标系,在数字化仪上对地图或其它图形数字化时,由于数字化仪的游标器给出的是设备台面坐标(也叫相对坐标),而不是该图所依据的投影坐标,因此,在一般情况下要进行从DC到WC的变换,使得一幅图的数据,特别是多幅有关联的图幅的数据位于一个统一的理论参考系中。在屏幕上显示图形或在绘图机上绘图时,则要作另一种坐标变换。
(4)坐标系之间的变换:
在地图数据库中,三种坐标系之间均是双向变换关系,如图5-2所示。
(5)二维观察变换:
从图5-2可见,在进行图形数据交互编辑时,为了能实现开窗口,使得它在用户指定屏幕视口上显示图形,就必须进行NDC到DC的变换和DC到NDC的变换。因此,在图形数据编辑之前,用户先选定窗口范围(wxl,wyl)和(wxr,wyr)和视口范围(vxl,vyl)和(vxr,vyr)。然后进行二维观察变换,以实现在屏幕上适当位置正确显示窗口内数据,后可通过键盘或鼠标对屏幕图形进行交互式编辑。
观察变换将两种不同坐标系中的图形联系起来,将窗口转为视口。转换过程是: 先平移窗口使其左下角与坐标系原点重合,再比例变换使其大小与视口相等,最后再通过平移使其移到视口位置,窗口中的全部图形经过与此相同的变换后便成视口中的图形了。
5.1.2. 图形数据编辑
空间和非空间数据输入时会产生一些误差,主要有: 空间数据不完整或重复、空间数据位置不正确、空间数据变形、空间与非空间数据连接有误以及非空间数据不完整等。所以,在大多数情况下,当空间和非空间数据输入以后,必须经过检核,然后进行交互式编辑。
图形数据交互式编辑步骤
一般来说,交互式进行图形数据编辑须按如下步骤进行:
-
利用系统的文件管理功能,将存在地图数据库中的图形数据(文件)装入内存;
-
开窗显示图形数据,检查错误之处;
-
数字化定位和编辑修改;
-
若在编辑工作中出现误操作,可用系统提供的多级Undo(后悔)功能,改正误操作;
-
当所有编辑工作完成后,再利用系统的文件管理功能,将编辑好的图形数据存贮到地图数据库中。
步骤(3)所提到的数字化定位是指一旦发现图形上的错误,数据库中相应的数字化数据就可找到,原则上数字检测的方法就是依据坐标、特征码和序列号。检测的方法取决于数字化数据的结构和资料本身。数据结构将在第六章中讨论,须指出的是,在地图数据库中地图数据可能被处理的程度是衡量一个数据结构价值的重要标志。
对图形数据编辑是通过向系统发布编辑命令(多数是窗口菜单)用光标激活来完成的,编辑命令主要有: 增加数据、删除数据、修改数据三类。编辑的对象是点元、线元以及面元,而每种图元又包含空间数据和非空间数据两类。
常用的编辑命令有:
-
增加数据:输入点元、线元、面元;复制点元、线元、面元;
-
删除数据:删除点元、线元、面元;
-
修改空间位置数据:移动点元、线元、面元;旋转点元、线元、面元;镜像点元、线元、面元;
-
修改空间形状数据:修改线上点;修改面元的弧段上的点;线元和孤段的端点匹配;延长或缩短线元以及面元的孤段;
-
修改非空间数据:修改点元色、线元色、面元色;修改点元高度、宽度、角度;修改线宽;修改点元符号;修改线型符号;修改面元填充符号。
图形数据处理方法
(1)图元捕捉
点的捕捉:在GIS中,点的捕捉是为了捕捉点的实体。假设图幅上有一点A(x,y),为捕捉该点,常设置一定捕捉半径D(通常为几个像素),当选择点S(x,y)离A点距离小于D,认为捕捉A点成功。实际中为避免做平方运算,常把捕捉区域设定成矩形,如图5-3所示。因此,点捕捉的实质是判断选择点S(x,y)是否在圆或设定的矩形之内。
线元的捕捉:假设图幅上有一个线元,其坐标点分别为(x:sub:1,y1)(xx,y2)…(xn,yn),为捕捉该线元,设置的捕捉半径为D。从理论上说,选择点的光标点坐标S(x,y)到线元的各直线段之间的距离d1,d2,d3…中,如有一个距离di满足di<D,认为该线元被捕捉。图5-4(a)中,当(d:sub:1OR d2OR d3) < D,则表示选择点S(x,y)捕捉到了该线元。实际上,由于一个线元有很多直线段组成,为此需要分别求光标点S(x,y)到各直线段的垂直距离,这样计算量很大。借助线元外接矩形信息,可减少计算工作量,提高捕捉线元的速度,具体过程是:
首先查光标所选点坐标S(x,y)是否在某线元的外接矩形内,如不在该矩形内,该光标点S(x,y)不可能捕捉到该线元,反之如在该矩形内,光标点S(x,y)有可能捕捉到该线元。显然,这里通过外接矩形可大大缩小寻找目标的范围。当光标点S(x,y)有可能捕捉到该线元时,再进行进一步的计算判断,即从光标点S(x,y)依次对每条直线段计算该点到各直线段的距离,并从中判断是否存在某个距离di<D,若存在,则认为该线元被捕捉;否则该线元未被捕捉。
面元(多边形)的捕捉:假设图幅上有一多边形,其边界坐标点分别是(x:sub:1,y1)(xx,y2)…(xn,yn)。多边形的捕捉实际上是判断选择点S(x,y)是否在多边形内。为提高捕捉多边形的速度,通常的步骤是:
首先查所选点S(x,y)是否在某多边形的外接矩形内,如图5-5(b)所示,如不在该矩形内,选择点S(x,y)不可能捕捉到该多边形;如在该矩形内,所选点S(x,y)有可能捕捉到该多边形。当该多边形有可能被选中时,就可进一步判断所选点S(x,y)是否在该多边形之内。
判断点是否在多边形内的方法很多,其中一个方法是射线法,见图5-5(a),从选择点坐标S(x,y)做一垂直线或水平线,计算该线与多边形的交点个数,若交点个数为奇数时,则点S(x,y)在多边形内;当交点数为偶数时,则点S(x,y)在多边形外。
(2)线元(弧段)交点计算
在GIS中线元(弧段)求交是一种基本操作,在拓扑关系建立、图形叠置分析、缓冲区分析、图形显示等很多地方均需要用到线元或弧段的求交算法。一般情况下,线元或弧段的求交工作量是很大的。例如对两条弧段求交点,假定两条弧段分别有m和n个坐标点,则求两条弧段的交点就要进行(m-1)×(n-1)次直线求交和判断直线是否相交的运算。由于一幅图中存在大量弧段,求交计算量很大。为此可用外接矩形的方法首先判断两弧段相交的可能性,即先判断两弧段的外接矩形是否相交,如不相交,则说明量弧段没有交点;否则,两弧段有可能存在交点,再进一步对两弧段中各直线段求交运算。
(3)线元端点匹配
结点匹配:是指线元或弧段端点间的匹配。如图5-6所示,三个线目标或多边形的边界弧段中的结点A、B、C,本来应是同一点,坐标一致,但是由于数字化的误差,三点坐标不完全一致,造成它们之间不能建立关联关系。为此需要经过人工或自动编辑,将这三点坐标匹配成一致,或者说三点吻合成一个点。
结点匹配可由多种方法完成。第一种是结点移动,分别用鼠标将B点和C点移到A点;第二种方法是用鼠标拉一个矩形或圆,将落入该矩形或圆内的结点坐标吻合在一起,吻合时可以是将三点坐标的平均值作为吻合的坐标,也可以是将矩形或圆的中心点作为吻合坐标;第三种是通过求交点的方法,求两条线的交点或延长线的交点,即是吻合的结点;第四种方法是自动匹配,给定一个容差,在图形数字化时或图形数字化之后,将在容差范围之内的结点自动吻合在一起。一般来说,如果结点容差设置合适的话,大部分结点都能够相互吻合在一起,但有些情况下还需要前三种方法进行人工编辑。
结点与线匹配:是指线元或弧段端点和另一线元或弧段中间某点匹配。在数字化过程中,经常遇到一个结点与另一条线状目标或弧段的中间相交,这时由于测量误差或数字化时的误差,它也可能不完全交于该线目标或弧段上,而需要进行编辑,称为结点与线匹配或结点与线吻合,如图5-7所示。编辑的方法也有多种,一是结点移动,将结点移动到线目标上;二是使用线段求交,求出AB与CD的交点;第三种方法是使用自动编辑的方法,在给定容差内,将它们自动求交并吻合在一起。
结点与结点的吻合以及结点与线的吻合可能用两种情况需要考虑,一是仅要求它们的坐标一致,而不建立关联关系;另一种情况是不仅坐标一致,而且要建立它们之间的空间关联关系。在后一种情况下,图5-7中CD所在的线目标要分裂成两段,即增加一个结点,再与结点B进行吻合,并建立它们之间的关联关系。但对于前一种情况,线目标CD不变,仅B点坐标作一定的修改,使它位于直线CD上即可。
5.1.3. 属性数据编辑
我们知道,地理信息系统所要获取、管理以及分析加工的地理信息有三种形态: 即空间信息、属性信息和关系信息。前面我已经叙述有关空间信息——图形数据的编辑,关系信息的建立及编辑将在后面予以说明,这里介绍属性信息的编辑功能的实现。
属性数据就是描述空间实体特征的数据集,这些数据主要是用来描述实体要素类别、级别等分类特征和其它质量特征。
对属性数据的输入与编辑,一般是在属性数据处理模块中进行,但为了建立属性描述数据与几何图形的联系,通常需要在图形编辑系统中设计属性数据的编辑功能,主要是将一个实体的属性数据连接到相应的几何目标上,亦可在数字化及建立图形拓扑关系的同时或之后,对照一个几何目标直接输入属性数据。一个功能强的图形编辑系统可能提供删除、修改、拷贝属性等功能。
5.2. 多边形自动生成
如第二章所介绍,网结构元素的拓扑关系是GIS中非常重要的一个内容。利用它我们可以建立区域和弧段、结点之间的数据结构;可以对数据库信息进行各种空间分析和拓扑检索,以帮助用户做出正确的决策。
到目前,人们已经研究和使用了多种拓扑关系的表示方法,其目的就是想能有效的表示区域和弧段的关联关系、区域和区域的包含关系、弧段与弧段的邻接关系以及弧段与结点的关联关系等。
一般建立拓扑关系有两种方法:手工建立和自动建立。前者是以人机交互操作的方式,用户通过操作输入设备(鼠标器或键盘),在屏幕上依次指出构成一个区域的各个弧段、一个区域包含了另外哪几个区域、组成一条线路的各个线段等等;而后者则是利用系统提供的拓扑关系自动建立的功能,对手扶跟踪数字化或栅格数据矢量化得到的数据进行分析判断,从而得出网结构元素的拓扑关系。
(1)弧段邻接关系建立
由原始线段数据建立弧段的邻接关系,同时也确定了弧段与结点的关联关系。
如果两条弧段具有相同的端点,则定义这两条弧段具有邻接关系。图5-8表示了弧段邻接关系及其记录方式。邻接于弧段同一端点的各邻接弧段按顺时针方向顺序记录,按数字化方向,若邻接弧段是首点邻接,则在其关键字前冠以正号,否则冠以负号。
(2)环的生成
按一定规则(顺时针或逆时针)沿弧段跟踪形成闭合环(区域),同时记下每个区域的编号。
环的生成是对弧段邻接关系表(如图5-8所示)的一个跟踪搜索过程。由一条弧段出发,在邻接关系表中查出其前端最左的一条邻接弧段,根据此邻接弧段关键字前正负号,向前找到其它另一端最左的邻接弧段。按上述过程重复向前搜索跟踪,直至回到最初的出发弧段。
由于每条弧段同时关联于两个相邻的多边形,所以它应被跟踪两次,两次的方向相反。
跟踪结果形成的各个环,都应记录环经过的各弧段关键字,并用正负号标志弧段走向,若弧段走向与跟踪方向一致则标志正号,反之为负号。如图5-8中,若从弧段2开始跟踪,则圈定多边形A的环的记录为:(+2,+1,-4,+3)。
(3)确定多边形之间的包含关系
根据点是否在多边形内的判断法则,依次找出区域与区域之间的嵌套关系。
按环记录中关键字,可将该环上各弧段坐标数据读出,对所有内点匹配,便能确定环与内点的包含关系,即得环与内点包含关系得对照表,如图5-9。
一个多边形可能有一个或多个环,而一个多边形只给出一个内点,因而环与内点的拓扑关系可能是一对一或多对一的关系。图5-9中建立的环与内点的包含关系是纯几何上的,一个环可能包含多个内点,一个内点可能可能同时包含在不同的环内,这是一种多对多的几何包含关系。因此,必须从环与内点的包含关系转化为按多边形拓扑结构的环与内点的圈定关系,即找出哪些环是属于某一内点所代表的多边形的,这就是我们所需要的多边形面域与轮廓边的关联关系;以及某多边形和哪些多边形是包含关系。
手工建立或自动建立拓扑关系的方法各有其优势和不足。手工建立拓扑关系的方法:操作复杂,工作量大,但对原始数据要求不严,修改时不必重复计算;自动建立拓扑关系的方法:生成速度快,但对原始数据要求严,即要求弧段端点(结点)匹配好。因此,通常在自动生成多边形操作之前,都要进行结点匹配的操作,以保证多边形的顺利生成。
5.3. 空间数据的误差分析和校正
5.3.1. 空间数据的误差分析
在GIS应用过程中,GIS获取的是跟空间位置有关的图形、图像以及相关的专业属性等数据,经过系统的处理、查询、分析等操作后,得到各种用户所需要的图形、图像、图表和文字等结果(产品)。由于生产GIS结果的“原料”——GIS的原始录用数据本身包括着不可避免的误差,描述数据的模型也只能是客观实体的一种近似,并且GIS产品的“生产”过程中——各种空间操作、处理等又会引入新的误差或不确定性。因此,人们自然有理由要问:GIS产品的质量如何?GIS所输出的图表精度可靠性是多少?GIS综合分析、推理所得结论的精确度和可信度是多少?GIS原始录用数据中的误差和错误会不会严重干扰GIS对问题所作的结论?等等。用户在使用GIS解决具体问题的过程中,必须首先谨慎地弄清上述一系列问题,才能作出正确的决策。这一点,在以往的GIS设计中常常被忽视,使得由GIS生成的各种漂亮精美图件与其内在质量不相符合而导致决策失误。
GIS空间数据误差处理和分析就是针对上述背景而提出的研究课题,其核心是建立一套误差分析和处理理论体系。根据GIS数据误差研究的成果,未来的GIS应当在提供产品的同时,附带提供产品的质量指标,就像测量工作者在提供大地坐标时,同时提供坐标精度一样。
从应用角度看,GIS空间数据误差分析和处理的研究内容可概括为正演和反演两大问题。当GIS录入数据的误差和各种操作中引入误差已知时,计算GIS最终生成产品的误差大小和数值的过程是误差的正演问题。反之,根据用户对GIS产品所提出的误差限值要求,确定GIS录入数据误差和质量,则是误差的反演问题。显然,误差传播机制是解决正、反演问题的关键。
GIS数据误差的研究,对评价GIS产品的质量,确定GIS录用数据的标准,改善GIS的算法,减少GIS设计与开发的盲目性以及GIS的其它研究领域都有深远影响。
GIS数据误差研究的主要对象是GIS数据中固有误差和操作处理中产生的误差,研究内容为这些误差的性质、度量和传播。固有误差的来源和度量依赖于数据采集的直接法(指从野外直接进行数据采集)或间接法(指从地图等图件上进行数据采集)。因此,这方面的研究历史可追溯到GIS建立之前的大地测量、工程测量和摄影测量以及制图学中的经典误差理论。在GIS空间操作运算产生的误差方面,1969年,Frolov建立了一个估计拓扑匹配误差的公式。1975年,Switzer提出了一种估计从矢量到栅格数据转换精度的方法。1978年,Goodchild给出了检验多边形叠置过程中产生的无意义多边形统计量。1982年,Chrisman引入了著名的“ε—误差带”。1986年,Burrough对空间数据误差这一领域内的重要研究成果进行了总结。此外,Openshaw也是从事该方面研究的著名学者。还应当特别提到的是,早在1975年,MacDougall就用令人信服的例子说明了不考虑空间数据误差所带来的严重后果。
GIS误差问题真正受到重视还是从80年代末开始的。1988年12月由美国地理信息和分析中心(NCGIA)主持召开的专题讨论会,其宗旨就是为GIS空间数据误差研究拟定方向和立题。这是GIS误差理论研究史上的一个里程碑,标志着人们对GIS误差问题进行系统研究的开始。
1990年以前,GIS数据误差研究的重点集中在误差的来源分析、空间和非空间误差度量指标的建立以及由数据变换处理函数所引入误差的模拟等。这一时期的特点是没有在GIS环境下将误差传播模拟的众多内容联系起来,甚至有些研究是独立于GIS环境之外进行的, 这就是至今还没有能够进行误差处理分析的实用GIS原因之一。但可以深信,随着GIS数据误差问题各项研究的深入,预计将来的GIS将具备这一功能。
尽管GIS数据误差理论的研究内容繁多,但就目前来看,最有前途的发展方向可概括为下列7个:
建立误差分析体系
这个体系包括误差源的确定、误差的鉴别和度量方法、误差传播模型的建立以及控制和削弱误差对GIS产品影响的方法。传统的概率统计仍是建立误差分析体系的理论基础。但是,必须根据GIS操作运算的特点对经典的概率统计理论进行扩展和补充。
用敏感度分析法确定评价GIS产品质量的置信域
一般而言,精确确定GIS输入数据的实际误差非常困难。为了从理论上了解输出结果如何随输入数据误差的变化而变化,可以人为地在输入数据中加上扰动值来检验输出结果对这些扰动值的敏感程度。根据适合度分析,置信区间是衡量由输入数据误差引起输出结果变化的指标。目前应用最广泛的两种适合度分析是加权叠置和加权多维尺度变换。为了确定置信域,即敏感度,从这种研究中得到的并不是输出结果的真实误差,而是输出结果的变化范围。对于某些难以确定的误差,这种方法是行之有效的。在GIS中,敏感度检验一般有下面几种:地理敏感度、属性敏感度、面积敏感度、多边形敏感度和增删图层敏感度。敏感度分析是一种间接测定GIS产品可靠性的方法。
尺度不变空间分析法
地理数据的分析结果应与采用的空间坐标系统无关,即尺度不变空间分析,它包括比例不变和平移不变。在集合分析和建模过程中,当把面元作为空间数据采集单元时,为了保证在改变面元集合方式的情况下不影响分析结果,需要满足尺度不变条件。此外,若把空间集合看成空间滤波器时,用尺度不变空间分析法就可以严格地测定空间集合的影响程度。尺度不变是数理统计中常用的一个准则:一方面能保证用不同方法得到的结果一致;另一方面又可在同一尺度下合理地衡量估值的精度。
空间集合与分区法
在GIS分析中,常常把小区域看成面元,而一个大区域又由若干面元组成。这在城市规划和社会经济分析中是常见的。这种面元可以是正规的方格形,也可以是不规则的三角形。每个面元的大小是空间精度的一个函数,由此引入了一个用于处理空间数据误差或不确定性的基本方法。由于将面元看成是建立GIS空间数据误差模型的随机抽样点。因此,需要首先划分研究区域,然后对每个区或面元所包含的信息进行集合或综合抽象,而面元的大小和信息的综合方法又直接影响结果的精度。
空间数据误差的概念模式
我们可以把地理要素定义在空间(几何位置)、专题(属性)和时间三个维度中,每个维度的精度可由相应的误差大小来描述,例如,空间位置误差是由三维坐标精度来描述的,专题数据精度取决于数据的类型,它们常常与位置精度有关;在空间数据精度分析中常常被忽视的是时间精度,数据的可靠程度通常是时间的反函数,因为数据的空间属性和专题属性是随时间的变化而变化的。
空间数据误差的特点之一是多样性。数据质量包括6个主要部分:位置精度、属性精度、数据情况说明、逻辑一致性以及完整性和时间精度。位置精度和属性精度分别指精度的空间因素和专题因素。数据情况说明系指数据的来源、数据处理和编码方法以及对数据所进行的变换。逻辑一致性指数据编码关系的可靠性,包括拓扑、空间属性(例如同类多边形的边长和面积)以及专题属性的一致性。完整性是指描述数据库中目标以及目标的抽象概括之间的关系。总之,空间数据误差可以认为是由空间、专题和时间三个误差分量组成的。**
蒙特卡洛实验仿真
GIS处理过程中的空间数据误差传播模型是很复杂的。由于GIS数据来源繁多,种类复杂,既有描述空间拓朴关系的几何数据,也有描述空间物体内涵的属性数据。对于属性数据的精度常常只能用打分或不确定度来表示。对于不同的用户,由于专业领域的限制和需要,数据可靠性的评价标准并不相同。因此,想用一个简单的、固定不变的统计模型描述GIS误差传播规律似乎是不可能的。在对所研究问题的背景不十分了解的情况下,蒙特卡洛(Monte Carlo)模拟仿真是一种有效方法,它首先依据经验对数据误差的种类和分布模式进行假设,然后利用计算机进行模拟实验,将所得结果与实际结果进行比较,找出与实际结果最接近的模型。对于某些无法用数学表达式描述的过程,用这种方法既可得到实用公式,也可检验理论研究的正确性。
空间滤波
获取空间数据的方法可能是不同的,既可以采用连续方式采集,也可以采用离散方式。这些数据的采集过程又可以看成是随机采样,其中包含倾向性部分和随机性部分。前者代表所采集物体的形状信息,它可以是确定性参数,也可以是带有先验性质的信号;后者是由观测噪声引起的。
空间滤波分高通滤波和低通滤波。前者指从含有噪声的数据中分离提取噪声信息的过程;而后者指从数据中提取信号的过程。经高通滤波后可得到一个点(或线、面)的随机噪声场,然后按随机过程理论或方差-协方差分量估计理论求得数据采集误差。
5.3.2. 空间数据的误差校正
前节叙述的数据编辑处理,一般只能消除或减少在数字化过程中因操作产生的局部误差或明显差错,但因图纸变形和数字化过程的随机误差所产生的影响,必须经过几何校正。 从理论上讲,几何校正是根据图形的变形情况,计算出其校正系数,然后根据校正系数,校正变形图形。常用的几何校正方法有一次变换、二次变换以及高次变换,下面简单介绍它们。
二次变换和高次变换
这两种变换是实施地图内容转换的多项式拟合方法,它由多项式(5-2)表达。式中x,y为变换前坐标,x′和y′为变换后的坐标;系数a,b是函数f1,f2的待定系数。
A和B代表三次以上高次项之和。上式是高次曲线方程,符合此方程的变换称为高次变换。若不考虑A和B,则上式为二次曲线方程(5-3)。
符合上列二次曲线方程的变换为二次变换。这两种变换的实质是:制图资料上的直线经变换后,可能为二次曲线或高次曲线,它适用于原图有非线性变形的情况。
在二次变换中有5对未知数,理论上只要知道数字化原图上5个点的坐标及其相应的理论值,便可能算出a和b,从而建立起变换方程,完成几何校正的任务,即对数字化的地图的所有空间数据进行校正。实际应用时,可取多于5个点及其理论值,并用最小二乘法求解,可提高解算系数的精度。所选点的分布应能控制全图。
一次变换
同素变换和仿射变换均为一次变换。
(1) 同素变换是一种较复杂的一次变换形式,其函数式为公式(5-4)。
其主要性质有:直线变换后仍为直线,但同一线段上长度比不是常数;平行线变换后为直线束;同一线束中经一割线的交叉比在变换前后保持不变;通过同一割线上相应各点的线束的交叉比在变换前后也保持不变。
(2) 仿射变换是一种比较简单的一次变换,其表达式为公式(5-5)。
式中3对待定系数,只要知道不在同一直线上的3个对应点坐标都可求得。实际应用时,往往利用4个以上对应点坐标和最小二乘方法求解变换系数,以提高变换精度。
仿射变换的特点是:直线变换后仍为直线;平行线变换后的仍为平行线,并保持简单的长度比;不同方向上的长度比发生变化。
5.4. 空间数据的压缩与光滑
在空间数据输入计算机后,有时为了减少数据的存贮量节省存贮空间,加快后继处理速度,把大量的原始数据转换为有用的、有条理的、精炼而简单的信息的过程,这就称为数据简化或数据压缩。数据压缩的主要对象是线状要素中心轴线和面状要素边界数据。相反,在进行图形输出时,又需要将以前压缩的数据恢复成其原本来面目,必须对它们进行光滑,这称为曲线光滑。
5.4.1. 数据压缩
常用的数据压缩方法有如下几种。
间隔取点法
每隔k个点取一点,或每隔一规定的距离取一点,但首末点一定要保留。这种方法可大量压缩数字化使用连续方法获取的点和栅格数据矢量化而得到的点,但不一定能恰当地保留方向上曲率显著变化的点。
垂距法
这种方法是按垂距的限差选取符合或超过限差的点,其方法如图5-10所示。P2点的垂距大于限差,应保留;P3点的垂距小于限差,予以舍弃。
合并法(偏角法)
这个方法是沿着边界线,逐点计算通过当前点Pj的两条直线Lj1和Lj2之间的夹角αj,其中Lj1是经过Pj和Pj-k0两点的直线,而Lj2是经过Pj和Pj+k0这两点的直线。若|αj|小于某一阈值αo,那么就认为Pj是一应保留点。这个方法如图5-11所示。
分裂法(道格拉斯-普克法)
这个方法可用以下几步来描述:
-
在给定的曲线的两端之间连一直线。
-
对曲线上每一点计算它与直线的垂直距离。若所有这些距离均小于某一阈值εo,那么就用它来表示原曲线。
-
若(2)中条件不满足,含有最大垂直距离的点Pj为保留点将原曲线分成两段曲线,对它们递归地重复使用分裂法。
此法试图保持曲线走向和允许使用人员规定合理的限差,其执行过程如图5-12所示。图中,实线为原曲线,虚线为压缩后的曲线。
5.4.2. 曲线光滑(曲线拟合)
曲线光滑是假想曲线(或接近它们的曲线)为一组离散点,寻找形式比较简单、性能良好的曲线解析式。曲线光滑有两种方式: 插值方式与逼近方式,前者所得到的曲线通过原先给定的离散点;而后者的曲线与所给的离散点相当“接近”。拉格朗日插值曲线(David F. Rogers,1981)和三次参数曲线是插值方式的曲线,贝齐尔曲线(Bezier)和B样条曲线是逼近方式的曲线。另外还有分段圆弧法、分段三次多项式插值法等方法。
5.5. 图形变换
对于输入计算机中的图形数据,有时因为比例尺不符,或为了实现地图的合成与排版,需要对这些图形数据进行几何变换(线性变换),可满足地理信息系统应用的要求。此外,地理信息系统所要表达、管理以及分析的对象是空间实体,为了能在二维空间(屏幕或绘图仪)上表示三维物体,就需进行三维空间到二维空间的变换,这种变换称为投影变换。
5.5.1. 二维几何变换
二维几何变换包括平移、比例和旋转变换。我们假设变换前和变换后的图形坐标分别用(x、y)和( x′、y′)表示。
(1) 平移、比例和旋转变换
平移变换
如图5-13(a)所示,它使图形移动位置。新图p′的每一图元点是原图形p中每个图元点在x和y方向分别移动Tx和Ty产生,所以对应点之间的坐标值满足关系式(5-6)。
x′ = x + Tx 和 y′ = y + Ty(公式5-6)
可利用矩阵形式表示成公式(5-7)。
[x′ y′]=[x y]+[Tx Ty](公式5-7)
简记为P′ = P + T,T =[Tx Ty]是平移变换矩阵(行向量)。
比例变换:如图5-13(b)所示,它改变显示图形的比例。新图形p′的每个图元点的坐标值是原图形p中每个图元点的坐标值分别乘以比例常数Sx和Sy,所以对应点之间的坐标值满足关系式(5-8)
x′ = x · Sx 和 y′ = y · Sy(公式5-8)
可利用矩阵形式表示成公式(5-9)。简记成p′=P·S,其中S是比例变换矩阵。
旋转变换
图形相对坐标原点的旋转如图5-13(c)所示,它产生图形位置和方向的变动。新图形P′的每个图元点是原图形P每个图元点保持离坐标原点距离不变并绕原点旋转θ角产生的,以逆时针方向旋转为正角度,对应图元点的坐标值满足关系式(5-10)。
x′=xcosθ-ysinθ 和 y′=xsinθ+ycosθ(公式5-10)
用矩阵形式表示成公式(5-11)。简记为P′=P·R,其中R是旋转变换矩阵。
(2) 齐次坐标系
在上述三种变换中,比例和旋转变换都是作矩阵乘法。如果这样的变换进行组合,例如旋转变换后再作比例变换,我们可得P″=P′·S=(P·R)S。按照矩阵乘法的性质,我们可得(P·R)·S=P·(R·S),其中(R·S)构成组合变换矩阵。若许多图形进行相同的变换,则利用组合变换可减少运算量。但是平移变换却有形式P′=P+T,如果也能够采用矩阵的相乘形式,则三种变换便能利用矩阵乘法任意组合了。
采用几何学中的齐次坐标系可达到此目的。即n维空间中的物体可用n+1维齐次坐标空间来表示。例如二维空间直线ax+by+c=0,在齐次空间成为aX+bY+cW=0,以X、Y和W为三维变量,构成没有常数项的三维平面(固此得名齐次空间)。点P(x、y)在齐次坐标系中用P(wx,wy,w)表示,其中W是不为零的比例系数。所以从n维的通常空间到n+1维的齐次空间变换是一到多的变换,而其反变换是多到一的变换。例如齐次空间点P(X、Y、W)对应的笛卡尔坐标是x=X/W和y=Y/W。将通常笛卡尔坐标用齐次坐标表示时,W的值取1。齐次坐标系中的基本二维几何变换可表示成:
比例变换见公式(5-13)。
绕坐标原点旋转变换见公式(5-14)。
(3) 变换的组合
在齐次坐标中三种基本变换都用矩阵乘法表示,从而可以通过基本变换矩阵的连乘来实现变换组合,以达到特殊变换的目的。例如,将图形绕任意点A(xr,yr)进行旋转变换。该变换可分成三个步骤来实现:利用平移变换T1(-Xr,-Yr)移动图形,使点(Xr,Yr)移至坐标原点;利用旋转变换R(θ)产生绕在坐标原点的A点的旋转;再利用平移变换T2(Xr,Yr)移动旋转后的图形,使A点回到(Xr,Yr)处。
任意矩阵的乘法满足结合律不满足交换律,在进行连续变换时一定要按变换次序对变矩阵求积后才得总的变换矩阵。这和在图形变换中不同次序的变换会产生不同的变换结果相一致。
5.5.2. 投影变换
实际物体都是三维的,可以在三维直角坐标系中描述,但显示屏是二维的,所以最终还是用二维图形基元产生图形。从三维物体模型描述到二维图形描述的转换过程称为投影变换。确切地说,从空间选定的一个投影中心和物体上每点连直线便构成了一簇射线,射线与选定的投影平面的交点集便是物体的投影。投影变换分类见图5-15。
平行投影与透视投影间的区别在于投影射线是相互平行还是汇聚于一点,或说投影中心是在无限远处还是在有限远处(见图5-16 和5-17),正平行投影与斜平行投影的区别在于投影线是否与投影平面垂直。
平行投影图是物体向投影平面做平行投影所产生的图形。例如在机械制图中的三视图就是三维向二维作特殊的平行投影-正投影的结果(见图5-18)。这种投影实感性较差,这是因为在一个视图上只能表现物体的两个方向的情况。如果改变投影面体系中物体的位置,或者是物体不变而选择另一个投影方向,使在一个图中同时出现物体三个方向的情形,那么,投影图的实感性便会显著增强,如正轴测投影和斜平行投影(见图5-19)。
透视投影属于中心投影,它比轴测投影更富有立体感和真实感,因为它能正确的表现出远近和层次关系,使观察者获得立体的、有深度的空间感觉。
5.6. 图幅拼接处理
随着GIS应用领域的不断扩大,如城市规划系统、地下管网管理系统、土地管理系统、公安警用系统等,由于其管理的数据量很大,且比例尺也大。所以,靠对单幅图的管理已不能适应应用的需要。目前,象上述这样的一些GIS应用系统,多数都是以图幅为单位进行管理。即按图幅将大区域空间数据进行分割,现在世界各国的一般方法是采用经纬线分幅或采用规则矩形分幅,如图5-20所示。
采用分幅管理空间数据就势必造成一个空间实体会分属多个图幅,对于整个空间而言,就不能保证正确的拓扑关系。怎样做到既能按分幅数字化录入、存储和管理空间数据,又能够将分属不同图幅的同一目标建立起正确的联系,以利于对整个空间数据进行正确的检索、分析和统计等功能的实现,正成为GIS开发人员讨论的话题。
在相邻图幅的边缘部分,由于原图本身的数字化误差,使得同一实体的线段或弧段的坐标数据不能相互衔接,或是由于坐标系统,编码方式等不统一,因此需进行图幅数据边缘匹配处理。
图幅的拼接总是在相邻两图幅之间进行的。要将相邻两图幅之间的数据集中起来,就要求相同实体的线段或弧段的坐标数据相互衔接,也要求同一实体的属性码相同,因此必须进行图幅数据边缘匹配处理。图5-21是两幅图拼接示例。
下面以MAPGIS图幅接边为例介绍接边步骤。
创建或打开图库文件
(1)创建新库文件:建立新图库。 (2)打开图库文件:将已存在的图库装入系统,图库文件名后缀为“*.DBS” 。
添加库类
向图库中添加新的库类(含有新的属性结构的文件类)。
输入图幅
向图库输入或添加图幅(有统一图幅大小、比例尺、分幅方式等参数)。
图幅接边
消除相邻图幅接合处的连接误差,包括自动化接边和交互式接边。
图幅检索
建立图库的一个重要目的是便于用户进行检索查询。其中包括:图幅区域检索、图元属性检索、图元层号检索、图元参数检索。 注:若图库已建好,已输入全部图幅并完成图幅拼接,则图形库的使用只需“打开图库文件”和“图幅检索”两个步骤。
5.7. 栅格数据与矢量数据的互相转换
在地理信息系统领域里,栅格数据与矢量数据各有千秋,它们互为补充,必要时互相转换,这是由地理信息系统处理方式以及这两种数据格式各自的特点所决定的。
5.7.1. 矢量数据转换成栅格数据
点的栅格化
习惯上,矢量数据中的点坐标用X、Y来表示,而在栅格数据中,像元的行、列号用I、J来表示。如图5-20,设O为矢量数据的坐标原点,O′(Xo,Yo)为栅格数据的坐标原点。格网的行平行于X轴,格网的列平行于Y轴。A为制图要素的任一点,则该点在矢量和栅格数据中可分别表示为(X,Y)和(I,J)。
由图5-22,不难理解,将点的矢量坐标X、Y转换算为栅格行、列号的公式为(5-22)。式中,DX、DY分别表示一个栅格的宽和高,当栅格通常为正方形时,DX=DY,[]表示取整。
线段的栅格化
在矢量数据中,曲线是由折线来逼近的。因此只要说明了一条直线段如何被栅格化,对任何线划的栅格化过程也就清楚了。图5-23说明了线划栅格化的二种不同方法,即八方向栅格化和全路径栅格化。
(1) 八方向栅格化
根据矢量的倾角情况,在每行或每列上,只有一个像元被“涂黑”。其特点是在保持八方向连通的前提下,栅格影像看起来最细,不同线划间最不易“粘连”。设1和2为一条直线段的两个端点,其坐标分别为(X1,Y1)、(X2,Y2)。先按上述点的栅格化方法,确定端点1和2所在的行、列号(I1 ,J1)及(I2,J2),并将它们“涂黑”。然后求出这两点位置的行数差和列数差。若行数差大于列数差,则逐行求出本行中心线与过这两点的直线的交点,将其所在的栅格“涂黑”;若行数差小于等于列数差,则逐列求出本列中心线与过这两个端点的直线的交点,需进行浮点乘法和加法运算,计算量较大。目前,用的较多的矢量数据栅格化的算法是Bresenham算法,该算法仅用整数加法和乘法运算,请读者参考有关书籍。
(2) 全路径栅格化
全路径栅格化是一种“分带法”,即按行计算起始列号和终止列号(或按列计算起始行号和终止行号)的方法,见图5-23(b)。基于矢量的首末点和倾角a的大小,可以在带内计算出行号或列号(Ia,Ie或Ja,Je):
当|X2- X1|<|Y2- Y1|时,计算行号Ia,Ie;
当|X2- X1|≥|Y2- Y1|时,计算列号Ja,Je。
下面给出|X2-X1|≥|Y2-Y1|时的计算过程。
设当前处理行为第i行,像元边长为m,转换步骤为:
① 计算矢量倾角α的正切;
tgα =(Y2- Y1)/(X2- X1)
② 计算起始列号Ja:
③ 计算终止列号Je:
④ 将第i行从Ja列开始到Je列为止的中间所有像元“涂黑”;
⑤ 若当前处理行不是终止行,则:把本行终止列号Je作为下行的起始列号Ja;行号i增加1,并转③。否则本矢量段栅格化过程结束。
要注意,需将矢量段首点和末点所在的栅格列号分别作为第一行的Ja和最后一行的Je的限制条件,以免使栅格影像变长失真;当首、末点的行号相同时,则直接在首、末两点Ja与Je间“涂黑”就行;若Y2>Y1,则需将首、末点号互换后再使用上式。
当要以任何方向探测栅格影像的存在或者需要知道矢量可能只出现在哪些栅格所覆盖的范围时,全路径栅格化数据结构最为理想。
面域的栅格化
面域的栅格化可用种子点填充算法或扫描线种子点填充算法,这两种方法都须先用上述的线段栅格化将面域的边线栅格化且填上边界色;后将填充区内任一点作为填充种子。
(1) 种子点填充算法
可采用递归方式实现种子点填充算法:对符合填充条件的种子点近邻点赋以和种子点相同的象素值,并以它们作为新的种子点再进行同样的近邻填充,直至不再产生新种子。
算法表示成:
Seed-Fill-4(x,y,con,value)
{ if (pixel(x,y)<>con)
{ putpixel(x,y,value);
for (i=-1,i<=1;i=i+2)
Seed-Fill-4(x+i,y,con,value);
for (i=-1;i<1;i=i+2)
Seed-Fill-4(x,y+i,con,value);} }
算法中,con为面域的边界色,value为欲填充色。
(2) 扫描线种子点填充算法
作为上面介绍的简单种子点算法的改进,扫描线种子点填充算法是将每个扫描行中连续待填充段作为一个处理单位,因而减少了对栈空间大小的需求。其算法过程是:
① 选择一个种子点Seed(x,y),并将其存入栈内。
② 若栈已空,算法结束,否则执行③。
③ 从栈中取出要填色的像素,对在同一扫描线上与该点相连的所有需要填色的点进行填色操作,记下进行填色的最左和最右位置: Xleft和Xright。
④ 对③的上一行和下一行扫描,在Xlef≤x≤Xright范围内,考察是否全是边界点或已被填色的点,若不完全是,则将要填色的每一段最右位置作为新的种子点存入栈。
⑤ 回到②。
5.7.2. 栅格数据转换成矢量数据
点的矢量化
对于任意一个栅格点A而言,将其行、列号I、J转换为其中心点的X、Y的公式如下: X=Xo+(J-0.5)·DX;Y=Yo-(I-0.5)·DY (公式5-25)。
线状栅格影像的矢量化
线状栅格影像的矢量化一般采用两种算法思想: 细化矢量化和非细化矢量化。所谓细化矢量化就是首先将具有一定粗细的线状影像进行细化,提取其中轴线(单像素)。然后再沿其中轴线栅格数据进行跟踪矢量化。非细化矢量化的算法思想是不需对线条进行细化,而是从线条上任一点起,先后往线条两端进行跟踪矢量化,其跟踪的判断依据就是起始点处线条的宽度。比较两种算法思想,后者更优于前者,因为细化矢量化除有速度慢的不足外,其矢量化后线条会因为细化而造成线条两头缩短,且会因为线条粗细不匀而造成矢量化的线有毛刺现象。
面状栅格数据的矢量化
对于面状栅格数据进行矢量化,只要通过逐行扫描,先找到一个要素集合的边缘点,然后沿面状要素的边缘跟踪,直到整个面域的边界(包括外沿及可能的各内沿)跟踪结束(即封闭)为止。在跟踪过程中,随时将被跟踪到的栅格位置Ik,Jk(k=1,2,…,n)按(5-4)式转换为矢量坐标Xk,Yk,并加以记录。对被矢量化了的面域作上标记,以便在寻找未被矢量化的其它面域时,将其排除。
5.8. 习题
1.数据处理这一步骤在使用GIS系统过程中起什么作用?主要包括哪些内容?
2.误差校正和图形编辑有何区别?各用于什么情况?
3.一般GIS系统中有哪几个坐标系?在什么情况下需做它们之间的转换?
4.图形编辑的主要步骤是什么?
5.什么是图元捕捉?点、线、面图元捕捉分别采用什么方法?
6.线元端点匹配起什么作用?通常怎样实现?
7.多边形自动生成的目的就是要建立什么拓扑关系?怎样建立?
8.为什么要做数据压缩和数据光滑?它们的基本原理各是什么?不同的方法对处理后的效果有什么影响?
9.图形变换中的投影变换和地图投影变换各是什么含义?它们各用于什么情况?
10.为什么需要进行图幅拼接?怎样实现?
11.GIS系统中,为什么需做栅格数据和矢量数据之间的转换?这些转换有哪些算法?