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は2つのポイント(境界全体)を共有します。ポリゴン1と2は1つのポイントのみを共有します。私が探しているのは、上記の例で私に、、、または単にタッチポイントの数を返す何かを与える関数であり、True
それから私は残りのロジックを自分で行うことができます。False
False
そしてもちろん、すべてのポイントを手動で反復することを含まないソリューションが最適です-それを行う必要がある場合、Shapelyを使用する目的をやや無効にします:-)