2015-05-26 115 views
7

我想從勻稱的點創建一個多邊形。如何創建一個給定點頂點的多邊形?

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

+0

搭載這個 - 是否有任何不錯的單行程序用於在Shapely對象上調用'bounds'的結果來生成Polygon? – kuanb

回答

13

如果您特別想從幾何形狀的點構造多邊形,然後在列表理解中調用它們的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))' 

注意,勻稱是足夠聰明,收代表您的多邊形,即你不一定要在年底再次傳遞的第一點。

+0

對我來說,它適用於point =]中的poly = Polygon([[p [0] .x,p [0] .y]) – Piyush

+0

聲音就像是嵌套點(多點?)或一條線? – shongololo

+1

另外,不要忘記導入庫中的文件夾: from shapely.geometry import Polygon – inigo333

3

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

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

這不會如圖所示。它應該是一個點座標列表,即:多邊形=多邊形([[0,0],[1,0],[1,1],[0,1]]) – shongololo

+0

@shongololo感謝您的領導,我誤解了文檔。 –

相關問題