算法找到附近的朋友?

Bin*_*hen 4 python algorithm

我有一个python程序坐在服务器端管理用户位置信息,每个朋友有一对(经度,纬度),给定一个(经度,纬度)点,我如何有效地找到附近(比如在5KM以内)的朋友?

我有10K用户在线...

谢谢.箱子

aar*_*ing 7

新答案:

我会将lat和long存储在单独的列中.在它们上放置索引.然后,当你想找到特定用户的附近朋友时,只需要做类似的事情

select field1, field1, ..., fieldn from users 
where 
    user_lat > this_lat - phi and user_lat < this_lat + phi
    and
    user_lon > this_lon - omega and user_lon < this_lon + omega
Run Code Online (Sandbox Code Playgroud)

纬度和经度的位置phiomega位置,与您想要的距离相对应.这取决于你在地球上的位置,但有确定的公式可以计算出来.您的数据库也可能为您进行这些计算.


老答案.

我会看四叉树kd树.

我相信,Kd树将成为这里的规范解决方案.