我有一個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