如何根据Point顶点创建多边形?

Sou*_*nak 17 python polygon shapely

我想从形状点创建一个多边形.

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)
Run Code Online (Sandbox Code Playgroud)

给我一个类型错误 TypeError: object of type 'Point' has no len()

如何Polygon从形状Point对象中创建?

son*_*olo 32

如果您特别想要从形状几何点构造多边形,则在列表推导中调用它们的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))'
Run Code Online (Sandbox Code Playgroud)

请注意,它的形状足够聪明,可以代表您关闭多边形,也就是说,您不一定必须在最后再次传入第一个点.


Mal*_*imi 6

一个Polygon对象需要一个嵌套的数字列表,而不是一个Point对象列表。

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]])
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 5

在版本中,1.7a2他们已修复此问题。

有问题的代码将正常工作。

链接到 CHANGES.txt