第四章 空间数据的处理
本章概述:通过前面的课程,我们学习了GIS的数据源、数据结构、数据模型、数据编码、数据质量控制等等有关GIS数据的基本知识。由于数据获取方法的不同和对数据用途的不同要求,我们所采集的GIS数据往往存在问题、错误或者不符合用途要求的情况,这些数据必须通过数据处理才能达到应用的要求。本章将介绍空间数据处理的基本内容、途径和算法。
§4.1 矢量数据拓扑关系的自动建立
矢量数据拓扑关系在空间数据的查询与分析中非常重要,矢量数据拓扑关系自动建立的算法是GIS中的关键算法之一,这里介绍其实现的基本步骤和要点。
§4.2 矢量数据的图形编辑
图形编辑是纠正数据采集错误的重要手段,其基本的功能要求是:具有友好的人机界面;具有对几何数据和属性编码的修改功能;具有分层显示和窗口功能。图形编辑的关键是点、线、面的捕捉。
§4.3 空间数据的坐标变换
图形编辑只能消除数字化产生的明显误差,而图纸变形产生的误差难以改正,因此要进行几何纠正。几何纠正常用的有高次变换、二次变换和仿射变换。 §4.4 空间数据的压缩处理
矢量数据压缩的目的是删除冗余数据,减少数据的存贮量,节省存贮空间,加快后继处理的速度。矢量方法有道格拉斯——普克法(Douglas—Peucker)、垂距法、光栏法、并对几种方法进行比较。栅格数据的压缩包括直接栅格编码、游程长度(行程)编码、四叉树编码。
§4.5 空间数据的结构变换
介绍矢量——栅格转换和栅格——矢量转换。矢量─栅格转换有线的栅格化方法、和面(多边形)的栅格化方法。 线的栅格化方法包括DDA法(数字微分分析法)、Bresenham算法。 面(多边形)的栅格化方法包括内部点扩散法、扫描法、和边填充算法。栅格数据到矢量数据转换的一般过程可描述为:二值化、二值图像的预处理、细化、追踪、拓扑化。
§4.6 空间数据的插值方法
在已观测点的区域内估算未观测点的数据的过程称为内插;在已观测点的区域外估算未观测点的数据的过程称为外推。常用的内插方法有:边界内插、趋势面分析、局部内插、移动平均法。
§4.7 图像数据的处理方法
一幅图像经过生成、复制、扫描、传输、变换后,由于多种因素的影响,图像的质量不能满足要求,这时就需要进行图像增强处理。图像增强的目的是改善图像的效果,以更适应人眼的观察或计算机的处理。基本的图像增强方法有:灰度级的修整、空域处理、频域处理。
§4.8 空间数据的更新处理
GIS的生命力将最终取决于其空间数据库的现势性,遥感数据是GIS的重要信息源和数据更新的手段。全球卫星定位系统(GPS)作为一种新型的定位数据的采集和更新手段,具有高精度、高效益、全天候、低成本、高灵活性、实时性等特有的优势,因而在GIS中具有重要的应用价值。
您可能还想看前贴【GIS原理学习(一)】【GIS原理学习(二)】【GIS原理学习(三)】【GIS原理学习(四)】【GIS原理学习(五)】【GIS原理学习(六)】【GIS原理学习(七)】【GIS原理学习(八)】【GIS原理学习(九)】【GIS原理学习(十)】【GIS原理学习(十一)】【GIS原理学习(十二)】【GIS原理学习(十三)】【GIS原理学习(十四)】【GIS原理学习(十五)】【GIS原理学习(十六)】【GIS原理学习(十七)】【GIS原理学习(十八)】【GIS原理学习(十九)】【GIS原理学习(二十)】【GIS原理学习(二十一)】
§4.5 空间数据的结构转换
栅格数据与矢量数据的最大区别是前者用元子空间充填集合表示,后者用点串序列表达边界形状及分布。因此栅格数据面向空间的数据结构在布尔运算、整体操作特征计算及空间检索方面有着明显的优势,而矢量数据面向目标的数据结构则很容易实现模型生成、目标显示及几何变换。鉴于栅格与矢量两种数据结构的优劣互补性,研究栅格矢量一体化数据结构已成为新一代GIS软件开发的基础。
一、矢量─栅格转换
栅格数据面向空间的数据结构在布尔运算、整体操作特征计算及空间检索方面有着明显的优势。矢量向栅格的转换能利用栅格数据格式的优点。由于矢量数据的点到栅格数据的点只是简单的坐标变换,所以,这里主要介绍线和面(多边形)的矢量数据向栅格数据的转换。先介绍线的栅格化方法,然后介绍面(多边形)的栅格化方法。线的栅格化方法包括DDA法(数字微分分析法)和Bresenham算法。面(多边形)的栅格化方法有内部点扩散法、扫描法、边填充算法。
图4-5-1矢量数据向栅格转换图
二、栅格—矢量转换
矢量数据面向目标的数据结构则很容易实现模型生成、目标显示及几何变换。栅格数据向矢量转化可以利用矢量数据的优点。栅格数据到矢量数据转换的一般过程二值化、二值图像的预处理 、细化、追踪、拓扑化。
图4-5-2 栅格数据向矢量转换图
一、矢量─栅格转换
由于矢量数据的点到栅格数据的点只是简单的坐标变换,所以,这里主要介绍线和面(多边形)的矢量数据向栅格数据的转换。
1、线的栅格化方法
线是由多个直线段组成的,因此,线的栅格化的核心就是直线段如何由矢量数据转换为栅格数据。

图4-5-1
设直线段的两端点坐标转换到栅格数据的坐标系后为(xA,yA),(xB,yB)。则栅格化的两种常用方法为DDA法(数字微分分析法)和Bresenham法。nbsp;
1°、DDA法(数字微分分析法)
如图4——24所示,设(xA,yA),(xB,yB)与栅格网的交点为(xi,yi),则:
其中:
这样从i=0计算到i=n-1,即可得直线与格网的n个交点坐标,对其取整就是该点的栅格数据了。
该方法的基本依据是直线的微分方程,即dy∕dx=常数。其本质是用数值方法解微分方程,通过同时对x和y各增加一个小增量来计算下一步的x,y值,即这是一种增量算法。
在该算法中,必须以浮点数表示坐标,且每次都要舍入取整,因此,尽管算法正确,但速度不够快。
|

|

|
|
图4-5-2 |
图4-5-3 |
2°、Bresenham算法
该算法原来是为绘图机设计的,但同样适合于栅格化。该算法构思巧妙,只需根据由直线斜率构成的误差项的符号,就可确定下一列坐标的递增值。
根据直线的斜率,把直线分为8个卦限(如图4-5-2)。下面举斜率在第一卦限的情况为例,其余卦限的情况类似。
该算法的基本思路可描述为:如图4-5-3,若直线的斜率为1∕2≤△y∕△x≤1,则下一点取(1,1)点,若0≤△y∕△x<1∕2,则下一点取(1,0)点。
在算法实现时,令起始的误差项为e=-1∕2,然后在推断出下一点后,令e=e+△y∕△x[SX)],若e≥0时,e=e-1。这样只要根据e的符号就可确定下一点的增量,即:
若e≥0,取(1,1)点
若e<0,取(1,0)点
为避免浮点运算,可令初值e’=e×2×△x=2×△y-△x(当△x≥0时,与e同号)。
当e’>0时,y方向获增量1,即令e’=e’-2×△x;
一般情况下e’=e’+2△y
例如,一直线的斜率为1∕3(如图4-5-4)。
起始点:e=-1∕2, 即e’=-3, 取点①
第2点:e=-1∕2 + 1∕3=-1∕6,e’=-3+2△y=-1取点②
第3点:e=-1∕6 + 1∕3 = 1∕6,即e’=-1+2=1, 取点③且e=-5/6,e’=-3;
第4点:e=1∕6 + 1∕3 = 1∕2 >0,即e’=-5+2=-3, 取点④
因e≥1∕2,所以,e=1∕2-1=-1∕2。
依次进行,直到到达直线的另一端点。
这种算法不仅速度快、效果好,而且可以理论上证明它是目前同类各种算法中最优的。

图4-5-4

图4-5-5
二、栅格─矢量转换
栅格数据到矢量数据转换的一般过程可描述为:
1、二值化
由于扫描后的图像是以不同灰度级存储的,为了进行栅格数据矢量化的转换,需压缩为两级(0和1),这就称为二值化。
二值化的关键是在灰度级的最大和最小值之间选取一个阈值,当灰度级小于阈值时,取值为0,当灰度级大于阈值时,取值为1。阈值可根据经验进行人工设定,虽然人工设定的值往往不是最佳阈值,但在扫描图比较清晰时,是行之有效的。当扫描图不清晰时,需由灰度级直方图来确定阈值,其方法为:
设M为灰度级数,Pk为第k级的灰度的概率,nk为某一灰度级的出现次数,n为像元总数,则有:
Pk=nk∕n k=1,…,M

图4-5-9
对于地图,通常在灰度级直方图上出现两个峰值(见图4-5-9),这时,取波谷处的灰度级为阈值,二值化的效果较好。
2、二值图像的预处理
对于扫描输入的图幅,由于原稿不干净等原因,总是会出现一些飞白、污点、线划边缘凹凸不平等。除了依靠图像编辑功能进行人机交互处理外,还可以通过一些算法来进行处理。
例如用3×3的象素矩阵,规定各种情况的处理原则,图4-5-10是两个简单的例子:

图4-5-10
其中“×”表示任何象素值。
除了上述方法外,还可用其它许多方法。例如,对于飞白和污点,给定其最小尺寸,不足的消除;对于断线,采取先加粗后减细的方法进行断线相连;用低通型滤波进行破碎地物的合并,用高通滤波提取区域范围等等。
3、细化
所谓细化就是将二值图像像元阵列逐步剥除轮廓边缘的点,使之成为线划宽度只有一个像元的骨架图形。细化后的图形骨架既保留了原图形的绝大部分特征,又便于下一步的跟踪处理。
细化的基本过程是:(1)确定需细化的像元集合;(2)移去不是骨架的像元;(3)重复,直到仅剩骨架像元。
细化的算法很多,各有优缺点。经典的细化算法是通过3×3的像元组来确定如何细化的。其基本原理是,在3×3的像元组中,凡是去掉后不会影响原栅格影像拓扑连通性的像元都应该去掉,反之,则应保留。3×3的像元共有2 8 即256种情况,但经过旋转,去除相同情况,共有51种情况,其中只有一部分是可以将中心点剥去的,如图4-5-11(1)、(2)是可剥去的,而(3)、(4)的中心点是不可剥去的。通过对每个像元点经过如此反复处理,最后可得到应保留的骨架像元。
图4-5-11
如果是对扫描后的地图图像进行细化处理,应符合下列基本要求:
1°、保持原线划的连续性;
2°、线宽只为一个像元;
3°、细划后的骨架应是原线划的中心线;
4°、保持图形的原有特征。
4、追踪
细化后的二值图像形成了骨架图,追踪就是把骨架转换为矢量图形的坐标序列。其基本步骤为:
1°、从左向右,从上向下搜索线划起始点,并记下坐标。
2°、朝该点的8个方向追踪点,若没有,则本条线的追踪结束,转(1)进行下条线的追踪;否则记下坐标。
3°、把搜索点移到新取的点上,转2°。
注意的是,已追踪点应作标记,防止重复追踪。
5、拓扑化
为了进行拓扑化,需找出线的端点和结点,以及孤立点。
1°、孤立点:8邻城中没有为1的像元。如图4-5-12(1)。
2°、端点:8邻城中只有一个为1的像元。如图4-5-12(2)。
3°、结点:8邻城中有三个或三个以上为1的像元。如图4-5-12(3)。
图4-5-12
在追踪时加上这些信息后,就可形成结点和孤段,就可用矢量数据的自动拓扑方法进行拓扑化了。