在Shapely中向现有多边形添加新点

8

我如何修改现有的多边形?首先,我想在其外部添加一个点。

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

我正在寻找类似于以下内容的方法:

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

但我找不到任何类似的方法来实现这一点。

1个回答

12

向一个Polygon的外部添加或移除点并没有意义,因为您想要重新计算poly.areapoly.length等。相反,可以从旧多边形的坐标创建一个新的Polygon实例:

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

new_poly = Polygon(coords)

请注意,这不包括在 poly.interior 中的点。

1
@MikeToews:关于您下面的评论(现在可能已被删除)-我理解“不可变”,但文档中紧接着的下一条语句说:“它们的父要素是可变的,因为可以分配新的坐标序列。”那就是我想做的事情,分配一个新的序列。据我所知,一个新的坐标序列的分配可能会触发面积、重心等的重新计算。所以我认为文档在这一点上有点误导。 - subnivean
@subnivean同意,手册中的这段描述不够清晰;请参见https://github.com/Toblerity/Shapely/issues/38。 - Mike T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接