我有一个 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 仅共享一个点。我正在寻找的是一个函数,它会给我True
, False
,False
在上面的例子中或者只是返回触摸点数量的东西,然后我可以自己做剩下的逻辑。
当然,任何不涉及手动迭代所有点的解决方案都是最佳的 - 如果我需要这样做,它有点违背了使用 Shapely 的目的:-)