[GIS算法] 拓扑关系

在知识传播途中,向涉及到的相关著作权人谨致谢意!
文章目录结点匹配算法建立拓扑关系
拓扑关系
「拓扑空间关系」
一种对空间结构进行明确定义的数学方法
拓扑空间关系信息是空间分析、辅助决策等的基础,也是GIS区别于CAD(计算机辅助设计)等的主要标志
对于拓扑关系的自动建立问题,研究的焦点是如何提高算法与过程的效率和自动化程序
数据结构
「拓扑数据结构」
具有拓扑关系的矢量数据结构就是拓扑数据结构
拓扑数据结构是地理信息系统分析和应用功能所必须的,它描述了基本空间目标点、线、面之间的关联、邻接和包含关系
基本数据结构说明数据结构异常
拓扑结点
结点用来检测弧段与弧段的连接关系和多边形特征是否能正确地完成
「悬挂结点」只与一条弧段相连接的起点或终点
拓扑弧段
弧段指处于两个结点之间的点序列串,并且具有方向
「悬挂弧段」起始结点或终止结点只与一条弧段相关联

[GIS算法] 拓扑关系

文章插图
拓扑面
由一条或若干弧段首尾相连接而成的边线所包含的区域
三者关系
拓扑关系的自动建立
「拓扑关系自动生成算法的一般过程」
没有相交或自相交的弧段:弧段处理,使整幅图形中的所有弧段,除在端点处相交外,没有其他交点
结点匹配,建立结点、弧段关系
建立多边形,以左转算法或右转算法跟踪,生成多边形,建立多边形与弧段的拓扑关系
建立多边形与多边形的拓扑关系 。调整弧段的左右多边形标志号 。多边形内部标识号的自动生成
「拓扑关系自动生成算法的其他过程」
弧段两端角度的计算悬挂结点和悬线的标识多边形面积计算点在多边形内外的判别 弧段的预处理
「弧段预处理」使得弧段不存在自相交和相交现象
直线段相交的判断方法
自相交弧段处理
弧段相交打断处理
「弧段相交打断处理」弧段与弧段相交关系的判断,可以采用两两判断的方法,即要进行n(n-1)/2次判断
取出第一条弧段,与其他n-1条弧段进行相交判断求得交点后,将交点分别插入第一条弧段和与其相交弧段的对应位置上,并记录位置将第一条弧段与所有其他弧段的相交关系判断完毕后,通过记录下的交点位置将第一条弧段分割,然后依次取出下一条弧段进行同样的处理,直到所有的弧段处理完毕
「减少工作量」在判断两条弧段的关系时,应尽可能地减少计算量,可采用类似于快速排斥+跨立实验的计算方法减少工作量
「C++实现」参见《地理信息系统算法基础》P109
结点匹配算法
处理完弧段之后,就可以进行结点匹配了 。
「结点匹配」把一定容差范围内的弧段结点合并称为一个结点,其坐标值可以是取多个结点的平均值,或者选中一个结点作为所有结点的中心坐标
「结点匹配的思路」每条弧段对应着两个结点,每个结点在合并前对应着一条弧段,在合并结点的过程中,需要将结点对应的弧段也合并在一起
将所有的结点加入结点集合从结点集合中取出一个结点作为中心点,从余下的结点中找出容差范围内的其他结点,将这些结点所对应的弧段加入中心结点的弧段集合中,同时将弧段的对应结点变为中心结点,并修改弧段的相应坐标
「C++实现」参见《地理信息系统算法基础》P113
建立拓扑关系 计算结点关联弧段的方位角,并按由小到大排序
「弧段的方位角」每个结点都关联有若干条弧段,结点、弧段的头结点、为弧段的尾结点,设结点为N,则弧段的方位角定义为:结点N与弧段上与其最接近的结点V的连线与X轴的正向夹角