[GIS算法] 拓扑关系

在知识传播途中,向涉及到的相关著作权人谨致谢意!

拓扑关系

「拓扑空间关系」

  1. 一种对空间结构进行明确定义的数学方法

  2. 拓扑空间关系信息是空间分析、辅助决策等的基础,也是GIS区别于CAD(计算机辅助设计)等的主要标志

  3. 对于拓扑关系的自动建立问题,研究的焦点是如何提高算法与过程的效率和自动化程序

数据结构

「拓扑数据结构」

  1. 具有拓扑关系的矢量数据结构就是拓扑数据结构

  2. 拓扑数据结构是地理信息系统分析和应用功能所必须的,它描述了基本空间目标点、线、面之间的关联、邻接和包含关系

基本数据结构说明数据结构异常
拓扑结点结点用来检测弧段与弧段的连接关系和多边形特征是否能正确地完成在这里插入图片描述「悬挂结点」只与一条弧段相连接的起点或终点在这里插入图片描述
拓扑弧段弧段指处于两个结点之间的点序列串,并且具有方向在这里插入图片描述「悬挂弧段」起始结点或终止结点只与一条弧段相关联在这里插入图片描述
拓扑面由一条或若干弧段首尾相连接而成的边线所包含的区域在这里插入图片描述在这里插入图片描述
三者关系在这里插入图片描述

拓扑关系的自动建立

「拓扑关系自动生成算法的一般过程」

  1. 没有相交或自相交的弧段:弧段处理,使整幅图形中的所有弧段,除在端点处相交外,没有其他交点

  2. 结点匹配,建立结点、弧段关系

  3. 建立多边形,以左转算法或右转算法跟踪,生成多边形,建立多边形与弧段的拓扑关系

  4. 建立多边形与多边形的拓扑关系。调整弧段的左右多边形标志号。多边形内部标识号的自动生成

「拓扑关系自动生成算法的其他过程」

  1. 弧段两端角度的计算
  2. 悬挂结点和悬线的标识
  3. 多边形面积计算
  4. 点在多边形内外的判别

弧段的预处理

「弧段预处理」使得弧段不存在自相交和相交现象

直线段相交的判断方法

在这里插入图片描述

自相交弧段处理

在这里插入图片描述

在这里插入图片描述

弧段相交打断处理

「弧段相交打断处理」弧段与弧段相交关系的判断,可以采用两两判断的方法,即要进行n(n-1)/2次判断

  1. 取出第一条弧段,与其他n-1条弧段进行相交判断
  2. 求得交点后,将交点分别插入第一条弧段和与其相交弧段的对应位置上,并记录位置
  3. 将第一条弧段与所有其他弧段的相交关系判断完毕后,通过记录下的交点位置将第一条弧段分割,然后依次取出下一条弧段进行同样的处理,直到所有的弧段处理完毕

「减少工作量」在判断两条弧段的关系时,应尽可能地减少计算量,可采用类似于快速排斥+跨立实验的计算方法减少工作量

「C++实现」参见《地理信息系统算法基础》P109

结点匹配算法

处理完弧段之后,就可以进行结点匹配了。

「结点匹配」把一定容差范围内的弧段结点合并称为一个结点,其坐标值可以是取多个结点的平均值,或者选中一个结点作为所有结点的中心坐标

在这里插入图片描述

「结点匹配的思路」每条弧段对应着两个结点,每个结点在合并前对应着一条弧段,在合并结点的过程中,需要将结点对应的弧段也合并在一起

  1. 将所有的结点加入结点集合
  2. 从结点集合中取出一个结点作为中心点,从余下的结点中找出容差范围内的其他结点,将这些结点所对应的弧段加入中心结点的弧段集合中,同时将弧段的对应结点变为中心结点,并修改弧段的相应坐标

「C++实现」参见《地理信息系统算法基础》P113

建立拓扑关系

计算结点关联弧段的方位角,并按由小到大排序

「弧段的方位角」每个结点都关联有若干条弧段,结点、弧段的头结点、为弧段的尾结点,设结点为N,则弧段的方位角定义为:结点N与弧段上与其最接近的结点V的连线与X轴的正向夹角

在这里插入图片描述

「算法」

在这里插入图片描述

左转算法

「左转算法基本思路」从组成多边形边界的某一条弧段开始

  1. 如果该弧段的方向角最小或介于同一结点的其他弧段方向角之间,则逆时针方向寻找最小夹角偏差所对应的弧段为多边形的后续弧段
  2. 如果该弧段与x轴正向夹角为最大,则从该弧段的同一结点出发的其他弧段中,方向角最小的弧段是该多边形的后续弧段

「算法描述」参见《地理信息系统算法基础》P115

岛的判断

「岛的判断」指找出多边形互相包含的情况,即寻找复杂多边形。找到岛后才可以完成多边形的拓扑关系的建立

「算法描述」参见《地理信息系统算法基础》P116

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页