首頁 >資料庫 >mysql教程 >如何查詢資料庫以取得與指定半徑重疊的多個圓形標記的結果?

如何查詢資料庫以取得與指定半徑重疊的多個圓形標記的結果?

Linda Hamilton
Linda Hamilton原創
2024-10-31 03:04:31583瀏覽

How to Query a Database for Results Overlapping Multiple Circular Markers with Specified Radii?

查詢資料庫中半徑重疊範圍內的結果

問題:

問題:

在具有地理特徵的資料庫中數據,您想要選擇與指定半徑的多個圓形標記部分重疊的結果。現有的 SQL 查詢無法準確辨識多個標記重疊的結果。

解:
<code class="sql">SELECT A.user_id, A.radius_id, A.latitude, A.logitude
FROM UserA AS A, 
     (SELECT user_id, latitude, longitude 
       FROM UserB 
       WHERE user_id = 8) AS B
WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12*cos(A.latitude), 2)) <= 4</code>

要得到精確結果,可以使用以下SQL 語句:

解釋:
  1. 解釋:
  2. 此查詢使用等式一個圓,以確定給定點(來自用戶A)是否落在圓的半徑範圍內(由來自使用者 B 的半徑的緯度和經度定義)。涉及以下步驟:
  3. 將經緯度轉換為公里:將經緯度差值乘以111.12,轉換為公里。

計算使用圓方程式的距離:

使用修改後的公式計算點到半徑中心之間的距離POW((A.緯度-B.緯度)*111.12, 2) POW ((A.經度- B.經度)*111.12*cos(A.緯度), 2).比較到半徑的距離: 如果計算的距離小於或等於半徑的平方,則該點落在半徑。 透過使用此查詢,您可以準確識別與多個圓形標記重疊的結果,即使圓圈相互接觸也是如此。

以上是如何查詢資料庫以取得與指定半徑重疊的多個圓形標記的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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