首頁 >後端開發 >php教程 >如何在MySQL中使用半正矢公式計算大圓距離?

如何在MySQL中使用半正矢公式計算大圓距離?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 22:23:09628瀏覽

How to Calculate Great Circle Distance in MySQL Using the Haversine Formula?

使用半正矢公式計算MySQL大圓距離

在MySQL中計算大圓距離,也稱為半正矢距離,可以透過以下步驟實現:

1。取得經度和緯度值

首先,從相關資料來源(例如PHP腳本)擷取經度和緯度座標。

2.使用半正弦公式計算距離

半正弦公式用於計算球體上兩點之間的大圓距離。在 MySQL 中,以下 SQL 語句實現公式:

(
    3959 * acos(
        cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
        sin( radians(origin_lat) ) * sin( radians(lat) )
    )
)
  • origin_lat:原點緯度
  • origin_lon:原點經度
  • lat:目標緯度
  • lon:目標經度

3。距離範圍內查詢

要找指定距離範圍內的位置,請使用下列SQL 語句:

SELECT id,
    (
        3959 * acos(
            cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
            sin( radians(origin_lat) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < distance_range
ORDER BY distance
LIMIT num_results;
  • 位置:包含緯度和經度列的表格
  • distance_range:最大距離,以英里為單位(如果使用6371,則以公里為單位)常數)
  • num_results:傳回結果數

4。範例SQL 查詢

這是一個範例SQL 查詢,可用於尋找距座標(37, -122) 25 英哩內最近的20 個位置:

SELECT id,
    (
        3959 * acos(
            cos( radians(37) ) * cos( radians(lat) ) * cos( radians(lon) - radians(-122) ) +
            sin( radians(37) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;

透過依照這些步驟,您可以使用半正弦公式完全在MySQL 中執行大圓距離計算。

以上是如何在MySQL中使用半正矢公式計算大圓距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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