首頁  >  文章  >  資料庫  >  我們如何使用 SQL 來識別重疊的標記半徑?

我們如何使用 SQL 來識別重疊的標記半徑?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 03:55:29772瀏覽

How Can We Identify Overlapping Marker Radiuses Using SQL?

確定半徑內的重疊標記

為了識別落在重疊標記半徑內的人,我們利用幾何原理並將距離轉換為公里以保持一致性.

以(x1, y1) 為圓心、半徑為r 的圓內的點(x, y) 的方程式為:

(x - x1)^2 + (y - y1)^2 <= r^2

因為使用以下公式將度數轉換為公里1 度= 111.12 公里,方程式變為:

((x - x1) * 111.12)^2 + ((y - y1) * 111.12)^2 = 4 (for radius = 2km)

透過此方程,檢索與任何標記半徑重疊的結果的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, 2)) <= 4</code>

在這個查詢中,UserA 的記錄由表A 表示,UserB 的ID 為8 的記錄由表B 表示。 POW() 函數對數字求冪,這裡用來平方座標差。

以上是我們如何使用 SQL 來識別重疊的標記半徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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