首页 >数据库 >mysql教程 >如何在MySQL中计算两个地理坐标之间的距离?

如何在MySQL中计算两个地理坐标之间的距离?

Susan Sarandon
Susan Sarandon原创
2024-12-15 16:45:18224浏览

How to Calculate the Distance Between Two Geographic Coordinates in 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;

此查询检索两个城市(3 和 7)的坐标对并应用公式,生成以公里为单位的距离。

对于附近的点,请避免使用基于距离的过滤器,因为它们可能很慢。相反,采用边界框计算技术,如下所述:http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/.

现代解决方案(2022)

为了跟上最新技术,请考虑使用以下缩写代码:

SELECT ST_Distance_Sphere(
point(-87.6770458, 41.9631174),
point(-73.9898293, 40.7628267))

此查询使用 ST_Distance_Sphere() 函数来计算两点之间的距离。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn