首頁 > 資料庫 > mysql教程 > 如何使用座標找出 5 英里半徑內的建築物?

如何使用座標找出 5 英里半徑內的建築物?

DDD
發布: 2025-01-09 11:37:43
原創
726 人瀏覽過

How to Find Buildings Within a 5-Mile Radius Using Coordinates?

透過座標定位 5 英里半徑內的建築物

本指南詳細介紹如何有效地檢索給定座標 5 英里半徑內的所有建築物。

第 1 步:最佳化資料儲存

使用幾何或地理資料類型儲存建築物位置資料。這顯著提高了空間查詢效能並防止資料類型轉換問題。

第 2 步:使用 ST_DWithin 或 ST_Distance

兩個函數有利於距離計算:

  1. ST_DWithin: 此函數有效地決定幾何圖形是否落在指定距離內。 要尋找 (-4.6314, 54.0887) 5 英哩範圍內的建築物:

    <code class="language-sql">SELECT name, longitude, latitude
    FROM building
    WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72);
    -- 8046.72 meters = 5 miles</code>
    登入後複製
  2. ST_Distance: 此函數計算以公尺為單位的距離。 使用以下命令將米轉換為英里:distance * 0.000621371。 對於 (-4.6314, 54.0887) 5 英里範圍內的建築物:

    <code class="language-sql">SELECT name, longitude, latitude,
    ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles
    FROM building
    WHERE distance_miles <= 5;</code>
    登入後複製

第 3 步:關鍵考慮因素

  • 在 ST_MakePoint 中保持正確的順序:經度、緯度。
  • ST_Distance 計算繞過空間索引。 在 SELECT 子句中使用它可以避免效能瓶頸。
  • Amazon Athena 在 ST_Distance 中使用度數進行距離計算。

以上是如何使用座標找出 5 英里半徑內的建築物?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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