首页 > 数据库 > mysql教程 > 如何在MySQL中使用经纬度计算两点之间的距离?

如何在MySQL中使用经纬度计算两点之间的距离?

Linda Hamilton
发布: 2024-12-18 12:05:20
原创
608 人浏览过

How to Calculate the Distance Between Two Points Using Latitude and Longitude in MySQL?

在 MySQL 中使用纬度和经度计算两点之间的距离

为了确定给定纬度和经度的两点之间的距离,MySQL 提供了一个强大的公式。在这种情况下,一个用户位于城市 3,并寻求找到与其他城市(例如城市 7)的用户的距离。

解决方案在于利用以下查询:

SELECT a.city AS from_city, b.city AS to_city, 
   111.111 *
    DEGREES(ACOS(LEAST(1.0, COS(RADIANS(a.Latitude))
         * COS(RADIANS(b.Latitude))
         * COS(RADIANS(a.Longitude - b.Longitude))
         + SIN(RADIANS(a.Latitude))
         * SIN(RADIANS(b.Latitude))))) AS distance_in_km
  FROM city AS a
  JOIN city AS b ON a.id <> b.id
 WHERE a.city = 3 AND b.city = 7
登录后复制

此查询采用球面余弦定律公式,计算球体上两点之间的距离(以公里为单位)。它将表连接到自身,允许检索两个坐标对进行计算。

此查询的结果将提供城市 3 和城市 7 之间的距离(以公里为单位)。要获取以法定英里为单位的距离,只需将常数 111.1111 替换为 69.0。

为了提高定位附近点的效率,请考虑使用 ST_Distance_Sphere 函数:

select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267)) 
登录后复制

或者,边界框计算可以用于进一步优化搜索。

以上是如何在MySQL中使用经纬度计算两点之间的距离?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板