web-dev-qa-db-ja.com

ポイント頂点を指定してポリゴンを作成する方法は?

シェイプポイントからポリゴンを作成したい。

_from shapely import geometry
p1 = geometry.Point(0,0)
p2 = geometry.Point(1,0)
p3 = geometry.Point(1,1)
p4 = geometry.Point(0,1)

pointList = [p1, p2, p3, p4, p1]

poly = geometry.Polygon(pointList)
_

型エラーTypeError: object of type 'Point' has no len()をくれます

形の良いPolygonオブジェクトからPointを作成する方法は?

16
Sounak

形状の良いジオメトリポイントからポリゴンを具体的に構築する場合は、リスト内包のx、yプロパティを呼び出します。言い換えると:

from shapely import geometry

poly = geometry.Polygon([[p.x, p.y] for p in pointList])

print(poly.wkt)  # prints: 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))'

Shapelyは、あなたに代わってポリゴンを閉じるのに十分賢いことに注意してください。つまり、必ずしも最後に最初のポイントを再度渡す必要はありません。

30
songololo

Polygon オブジェクトには、Pointオブジェクトのリストではなく、ネストされた数字のリストが必要です。

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]])
6
Malik Brahimi

Polygonコンストラクターは、Pointオブジェクトのリストではなく、点座標のリストを必要とします。

https://shapely.readthedocs.io/en/latest/manual.html#polygons を参照してください

2
dlask