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

Python中求多边形质心到最远点的更高效实现方法

更简洁高效的实现方案

可以利用Python的生成器表达式结合max()函数,替代显式的循环遍历逻辑,让代码更紧凑且内存效率更高(生成器不会一次性存储所有距离值)。

实现代码

from shapely import geometry
from haversine import haversine

# 定义多边形
polygon = geometry.Polygon([[0, 0], [0.5, 0], [0.6, 1], [0, 1], [-0.5, 0.5]])
# 获取多边形质心
centroid = polygon.centroid
# 计算质心到外边界所有顶点的最大haversine距离
max_radius = max(
    haversine(
        (centroid.y, centroid.x),  # haversine参数为(纬度, 经度),对应Shapely点的(y, x)
        (point[1], point[0])       # 多边形顶点的(y, x)
    )
    for point in polygon.exterior.coords
)

关键说明

  1. 简洁性:用生成器表达式直接传入max()函数,省去了手动初始化列表、循环追加元素的冗余代码。
  2. 效率:生成器是按需计算距离,不会在内存中存储所有距离值,当多边形顶点数量较多时,内存占用会比显式循环存列表的方式更低。
  3. 正确性:多边形到质心的最远点必然是其外边界的顶点(几何上,线段上任意点到某固定点的距离最大值一定出现在端点),因此只需遍历外边界顶点即可,无需考虑边的中间点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:33:27