多角形は、格好の良い持つ複数のポイントに触れます
質問
私はPythonで格好の良いポリゴンのリストを持っています。 .touches()
メソッドを使用して、容易なポリゴンタッチを見つけるために。しかし、私はリターンがTrue
ことを何かを必要とする場合にのみポリゴンシェアよりの(つまり株式ボーダーで)1点以上。私が説明しましょう。
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
や感動ポイントの数を返すだけで何か、である。
そしてもちろん、すべてのポイントを反復手動で関与しない任意のソリューションが最適である - 私はそれを行うために必要がある場合は、その種類敗北の格好の良いを使用する目的: - )
解決
私は格好の良い使用していないが、2つのポリゴンの交差がラインであれば、あなたが見て試してみました?
他のヒント
あなたが本当に2つのポリゴンがあなたは、単にこれを行うことができますポイントのx数よりも多くの共有かどうかを確認したい場合:
p0,p1,p2 = polygons
x = 2
len(set(p1.boundary.coords).intersection(p2.boundary.coords))>=x
しかし、私は何をしたいことが二辺が同一直線上(重複)しているかどうかを判断することだと思います。
アンドリューの提案のこの実装は、あなたが探しているものはおそらくあります:
>>> type(p0.intersection(p1)) is geometry.LineString
True
>>> type(p1.intersection(p2)) is geometry.LineString
False
所属していません StackOverflow