首頁 >資料庫 >mysql教程 >如何在MySQL中使用經緯度計算兩點之間的距離?

如何在MySQL中使用經緯度計算兩點之間的距離?

Linda Hamilton
Linda Hamilton原創
2024-12-18 12:05:20610瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn