我在Python中有一个Shapely多边形的列表。使用.touches()方法来找出哪种多边形触摸起来容易。但是,我需要仅在多边形共享多个点(换句话说,共享边界)时才返回True的东西。让我说明一下:

In [1]: from shapely.geometry import Polygon
In [2]: polygons = [Polygon([(0,0),(0,1),(1,1),(1,0)]), Polygon([(1,0),(1,1),(2,1),(2,0)]), Polygon([(2,1),(2,2),(3,2),(3,1)])]

In [3]: polygons[0].touches(polygons[1])
Out[3]: True

In [4]: polygons[0].touches(polygons[2])
Out[4]: False

In [5]: polygons[1].touches(polygons[2])
Out[5]: True

在这种情况下,面0和1共享两个点(整个边界)。多边形1和2仅共享一个点。我要寻找的是一个可以在上面的示例中为我提供TrueFalseFalse的函数,或者仅仅是可以返回接触点数量的函数,然后我可以自己完成其余的逻辑。

当然,任何不涉及手动遍历所有点的解决方案都是最佳的-如果我需要这样做,那将违反使用Shapely的目的:-)

最佳答案

我没有用匀称的形状,但是您是否尝试过查看两个多边形的交点是否为一条线?

关于python - 多边形通过Shapely触及多个点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1960961/

10-13 06:28