一种带弧复杂多边形快速合并的方法技术

技术编号:36645878 阅读:31 留言:0更新日期:2023-02-18 13:05
本发明专利技术揭示了一种带弧复杂多边形快速合并的方法,包括如下步骤:首先获取两个多边形,使得点集顺序为顺时针;然后在第一多边形外或第二多边形外找点A;接着找不到点A则以第一多边形或第二多边形作为合并结果,找到点A则开始顺时针遍历第一多边形和第二多边形中的所有线段或弧段,在两者之间找交点;接着对交点进行标注进点、出点及中性点;最后从出点开始获取节点,回到出点则实现两个多边形的合并。本发明专利技术通过对进出点的标记,实现了多边形合并的完整性和准确性。的完整性和准确性。

【技术实现步骤摘要】
一种带弧复杂多边形快速合并的方法


[0001]本专利技术涉及地理信息
,尤其是涉及一种带弧复杂多边形快速合并的方法。

技术介绍

[0002]空间地理数据是指与地理位置相关的或包含地理信息的数据。在地理信息领域,用矢量数据(坐标和其他数据组合的数据结构)抽象表达真实世界中的点、线、面状地理要素。
[0003]地理空间分析的基础是地理几何图形间的运算,运算的方法直接影响分析的结果及效率,传统多边形合并算法仅支持普通多边形相交情形的合并,对有重叠特别是内部重叠的情况并不能很好的支持,对带有弧的多边形的支持也有限。
[0004]因此需在现有的基础上提供一种带弧复杂多边形快速合并的方法,支持对带弧及任意复杂多边形间的合并的实现与合并效率提升。

技术实现思路

[0005]本专利技术的目的在于克服现有技术的缺陷,提供一种带弧复杂多边形快速合并的方法,通过对进出点的标记,以实现多边形合并的完整性和准确性。
[0006]为实现上述目的,本专利技术提出如下技术方案:一种带弧复杂多边形快速合并的方法,其包括如下步骤:
[0007]S1,获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0008]S2,在第一多边形的点集中寻找在第二多边形外部点A或寻找第一多边形所有线段的中点或弧的中点在第二多边形外部点A,若找到点A则进行S5,若找不到则进行S3;
[0009]S3,若第一多边形不带弧,则以第二多边形作为合并结果,若第一多边形带弧,则在第二多边形内以S2的步骤找点A,若找到点A则进行S5,若找不到进行S4;
[0010]S4,若第二多边形不带弧,则以第一多边形作为合并结果,若第二多边形带弧,则循环第二多边形中的弧段R以及第一多边形中所有直线线段L,若R与L相交且有两个交点,取这个R在这两个交点中间的点作为点A,则进行S5;若找不到R与L两个交点,即找不到点A,则以第一多边形作为合并结果;
[0011]S5,若点A在第二多边形内找到,则将第一多边形和第二多边形进行对调,确保点A在第一多边形内,同时将第一多边形的所有点集进行重新排序,使得点A为第一多边形点集中的第一个;
[0012]S6,从点A开始顺时针遍历第一多边形中所有线段或弧段H,将H与第二多边形的所有线段或弧段相交,若有交点,则将此交点添加到第一多边形的点集中,若有多个交点,则按与H的起点距离从小到大排序添加,若有重叠点则剔除;
[0013]S7,添加交点时同时标注所有的进点、出点和中性点;
[0014]S8,顺时针循环第一多边形,遇到出点继续顺时针获取第一多边形的节点,遇到进点则进入第二多边形的顺时针获取节点,遇到中性点继续顺时针获取第一多边形或第二多边形的节点,最终完成多边形的合并。
[0015]优选地,在所述S6中,在添加点的同时,标记交点在第二多边形中的线段索引,若为弧则记录弧的信息。
[0016]优选地,在所述S6中,在交点小于2的情况下,第二多边形有一点在第一多边形里面,则第二多边形完全在第一多边形内,则以第一多边形作为合并结果;若第二多边形有一点在第一多边形外面,则第一多边形和第二多边形无法合并。
[0017]优选地,在所述S7中,所述中性点为除了进点和出点还在第二多边形内或边上的点。
[0018]优选地,在所述S8中,若有多个出点,则回到一个出点后,则继续从下一个出点开始循环执行,循环完第一多边形上的所有节点后即完成合并。
[0019]优选地,构建出来的多边形节点的方向为顺时针,则多边形合并为外环,构建出来的多边形节点的方向为逆时针,则多边形合并为内环。
[0020]本专利技术的有益效果是:
[0021]1、本专利技术的带弧复杂多边形快速合并的方法,通过对进出点和中性点的标记,实现了合并的完整性和正确性。
[0022]2、本专利技术的带弧复杂多边形快速合并的方法,对交点的标注和弧段的信息标注,加快了后期构建多边形的速度。
具体实施方式
[0023]下面对本专利技术实施例的技术方案进行清楚、完整的描述。
[0024]本专利技术所揭示带弧复杂多边形快速合并的方法,下面通过六个实施例对本技术方案进行详细的说明。
[0025]实施例一
[0026]1、获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0027]2、找到第一多边形在第二多边形外部的点A,将第一多边形的所有点集进行重新排序,使得点A为第一多边形点集中的第一个;
[0028]3、从点A开始顺时针遍历第一多边形中所有线段或弧段H,将H与第二多边形的所有线段或弧段相交,将交点按照与H的起点距离从小到大排序添加至第一多边形的点集中;
[0029]4、添加交点的同时标注所有近点、出点和中性点;
[0030]5、顺时针循环第一多边形,遇到出点继续顺时针获取第一多边形的节点,遇到进点则进入第二多边形顺时针或逆时针获取节点,遇到中性点继续顺时针获取第一多边形和第二多边形的节点。将所有的出点都经过遍历完成两个多边形的合并。
[0031]实施例二、
[0032]1、获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0033]2、找不到第一多边形在第二多边形外部的点A,第一多边形不带弧,则说明第一多
边形完全在第二多边形内,以第二多边形作为合并结果。
[0034]实施例三、
[0035]1、获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0036]2、找不到第一多边形在第二多边形外部的点A,第一多边形带弧,在第二多边形找到A,将第一多边形和第二多边形进行对调,同时将新的第一多边形的所有点集重新排序,使得点A在新的第一多边形中的第一个;
[0037]3、从点A开始顺时针遍历第一多边形中所有线段或弧段H,将H与第二多边形的所有线段或弧段相交,将交点按照与H的起点距离从小到大排序添加至第一多边形的点集中;
[0038]4、添加交点的同时标注所有近点、出点和中性点;
[0039]5、顺时针循环第一多边形,遇到出点继续顺时针获取第一多边形的节点,遇到进点则进入第二多边形顺时针或逆时针获取节点,遇到中性点继续顺时针获取第一多边形和第二多边形的节点。将所有的出点都经过遍历完成两个多边形的合并。
[0040]实施例四、
[0041]1、获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0042]2、找不到第一多边形在第二多边形外部的点A,第一多边形带弧,在第二多边形内找不到A,且第二多边形不带弧,则说明第二多边形完全在第一多边形内,以第一多边形作为合并结果。
[0043]实施例五、
[0044]1、获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;
[0045]2、找不到第一多边形在第二多边形外部本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种带弧复杂多边形快速合并的方法,其特征在于,包括如下步骤:S1,获取第一多边形和第二多边形的点集为顺时针排序,若为逆时针则修改为顺时针;S2,在第一多边形的点集中寻找在第二多边形外部点A或寻找第一多边形所有线段的中点或弧的中点在第二多边形外部点A,若找到点A则进行S5,若找不到则进行S3;S3,若第一多边形不带弧,则以第二多边形作为合并结果,若第一多边形带弧,则在第二多边形内以S2的步骤找点A,若找到点A则进行S5,若找不到进行S4;S4,若第二多边形不带弧,则以第一多边形作为合并结果,若第二多边形带弧,则循环第二多边形中的弧段R以及第一多边形中所有直线线段L,若R与L相交且有两个交点,取这个R在这两个交点中间的点作为点A,则进行S5;若找不到R与L两个交点,即找不到点A,则以第一多边形作为合并结果;S5,若点A在第二多边形内找到,则将第一多边形和第二多边形进行对调,确保点A在第一多边形内,同时将第一多边形的所有点集进行重新排序,使得点A为第一多边形点集中的第一个;S6,从点A开始顺时针遍历第一多边形中所有线段或弧段H,将H与第二多边形的所有线段或弧段相交,若有交点,则将此交点添加到第一多边形的点集中,若有多个交点,则按与H的起点距离从小到大排序添加,若有重叠点则剔除;S7,添加交点时同时标注所有的进点、...

【专利技术属性】
技术研发人员:江复兴刘骁陈金池黄秀琪康淑玲
申请(专利权)人:厦门智慧图信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1