我有一个Python形状多边形的列表。使用.touches()方法来找出哪个多边形触摸很容易。然而,只有当多边形共享多于一个点(换句话说共享边界)时,我才需要返回true的东西。让我说明一下:多边形触及多个点,形状很好
IPython 0.10 -- An enhanced Interactive Python.
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或者返回触点的数量,然后我可以自己完成其余的逻辑。
和当然,这并不涉及手动通过所有点迭代任何解决方案是最优的 - 如果我需要做的是,它有点儿违背了事先用匀称:-)
感谢的宗旨!
共享两个点不等同于共享边界 - 如果点在两个相邻的多边形它只是真实的。 – 2009-12-25 11:18:10
@andrew cooke:好点。我必须考虑这一点。 – XerXes 2009-12-26 18:52:21