首頁 >後端開發 >php教程 >如何僅使用 MySQL 計算大圓距離?

如何僅使用 MySQL 計算大圓距離?

Susan Sarandon
Susan Sarandon原創
2024-12-26 14:18:11553瀏覽

How Can I Calculate Great Circle Distance Using Only MySQL?

MySQL 大圓距離(半正矢公式)

本文解決了僅使用MySQL 計算兩個地理座標之間的大圓距離的挑戰。傳統的PHP實現,涉及多個SQL查詢和複雜的計算,可能很麻煩。

為了將PHP程式碼轉換為純MySQL,我們利用Haversine公式,計算球體上兩點之間距離的數學方程式。 MySQL ACOS() 和 RADIANS() 函數支援此公式。

以下是對應的MySQL 查詢:

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;

說明

  • 查詢選擇id 並計算出與標記的距離
  • ACOS() 函數計算兩點之間的角度,然後乘以3959(地球半徑以英里為單位或 6371 為公里)。
  • RADIANS()函數將座標轉換為弧度。
  • HAVING 子句過濾掉距離小於 25 英哩的結果(或公里)。
  • ORDER BY 子句依距離升序對結果進行排序。
  • LIMIT 子句將結果數量限制為 20。

透過使用這種基於 MySQL 的方法,您可以有效地計算座標之間的大圓距離,而無需外部 PHP 計算或額外的 SQL 查詢。

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

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