首頁 >資料庫 >mysql教程 >如何使用緯度和經度來找出指定半徑內最近的地理記錄?

如何使用緯度和經度來找出指定半徑內最近的地理記錄?

Susan Sarandon
Susan Sarandon原創
2025-01-18 16:07:13966瀏覽

How to Find the Nearest Geographic Record Within a Specified Radius Using Latitude and Longitude?

經緯度資料庫中確定距離

給定經緯度座標,任務是從資料庫中檢索具有最近匹配經緯度的記錄,同時確保距離保持在指定的閾值內。如果距離超過指定的限制,則不應傳回任何記錄。

提供的表格結構包括經度、緯度和其他位置相關資訊的欄位。為此,我們使用以下SQL查詢:

<code class="language-sql">SELECT latitude, longitude, SQRT(
    POW(69.1 * (latitude - [startlat]), 2) +
    POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < [radius]</code>

此查詢中,[startlat][startlng] 表示測量距離的起始座標。距離計算使用 Haversine 公式進行,該公式準確地確定球體(在本例中為地球)上兩點之間的距離。 POW() 函數對起始座標和目標座標之間的差異進行平方,COS() 函數考慮了地球的曲率。最終結果是以英里為單位的距離。

透過包含具有條件「distance

以上是如何使用緯度和經度來找出指定半徑內最近的地理記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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