2012-12-29 48 views
4

如何修改现有的多边形?首先我想在它的外部添加一个Point。身材匀称:添加新的点,已有的多边形

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

我一直在寻找这样的事情:

poly.append_at(idx=3, Point(1, -1))

但我不能找到这个产品的,甚至类似的方法。

感谢

回答

8

它没有任何意义从Polygon的外部添加或删除点,因为你要重新计算poly.areapoly.length等反正。相反,从旧的多边形的坐标创建一个新的Polygon实例:

coords = poly.exterior.coords[:] 
coords[1] = (2.0, 6.0) # coordinate to change 

new_poly = Polygon(coords) 

注意,这不poly.interior占点。

+0

添加了一个坐标切片opp'[:]'使您的示例工作 –

+0

@MikeToews:重新评论下面的内容(现在可能会被删除) - 我明白“不可变的”,但文档中的下一个语句“父特征是可变的,因为它们可以被分配新的坐标序列。“这就是我想要做的,分配一个新的序列。对于我所知道的,一个新的坐标序列**的分配可能已经触发了面积,质心等的重新计算。所以我认为这个文档在这一点上有点误导。 – subnivean

+0

@subnivean同意了,这本手册中的内容不清楚;看到https://github.com/Toblerity/Shapely/issues/38 –

相关问题