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 )
关键说明
- 简洁性:用生成器表达式直接传入
max()函数,省去了手动初始化列表、循环追加元素的冗余代码。 - 效率:生成器是按需计算距离,不会在内存中存储所有距离值,当多边形顶点数量较多时,内存占用会比显式循环存列表的方式更低。
- 正确性:多边形到质心的最远点必然是其外边界的顶点(几何上,线段上任意点到某固定点的距离最大值一定出现在端点),因此只需遍历外边界顶点即可,无需考虑边的中间点。
内容的提问来源于stack exchange,提问作者PeCaDe
相关产品推荐
相关产品推荐

