首頁 >資料庫 >mysql教程 >如何在MySQL中計算兩個地理座標之間的距離?

如何在MySQL中計算兩個地理座標之間的距離?

Susan Sarandon
Susan Sarandon原創
2024-12-15 16:45:18228瀏覽

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