2015-05-26 112 views
7

我想从匀称的点创建一个多边形。如何创建一个给定点顶点的多边形?

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

+0

搭载这个 - 是否有任何不错的单行程序用于在Shapely对象上调用'bounds'的结果来生成Polygon? – kuanb

回答

13

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

注意,匀称是足够聪明,收代表您的多边形,即你不一定要在年底再次传递的第一点。

+0

对我来说,它适用于point =]中的poly = Polygon([[p [0] .x,p [0] .y]) – Piyush

+0

声音就像是嵌套点(多点?)或一条线? – shongololo

+1

另外,不要忘记导入库中的文件夹: from shapely.geometry import Polygon – inigo333

3

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

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

这不会如图所示。它应该是一个点坐标列表,即:多边形=多边形([[0,0],[1,0],[1,1],[0,1]]) – shongololo

+0

@shongololo感谢您的领导,我误解了文档。 –

相关问题