2016-09-04 26 views
1

Shapelyを使用してポリゴンを作成する場合、ポリゴン関数で4つの頂点をプッシュします。出力は5要素のタプルでなければなりません(最初の頂点は倍化され、私が関数に渡す入力頂点の順番は、結果に影響を与えます:多分、ポリゴンは5頂点(必要に応じて)で記述されます。時には4つの意味を持ちますが、Python:ポリゴンが閉じない(shapely

次の例では、poly1とpoly2の唯一の違いは、頂点の順序です(ポリゴンはポリゴンではありません)。私はパスします。方向はまさにサムです。

from shapely.geometry import Polygon 

print ('poly1 = ', Polygon([(620, 420, 500), (620, 420, 0), (620, 40, 0),(620, 40, 500)])) 
print ('poly2 = ',Polygon([(620, 40, 500), (620, 420, 500), (620, 420, 0), (620, 40, 0)])) 

ただし、結果は異なります.1つは閉じたポリゴンで、もう1つは開いています。 両方のタイプbtwは、依然として整形されたポリゴンです。

poly1 = POLYGON Z ((620 420 500, 620 420 0, 620 40 0, 620 40 500, 620 420 500)) 
poly2 = POLYGON Z ((620 40 500, 620 420 500, 620 420 0, 620 40 0)) 

+0

ポリゴンの '__str__/__repr__'表現についてドキュメントに何も表示されません。 'polygon.exterior.coords()'の出力は何ですか? –

+0

これは私にTypeErrorを与えます: 'CoordinateSequence'オブジェクトは呼び出し可能ではありません – Yair

+0

申し訳ありませんが、括弧のないポリゴン.exterior.coordsを意味します。 –

答えて

1

3番目の座標に関係すると思います。ドキュメント(shapely doc)には、指示:

A third z coordinate value may be used when constructing instances, but has no effect on geometric analysis. All operations are performed in the x-y plane.

これはすっきり単にz座標処理しないことを意味します。あなたはz座標消去した場合、あなたの例では、あなたが得る:

[(620, 420), (620, 420), (620, 40), (620, 40)] 
[(620, 40), (620, 420), (620, 420), (620, 40)] 

あなたは最後の点は、最初の1に等しい場合、ポリゴン、見栄えのポリゴンのコンストラクタチェックを構築するために、線形文字列を渡す場合。そうでない場合は、ポイントが追加されて線形リングが得られます。 2番目のケースでは、見栄えの良い限り、最後の座標は既に繰り返されており、他のポイントを追加する必要はありません。

関連する問題