Python计算短距离两点坐标中点结果不准确原因排查
问题原因
- 核心笔误:经度计算逻辑写错。你代码中返回的经度部分写的是
(lon2 + lon2)/2,全程没有用到第一个点的经度参数lon1,相当于直接返回第二个点的经度值,这是结果偏差的主要原因。 - 纬度的微小尾差属于Python浮点数运算的正常精度表现,如果你需要和手动计算的小数位数对齐,增加四舍五入处理即可。
修正后的代码
def compute_midPoint(lat1,lon1,lat2,lon2): return ((lat1 + lat2)/2, (lon1 + lon2)/2)
结果验证
调用示例compute_midPoint(53.2604111, -2.1279681, 53.2600830, -2.1271415)得到的计算结果为:
- 纬度:
(53.2604111 + 53.2600830) / 2 = 53.26024705,保留7位小数后和手动计算结果一致 - 经度:
(-2.1279681 + -2.1271415) / 2 = -2.1275548,和手动计算结果完全匹配
如果需要统一控制输出小数位数,可以修改代码做精度截断:
def compute_midPoint(lat1,lon1,lat2,lon2, decimals=7): mid_lat = round((lat1 + lat2)/2, decimals) mid_lon = round((lon1 + lon2)/2, decimals) return (mid_lat, mid_lon)
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

