Python 如何从形状点列表创建形状多边形?

Python 如何从形状点列表创建形状多边形?,python,polygon,shapely,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:Point类型的对象没有len

我想从形状优美的点创建一个多边形

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:Point类型的对象没有len()


如何从shapely
对象创建
多边形

多边形
构造函数不需要点对象列表,而是点坐标列表

请参见

对象需要嵌套的数字列表,而不是
对象列表

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

如果特别希望从形状几何体点构造多边形,请在列表中调用其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))'

请注意,shapely足够聪明,可以代表您关闭多边形,也就是说,您不必在结束时再次通过第一个点。

在版本
1.7a2
中,他们已经解决了这一问题

有问题的代码只会起作用


对我来说,它的工作原理类似于poly=Polygon([[p[0].x,p[0].y]表示点列表中的p]),听起来像是嵌套点(多点?)或一条线?我在GitHub上提交了一个关于此的问题:。他们说这是一个需要修复的bug。这个问题已经过时了;它不再产生错误。见亚当的答案。这个答案过时了,不再是真的-见亚当的答案