首頁 >資料庫 >mysql教程 >如何從地理空間資料庫檢索重疊標記半徑內的資料點?

如何從地理空間資料庫檢索重疊標記半徑內的資料點?

Patricia Arquette
Patricia Arquette原創
2024-10-30 09:48:27269瀏覽

How to Retrieve Data Points Within Overlapping Marker Radii from a Geospatial Database?

從資料庫擷取重疊標記半徑內的結果

目標是擷取落在多個標記重疊半徑內的資料點地理空間資料庫.為此,您必須使用圓的方程式來確定某個點是否位於給定半徑內。

將使用者B 的位置視為圓的中心,將使用者A 的位置視為圓週邊上的點,則方程式為了保持一致性,轉換為公里,轉換為:

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

其中:

  • x 和y 表示使用者A 位置的緯度和經度
  • x1 和y1 表示使用者B 位置的緯度和經度
  • 111.12 將緯度和經度轉換為公里

將此等式轉換為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

注意:為了提高準確性,請考慮使用( A.longitude - B.longitude)*111.12*cos(A.latitude) 或(A.longitude - B.longitude)*111.12*cos( B.latitude) 而不是等式中的(A.longitude - B.longitude )*111.12。

以上是如何從地理空間資料庫檢索重疊標記半徑內的資料點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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