從資料庫擷取重疊標記半徑內的結果
目標是擷取落在多個標記重疊半徑內的資料點地理空間資料庫.為此,您必須使用圓的方程式來確定某個點是否位於給定半徑內。
將使用者B 的位置視為圓的中心,將使用者A 的位置視為圓週邊上的點,則方程式為了保持一致性,轉換為公里,轉換為:
((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4 (=2^2)
其中:
將此等式轉換為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中文網其他相關文章!