簡體   English   中英

如何從形狀優美的點列表中創建形狀優美的多邊形?

[英]How to create a shapely Polygon from a list of shapely Points?

我想從形狀勻稱的點創建一個多邊形。

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()

如何從形狀優美的Point對象創建Polygon

如果您特別想從勻稱的幾何點構建多邊形,請在列表推導式中調用它們的 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 足夠聰明,可以代表您關閉多邊形,即您不必在最后再次傳入第一個點。

Polygon對象需要嵌套的數字列表,而不是Point對象的列表。

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]])

1.7a2版本中,他們修復了這個問題。

有問題的代碼將正常工作。

鏈接到 CHANGES.txt

Polygon構造函數不需要Point對象列表,而是需要點坐標列表。

https://shapely.readthedocs.io/en/latest/manual.html#polygons

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]])

只需輸入導入部分。

我發布了一個新的答案,因為我不能評論以前的帖子作為評論,因為我缺乏“點”

你可以這樣做:

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]
poly = geometry.Polygon([i for i in pointList])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM