如何从形状优美的点列表中创建形状优美的多边形?
How to create a shapely Polygon from a list of shapely Points?
我想从匀称的点创建一个多边形。
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()
如何从 Point
个有形的 Polygon
对象创建一个 Polygon
?
Polygon
构造函数不需要 Point
对象列表,而是点坐标列表。
见https://shapely.readthedocs.io/en/latest/manual.html#polygons
Polygon
对象需要嵌套的数字列表,而不是 Point
对象的列表。
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
中他们已经修复了这个问题。
有问题的代码将正常工作。
你也可以这样做:
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]
poly = geometry.Polygon([i for i in pointList])
我想从匀称的点创建一个多边形。
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()
如何从 Point
个有形的 Polygon
对象创建一个 Polygon
?
Polygon
构造函数不需要 Point
对象列表,而是点坐标列表。
见https://shapely.readthedocs.io/en/latest/manual.html#polygons
Polygon
对象需要嵌套的数字列表,而不是 Point
对象的列表。
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
中他们已经修复了这个问题。
有问题的代码将正常工作。
你也可以这样做:
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]
poly = geometry.Polygon([i for i in pointList])