最近需要扩展一些不规则的多边形图形(经纬度数据),自己想了个算法实现了,没搞定;然后搜了个算法,比我搞的好很多,但是也存在问题。现在实在搞不定了,想求助一下各位大佬。问题详细描述如下,以搜的那个算法为例。
首先,上一张整体扩展图。
上图蓝色线条是原数据,红色线条是扩展后的数据,扩展算法是在CSDN搜的,链接htt-ps://bl-og.cs-dn.n-et/lw-eiyu-e/a-r-ticl-e/de-ta-ils/-1-030-33-63-0(防吞,去掉所有'-')。
可以看到,大部分区域扩展是正确的,但是一些[凹形]数据扩展出现重叠部分,截取部分重叠部分图如下。
上述算法的思路是取某点X,根据它连接的两条边和需要扩展的距离,来计算它需要偏移的向量,得到它的新位置。我仔细看了看,抽取的点都正确的扩展了,算法正常运行了。
===========================================================================
抽取部分数据(数据放二楼),加入两个新顶点(多边形的收尾各加一个,方便看坐标),修改扩展距离(expand),得到如下结果:
【说明】扩展距离为旧边与新边之间的距离,不是旧顶点与新顶点之间的距离
expand=0.01
expand=0.1
expand=1
===========================================================================
从上面三张图就看的比较明显了,扩展距离较大的时候,凹形部分会发生重叠。感觉自己真的菜的真实,折腾了好久查了好多资料也没能把重叠部分搞掉。。。
首先,上一张整体扩展图。
上图蓝色线条是原数据,红色线条是扩展后的数据,扩展算法是在CSDN搜的,链接htt-ps://bl-og.cs-dn.n-et/lw-eiyu-e/a-r-ticl-e/de-ta-ils/-1-030-33-63-0(防吞,去掉所有'-')。
可以看到,大部分区域扩展是正确的,但是一些[凹形]数据扩展出现重叠部分,截取部分重叠部分图如下。
上述算法的思路是取某点X,根据它连接的两条边和需要扩展的距离,来计算它需要偏移的向量,得到它的新位置。我仔细看了看,抽取的点都正确的扩展了,算法正常运行了。
===========================================================================
抽取部分数据(数据放二楼),加入两个新顶点(多边形的收尾各加一个,方便看坐标),修改扩展距离(expand),得到如下结果:
【说明】扩展距离为旧边与新边之间的距离,不是旧顶点与新顶点之间的距离
expand=0.01
expand=0.1
expand=1
===========================================================================
从上面三张图就看的比较明显了,扩展距离较大的时候,凹形部分会发生重叠。感觉自己真的菜的真实,折腾了好久查了好多资料也没能把重叠部分搞掉。。。