Esri 在处理拓扑操作时大量使用了半边结构,首先对所有边做半边转化,之后再建立各个半边之间的邻接关系,最终得到拓扑关系,得到的边拓扑关系供求交、补、并等拓扑分析使用。
所谓半边结构,简单说来是对一个边的一分为二。
分开之后我们也就把共线多边形成功转化成各取一边的非共线多边形,成功分割了有交集的多边形。
一个正确的半边结构会保存:
整边:生成半边的整边
半边1:另一个半边
顶点1:半边指向的顶点
顶点2:顶点发出的半边
半边2:指向的下一个半边(所以是链表)
看图!
这样我们也就能根据半边们的连接顺序判断内部围成的图形是否为空。
具体的半边结构文章有好多我也不好来抄,在此给大家做个推荐:
最易懂的原理(多图):
https://blog.csdn.net/geek4it/article/details/8155904
数据结构和代码:
http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml(老外的)
https://blog.csdn.net/lafengxiaoyu/article/details/51524361(上个链接的翻译)
三维原理和代码:
https://blog.csdn.net/lafengxiaoyu/article/details/51398040
翼边结构(拓展):