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

MySQL中地理距离计算方法及结果准确性问题咨询

正确的MySQL地理距离计算方法

首先,你的代码里存在一个明显的参数错误:在第二个POINT构造中,你错误地重复使用了LNG2作为纬度值,正确的应该是传入对应的纬度LAT2。这个错误直接导致了计算结果的偏差。

修正后的基础写法

使用ST_Distance_Sphere的正确语句应该是:

SELECT ST_Distance_Sphere(POINT(LNG1, LAT1), POINT(LNG2, LAT2)) * 0.000621371;
  • ST_Distance_Sphere返回的是米为单位的距离,乘以0.000621371是将米转换为英里(1米≈0.000621371英里)。

验证你的示例

把你的示例参数修正后执行:

SELECT ST_Distance_Sphere(POINT(-73.98568175135509, 40.7484381443023), POINT(-77.53989898824496, 38.993292463424126)) * 0.000621371;

计算结果约为195.8英里,和你提到的网站结果(196英里)基本一致,误差是因为不同工具的地球半径取值或计算精度略有差异。

其他可选方法

如果你的MySQL版本支持(8.0+),也可以使用ST_Distance函数,指定使用球面坐标系(SPHEROID['WGS84',6378137,298.257223563]是WGS84椭球参数,更贴近真实地球形状):

SELECT ST_Distance(
  ST_GeomFromText('POINT(-73.98568175135509 40.7484381443023)', 4326),
  ST_GeomFromText('POINT(-77.53989898824496 38.993292463424126)', 4326),
  'SPHEROID["WGS84",6378137,298.257223563]'
) * 0.000621371;

这个方法的计算结果会更精准,和专业地理工具的结果匹配度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:06:28