一种多边形外延边界处理方法及装置与流程

文档序号:21007451发布日期:2020-06-05 23:15阅读:534来源:国知局
一种多边形外延边界处理方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种多边形外延边界处理方法及装置。



背景技术:

现有的多边形外延边界计算方法,一般有以下3种方式:

第一种是以多边形各条边平行外移一段距离,以平移之后的端点顺序相连,如图1所示,这种方式在多边形各个顶角处,外延的距离会小于多边形各条边上外延的距离。第二种是以多边形各条边平行外移一段距离,以平移之后的各条线的延长线的交点相连,如图2所示,这种方式在多边形各个顶角处,外延的距离会大于多边形各条边上外延的距离;第三种是以多边形各条边平行外移一段距离,然后以对应角度的6个圆弧点顺序相连,如图3所示,这种方式在多边形各个顶角处,外延的距离在各个圆弧点上,等于多边形各条边上外延的距离。

上述三种现有方式中,第三种方式相对更严谨,也更科学,采用的频次也最高,但是第三种方式针对简单的多边形是没有问题的,而当多边形比较复杂,且相邻的各个顶点距离比较近的时候,这种方式就会产生错误,如图4和5所示。在图4中,由于内多边形的1号点内凹,且1号点与2号点以及0号点相邻比较近,当1号点内凹到一定程度,如图5所示,导致图5中内多边形的2号点的圆弧点(12-13-14-15-16-17线段)与其他线段(5-6线段)出现相交的时候,外延边界就出现内部反向螺旋错误,如图5中6-7-7-8-9-10-11线段所示。如何防止出现上述反向螺旋错误,保证复杂多边形的外延边界的正确是亟需解决的问题。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种多边形外延边界处理方法及装置。

第一方面,本发明实施例提出一种多边形外延边界处理方法,包括:

获取多边形,并判断获知所述多边形的原始边界外延的各线段之间的所有交点;

若判断获知当前交点的位置在原始边界内部,则舍弃当前交点,否则保留当前交点;

计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点;

对保留的交点进行线段调整,得到外延边界正常的多边形。

可选地,所述计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点之后,还包括:

若判断获知所述多边形的起始点与圆弧点相交于目标交点,则删除到达所述目标交点之前的所有交点,以及相交后到达所述目标交点之后产生的点。

可选地,所述计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点之后,还包括:

若判断获知3个以上的点在同一条直线上,且所述3个以上的点的距离均小于阈值,则剔除所述直线上的无效点。

可选地,所述极限距离为外延距离与预设值的乘积,所述预设值为cos18°。

第二方面,本发明实施例还提出一种多边形外延边界处理装置,包括:

交点获取模块,用于获取多边形,并判断获知所述多边形的原始边界外延的各线段之间的所有交点;

第一交点判断模块,用于若判断获知当前交点的位置在原始边界内部,则舍弃当前交点,否则保留当前交点;

第二交点判断模块,用于计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点;

线段调整模块,用于对保留的交点进行线段调整,得到外延边界正常的多边形。

可选地,所述装置还包括:

交点删除模块,用于若判断获知所述多边形的起始点与圆弧点相交于目标交点,则删除到达所述目标交点之前的所有交点,以及相交后到达所述目标交点之后产生的点。

可选地,所述装置还包括:

无效点剔除模块,用于若判断获知3个以上的点在同一条直线上,且所述3个以上的点的距离均小于阈值,则剔除所述直线上的无效点。

可选地,所述极限距离为外延距离与预设值的乘积,所述预设值为cos18°。

第三方面,本发明实施例还提出一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述方法。

第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述方法。

由上述技术方案可知,本发明实施例通过考虑了各种交点处理情况,并通过计算极限距离,解决了复杂多边形外延边界错误的问题,可运用于各种外延边界的计算,有很高的实用价值。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为现有技术提供的一种多边形各条边上外延的距离示意图;

图2为现有技术提供的另一种多边形各条边上外延的距离示意图;

图3为现有技术提供的再一种多边形各条边上外延的距离示意图;

图4为现有技术提供的一种多边形各条边上外延错误的示意图;

图5为现有技术提供的另一种多边形各条边上外延错误的示意图;

图6为本发明一实施例提供的一种多边形外延边界处理方法的流程示意图;

图7为本发明一实施例提供的一种多边形各条边上外延的距离示意图;

图8为本发明另一实施例提供的一种多边形各条边上外延的距离示意图;

图9为本发明一实施例提供的一种多边形各条边上外延处理的示意图;

图10为本发明另一实施例提供的一种多边形各条边上外延处理的示意图;

图11为本发明再一实施例提供的一种多边形各条边上外延处理的示意图;

图12为本发明又一实施例提供的一种多边形各条边上外延处理的示意图;

图13为本发明一实施例提供的一种多边形外延边界处理装置的结构示意图;

图14为本发明一实施例提供的电子设备的逻辑框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图6示出了本实施例提供的一种多边形外延边界处理方法的流程示意图,包括:

s601、获取多边形,并判断获知所述多边形的原始边界外延的各线段之间的所有交点。

s602、若判断获知当前交点的位置在原始边界内部,则舍弃当前交点,否则保留当前交点。

s603、计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点。

其中,所述极限距离为外延距离与预设值的乘积,所述预设值为cos18°。

s604、对保留的交点进行线段调整,得到外延边界正常的多边形。

具体地,本实施例提供的多边形外延边界处理的需求背景是基于地图的一个场景边界判断。由于温州移动针对不同场景在地图上画好了场景的边界(即地图上的一个个多边形),并采用手机实时定位的方式,判断持有该手机的营销人员当时是否在场景内。同时由于手机gps定位、网络定位、基站定位都不可避免的会有一些误差,所以需要把场景的边界放大,即外延一段距离(温州是外延50米),通过外延的边界来抵消定位的误差,从而使判断的结果更准确。当把各种形状的多边形的边界做外延的时候,即多边形比较复杂,且相邻的各个顶点距离比较近的时候,外延边界就会产生螺旋错误。

原始算法的具体过程如下:

如图7中根据原始多边形各个线段等距离生成外延后的线段,即内部三角形的0--1线段外延产生5--6线段;内部三角形的1--2线段外延产生11--12线段;内部三角形的黄色2--0线段外延产生17--0线段。图7中当外延的相邻两个线段不相交(外延5--6线段与外延11-12线段不相交),算法取相邻两条线段的前一个线段(外延5--6线段)的终点(即外延6号点)作为圆弧的起点,以相邻两条线段的后一个线段(外延11--12线段)的起点(即外延11号点)作为圆弧的终点,以原始多边形的顶点(即内部三角形1号点)为圆心,均匀生成6个坐标点,并按顺序连接。

如图8中当外延的相邻两个线段相交,即(外延5--外延6--白色线段)与(白色线段--外延6--外延7组成的线段)相交,且交于外延6号点。算法就把上一个圆弧点的终点(外延5号点),通过交点(外延6号点),连接到下一个圆弧点的起点(外延7号点)。如此按顺序即可连接成一个正确的外延边界。

原始算法解决简单图形的外延边界是可以的,但是当多边形的形状复杂如图9时(内部0--1--2--3--4组成的多边形),原始算法就会产生错误。

原因是:内部0-1线段产生的外延线段5-6,与内部1-2线段产生的外延线段11-12没有交点。按原始算法,则会以前一个线段(外延5--6线段)的终点(即外延6号点)作为圆弧的起点,以相邻两条线段的后一个线段(外延11--12线段)的起点(即外延11号点)作为圆弧的终点,以原始多边形的对应顶点(即内部1号点)为圆心,均匀生成6个坐标点(即外延6、7、8、9、10、11号点),并按顺序连接。这样外延边界在黄色1号点附近产生了一个反向的螺旋,然后再顺序连接外延12、13号点。这样就导致了外延的边界在内部1号点附近出现错误:即外延边界出现在了原始边界范围内,从而导致该多边形在局部外延50米后的边界比原始边界还要小。

找到问题的根源后,针对该问题,本实施例提出外延边界判断交点的时候,不能只判断各原始线段产生的外延线段之间是否存在交点,而是要判断包括圆弧点线段在内的所有外延线段是否存在交点。如果该交点所在的位置不正常,比如交点在原始边界内,或者该交点距离原始边界在极限距离以下,那么就要舍弃这个交点。如果交点所在的位置正常,则外延线段在该交点位置的连线发生改变(即不再继续按生成的圆弧坐标点的顺序相连,而是从产生交点前的一个紫色点直接连接到交点,然后从交点再连接到产生交点后的一个紫色点)。对应图9中,就是外延5号点连接交点a再连接13号点,这样就形成了正确的外延边界。

具体处理步骤思路如下:

1)先判断出原始边界外延的各线段之间的所有交点。在图9中,只有5-6线段与12-13线段产生交点a。

2)再判断这个交点的位置,是否在原始边界内(原始边界即图9中内部0-1-2-3-4组成的多边形)。如果交点在多边形内部,则舍弃这个交点,如果在外部则暂时保留。

3)计算交点与原始边界理论上可能的极限距离(极限位置是当一个顶点产生的6个圆弧点均匀分布在几乎一个完整的半圆上面,交点正好在线段中点,此时最短距离是t*cos18°)。例如温州的外延距离是50米,那么极限距离就是50*cos18°=47.552826,若实际交点与原始边界的最短距离小于此极限距离,则舍弃这个交点,否则就保留这个交点。

极限情况如图10所示:内部3号点产生的6个圆弧点(外延18、19、20、21、22、23点)均匀分布在几乎一个完整的半圆上,外延11-12线段相交于外延20-21线段的中心点(即交点b)。此时交点b到原始边界(内部0-1-2-3-4-5)的最短距离几乎是t*cos18°,即为极限值距离。

4)舍弃完所有不需要的交点后,针对剩余保留的交点做线段的调整,图9中,即在交点a处线段发生变化(舍弃交点a之后的顺序点,直到顺序点再次回到交点a,即舍弃外延6、7、8、9、10、11、12)。最后外延5号点就直连到到交点a,再由交点a直连到外延13号点。外延边界即正常。

本实施例通过考虑了各种交点处理情况,并通过计算极限距离,解决了复杂多边形外延边界错误的问题,可运用于各种外延边界的计算,有很高的实用价值。

进一步地,在上述方法实施例的基础上,s604之后,还包括:

s6041、若判断获知所述多边形的起始点与圆弧点相交于目标交点,则删除到达所述目标交点之前的所有交点,以及相交后到达所述目标交点之后产生的点。

具体地,在实际计算的时候,发现了一种特殊情况,即:起始点与圆弧点相交。如图11所示,原始边界是内部顶点0-1-2-3-4-5组成的多边形。外延边界在原始边界中的起始点(内部0号点)附近相交,导致需要剔除的点包含了外延的初始点(外延0号点),此时需要删除到达交点之前的点,以及相交后到达交点之后产生的点。与图9的处理方式正好相反,即此种情况下交点是线段8-9和线段29-30产生;图11需要剔除的点是0、1、2、3、4、5、6、7、8、30(即剔除<9或者>29的点),保留下外延9-29号点;与图9剔除方法(即剔除>5并且<13的点),保留下外延<=5的点和外延>=13的点,处理方式正好相反。

进一步地,在上述方法实施例的基础上,s604之后,还包括:

s6042、若判断获知3个以上的点在同一条直线上,且所述3个以上的点的距离均小于阈值,则剔除所述直线上的无效点。

具体地,在实际计算的时候,还一种特殊情况,即:多点共线问题。如图12所示,当3个及3个以上的点在同一条直线上时(内部3、4、5、6、7号点在同一直线上),且这几个点距离很近,这时这条直线上的各个线段产生的外延线段没有交点,产生了外延37、38、39、40、41号点的内部反向螺旋。针对这种情况,本实施例改进了外延边界算法,即当同一条直线上有多个点时,剔除这些线段中的无效点,然后再按原来的算法算出正确外延边界。即在图12中,忽略掉内部4、5、6点,只计算内部3号点到内部7号点的线段产生的外延边界。

经过反复测试,本实施例提出的方法算出的外延边界已经可以适应各种复杂图形,考虑了各种复杂情况,并算出了极限值,给出了详细解决方案与实现代码,完美解决了复杂多边形外延的bug,可运用于各种外延边界的计算,有很高的实用价值,特别适用于地图系统。

图13示出了本实施例提供的一种多边形外延边界处理装置的结构示意图,所述装置包括:交点获取模块1301、第一交点判断模块1302、第二交点判断模块1303和线段调整模块1304,其中:

所述交点获取模块1301用于获取多边形,并判断获知所述多边形的原始边界外延的各线段之间的所有交点;

所述第一交点判断模块1302用于若判断获知当前交点的位置在原始边界内部,则舍弃当前交点,否则保留当前交点;

所述第二交点判断模块1303用于计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点;

所述线段调整模块1304用于对保留的交点进行线段调整,得到外延边界正常的多边形。

具体地,所述交点获取模块1301获取多边形,并判断获知所述多边形的原始边界外延的各线段之间的所有交点;所述第一交点判断模块1302若判断获知当前交点的位置在原始边界内部,则舍弃当前交点,否则保留当前交点;所述第二交点判断模块1303计算保留的各交点与原始边界的极限距离,若判断获知当前交点与原始边界的实际最短距离小于所述极限距离,则舍弃当前交点,否则保留当前交点;所述线段调整模块1304对保留的交点进行线段调整,得到外延边界正常的多边形。

本实施例通过考虑了各种交点处理情况,并通过计算极限距离,解决了复杂多边形外延边界错误的问题,可运用于各种外延边界的计算,有很高的实用价值。

进一步地,在上述装置实施例的基础上,所述装置还包括:

交点删除模块,用于若判断获知所述多边形的起始点与圆弧点相交于目标交点,则删除到达所述目标交点之前的所有交点,以及相交后到达所述目标交点之后产生的点。

进一步地,在上述装置实施例的基础上,所述装置还包括:

无效点剔除模块,用于若判断获知3个以上的点在同一条直线上,且所述3个以上的点的距离均小于阈值,则剔除所述直线上的无效点。

进一步地,在上述装置实施例的基础上,所述极限距离为外延距离与预设值的乘积,所述预设值为cos18°。

本实施例所述的多边形外延边界处理装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

参照图14,所述电子设备,包括:处理器(processor)1401、存储器(memory)1402和总线1403;

其中,

所述处理器1401和存储器1402通过所述总线1403完成相互间的通信;

所述处理器1401用于调用所述存储器1402中的程序指令,以执行上述各方法实施例所提供的方法。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1