You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shapely的simplify方法无法移除多边形冗余顶点问题求解

问题原因

  • 你要移除的(20060.0, 20744.0)是当前多边形外环的首尾闭合锚点,shapely的simplify方法默认会保留多边形闭合路径的首尾锚点,哪怕该点和相邻点共线属于冗余点。
  • 你使用的simplify(0)虽然理论上会删除完全共线的点,但受锚点保留规则限制,首尾共线点不会被自动清理。

解决方法

可以先提取多边形的外环坐标,移除末尾重复的闭合点后简化,再重新构造多边形,就能删掉冗余的首尾共线点,示例代码如下:

from shapely.geometry import Polygon, LineString

test = [(20060.0, 20744.0), (20060.0, 16729.0), (19000.0, 16729.0), (19000.0, 22564.0), (20060.0, 22564.0), (20060.0, 20744.0)]
poly = Polygon(test)

# 提取外环坐标,去掉末尾重复的闭合点
ext_coords = list(poly.exterior.coords)[:-1]
# 转成LineString做简化,tolerance设为0即可删除完全共线点
simplified_line = LineString(ext_coords).simplify(0)
# 重新构造多边形
simplified_poly = Polygon(simplified_line)

print(list(simplified_poly.exterior.coords))

运行后的输出会自动移除冗余的(20060.0, 20744.0)点,结果如下:

[(20060.0, 16729.0), (19000.0, 16729.0), (19000.0, 22564.0), (20060.0, 22564.0), (20060.0, 16729.0)]

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:54:05