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

时间:2015-05-26 11:20:25

标签: 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)

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

如何从匀称Polygon对象创建Point

4 个答案:

答案 0 :(得分:25)

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

请注意,形状上足够巧妙,可以代表您关闭多边形,即您不必在结尾处再次传入第一个点。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

Polygon构造函数不期望Point个对象的列表,而是一个点坐标列表。

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

答案 3 :(得分:0)

YourEnum版中,他们已解决此问题。

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

Link to CHANGES.txt