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

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

Mary-Kate Olsen
發布: 2024-12-19 22:23:09
原創
600 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板