首页 > 数据库 > mysql教程 > 如何使用MySQL计算两个城市之间的距离?

如何使用MySQL计算两个城市之间的距离?

Barbara Streisand
发布: 2024-12-15 01:13:17
原创
360 人浏览过

How to Calculate the Distance Between Two Cities Using MySQL?

使用 MySQL 计算地理坐标之间的距离

问题:

您有一个包含带有纬度和经度的城市数据的表坐标。您需要从此表计算两个特定城市之间的距离。指导我们完成整个过程。

答案:

要使用纬度和经度计算两点之间的距离,我们可以利用 MySQL 中的球余弦定律公式。下面是详细的解决方案:

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
登录后复制

在此查询中,我们对城市表执行自联接以检索两个城市的坐标对。然后,我们应用球余弦定律公式来计算它们之间的距离,单位为公里。

注意:

如果您更喜欢法定距离英里而不是公里,将常数 111.111 替换为69.0.

或者,对于更现代的方法:

根据 Alexio Vay 的建议,您可以使用 MySQL 中的 ST_Distance_Sphere() 函数,它提供了一个简洁且计算两点之间距离的有效方法:

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

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

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