2015-05-26 6 views
7

Ich möchte ein Polygon aus formschönen Punkten erstellen.Wie erstelle ich ein Polygon mit seinen Punktscheitelpunkten?

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) 

gibt mir eine Art Fehler TypeError: object of type 'Point' has no len()

Wie ein Polygon von wohlgeformten Point Objekte erstellen?

+0

Huckepack davon - gibt es irgendwelche netten Einzeiler zum Erzeugen eines Polygons aus dem Ergebnis des Aufrufs von "Grenzen" auf einem formschönen Objekt? – kuanb

Antwort

13

Wenn Sie speziell auf Ihre Polygon aus den wohlgeformten Geometrie Punkten konstruieren wollen, dann ihre x nennen, y Eigenschaften in einer Liste Verständnis. Mit anderen Worten:

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

Beachten Sie, dass wohlgeformte klug genug ist, um das Polygon in Ihrem Namen zu schließen, das heißt, Sie müssen wieder nicht unbedingt passieren in dem ersten Punkt am Ende.

+0

für mich funktioniert es wie poly = Polygon ([[p [0] .x, p [0] .y] für p in pointList]) – Piyush

+0

Klingt, wie Sie geschachtelte Punkte (Multipoint?) Oder eine Zeile haben? – shongololo

+1

Vergessen Sie auch nicht, die betreffende Bibliothek zu importieren: von shapely.geometry importieren Polygon – inigo333

3

A Polygon Objekt eine verschachtelte Liste von Zahlen eingegeben werden müssen, nicht eine Liste von Point Objekte.

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

Dies funktioniert nicht wie gezeigt. Es sollte eine Liste von Punktkoordinaten sein, dh: Polygon = Polygon ([[0,0], [1,0], [1,1], [0,1]]) – shongololo

+0

@shongololo Danke für die Köpfe, Ich habe die Dokumente falsch gelesen. –

Verwandte Themen