mysql - 使用MySQL计算两个经纬度之间的距离(km)

标签 mysql gis latitude-longitude

这是 mysql 数据库中的纬度和经度示例

ID | Lat    | Lon
1  | 3.1412 | 101.6865
2  | 1.2897 | 103.8501

下面的公式计算两个 Lat(纬度)和 Lon(经度)之间的距离,并得到我想要的结果。但这个公式不会从数据库中提取我的纬度和经度。我想问一下,如何通过ID得到距离结果并计算两个Lat和Lon?我的 friend 告诉我使用 Join table,但我仍然没有得到答案..

SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((3.1412 -
    abs(1.2897)) * pi()/180 / 2),2) + COS(3.1412 * pi()/180 ) * COS(
    abs(1.2897) *  pi()/180) * POWER(SIN((101.6865 - 103.8501) *  pi()/180 / 2), 2) )), 2);

感谢您的提前

最佳答案

您可以两次加入同一个表,一次为 ID 1,一次为 ID 2,分配不同的别名 然后使用相关的列名称

  SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat -
      abs(b.lat)) * pi()/180 / 2),2) + COS(a.lat * pi()/180 ) * COS(
      abs(b.lat) *  pi()/180) * POWER(SIN((a.lng - b.lng) *  pi()/180 / 2), 2) )), 2);
  from my_table a
  inner join my_table b on a.id = 1 and b.id = 2

关于mysql - 使用MySQL计算两个经纬度之间的距离(km),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008568/

相关文章:

mysql - SQL - varchar 与 int 的性能

mysql - 如果不存在则创建表,如果缺少则插入列,最好的方法

json - Topojson:v0 和 v1 之间的差异列表?

c# - 给定坐标,我如何获得 10 英里半径内的所有邮政编码?

c# - 根据经度和纬度计算最近位置的算法

PHP 为下一个查询获取上一个 MySQL 查询的 ID,如何?

mysql - 时间戳数据类型能否插入 UTC 时间而不是本地时间(System_time_Zone)

r - 使用 PBSMapping 和 Shapefiles 帮助在 R 中绘制地理数据

sql-server - TSQL - 获取线串上最接近点的坐标

python - 如何在两个经纬度点之间插入纬度/经度点(路线)