如何在给定时间在大表中找到接近的GPS坐标

时间:2014-04-29 01:20:15

标签: algorithm gps

(这是我正在研究的系统设计的理论问题 - 建议改变很棒) 我有一张GPS数据表,其中包含以下行:

  • locID - PK
  • userID - 应用用户的用户ID
  • lat
  • timestamp - 记录此数据的UNIX时间点

我正在尝试设计一种方法,允许服务器浏览此数据集并检查是否有任何"用户"在一个特定的地方"在特定时间范围(2分钟)一起(例如,相隔50米) - 例如。 user1在2分钟的时间间隔内访问了user2的相同附近区域。

我目前唯一能想到的方法是使用坐标距离检查算法逐行检查每一行中的所有行。 - 但如果用户遍布全球并且在5分钟的时间内拥有数千甚至数百万行,这就无法有效地解决问题。

如果我想知道他们在彼此附近有多长时间怎么办?

任何想法/想法都会有所帮助。包括数据库使用?我在想PostgreSQL或Cassandra。和表格布局。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

将地球划分为补丁,其中每个补丁都足够小,只能容纳几千人,比如200米乘200米,并将patchID作为属性添加到数据库中的每个条目。请注意,如果两个用户不在同一个补丁或相邻补丁中,则它们不能非常接近。因此,在给定时间检查同一位置的两个用户时,查询数据库中的给定patchID和周围的patchIDs,以获取可能包含可能冲突的数据库子集。