web-dev-qa-db-fra.com

Comment créer un polygone compte tenu de ses sommets ponctuels?

Je veux créer un polygone à partir de points galbés.

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)

me donne une erreur de type TypeError: object of type 'Point' has no len()

Comment créer un Polygon à partir d'objets galbés Point?

16
Sounak

Si vous souhaitez spécifiquement construire votre polygone à partir des points de géométrie galbée, appelez leurs propriétés x, y dans une liste de compréhension. En d'autres termes:

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

Notez que la forme est suffisamment intelligente pour fermer le polygone en votre nom, c'est-à-dire que vous n'avez pas nécessairement à repasser le premier point à la fin.

30
songololo

Un objet Polygon nécessite une liste imbriquée de nombres, pas une liste d'objets Point.

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

Le constructeur Polygon ne s'attend pas à une liste d'objets Point mais à une liste de coordonnées de points.

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

2
dlask