浏览:359 2008-06-22 08:46 来自 【组长】刚刚      :

第四章 空间数据的处理    

 本章概述通过前面的课程,我们学习了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

    在追踪时加上这些信息后,就可形成结点和孤段,就可用矢量数据的自动拓扑方法进行拓扑化了。

收藏 楼主

注册用户登录后才能回复,登录注册
> 返回“GIS开发”


其他话题

相关内容

相关链接

1 18409