首頁 >資料庫 >mysql教程 >如何使用MySQL計算兩個城市之間的距離?

如何使用MySQL計算兩個城市之間的距離?

Barbara Streisand
Barbara Streisand原創
2024-12-15 01:13:17364瀏覽

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

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