1
使用Haversine的算法並使用鏈接here我發現我的一半解決方案。所以這裏是問題:卷積/修改的Haversine算法問題
用戶A站在「拿撒勒」,周圍有50公里的雷達,我可以使用上面鏈接的算法找到該範圍內的所有其他用戶。現在我的問題是,用戶站在B點(用戶在紐瓦克附近)誰也有一個50公里的雷達,與用戶A的雷達相交。
因此,隨着我能夠獲取的結果用戶A的50公里雷達,使用上述算法,我也想包括雷達相交的所有用戶(如用戶B)。
我不確定這是否使用正確的算法,或者我應該對這個查詢有完全不同的方法。
以下是我寫的只是獲取所有誰下爲50km用戶A的雷達屬於用戶和我得到的最準確的結果,這是問題的第一部分查詢。
SELECT
*
FROM
users
WHERE
acos(sin(".$user_location_A['latitude'].") * sin(radians(latitude)) +
cos(".$user_location_A['latitude'].") * cos(radians(latitude)) * cos(radians(longitude) -
(".$user_location_A['longitude']."))) * 6371 <= 50
以上查詢的解釋如下:
- 罪(弧度(
latitude
)),餘弦(弧度(latitude
)) - 這裏的緯度是在列名緯度每個用戶的用戶表 - COS(弧度(
longitude
) - 這裏的經度是列名經度users表中的每個用戶 50
在查詢到底是50公里半徑,我想創造一個雷達。
不知道你想要什麼。所有的A&B(刪除重複)只有在A和B? –
所有的雷達都有相同的半徑嗎? – geocodezip
對評論-1的回答: 1.我需要所有在A雷達內的用戶(我已經得到) 2.我還需要雷達與A相似的用戶,如用戶B -2: 不,不一定,每個用戶的雷達可以不同,是一個問題嗎? –