我的数据库拥有超过6000个GPS位置。 我想比较用户的当前位置,并检测用户是否距离6000个地点中的任何一个距离10米。
如果不经历所有6000点并计算它们的相对距离,我怎样才能实现这一目标?
谢谢, 丹尼尔
更新: 如果我将用户的当前位置放在5 ^ 2米的矩形中间并使用current.latitude在bottm_right.latitude和top_left.latitude之间提取所有位置并且同样适用于长度呢?
答案 0 :(得分:0)
一种简单的方法是创建另一个数据库或修改当前数据库以从geohash进行索引。这种方法虽然不能很好地处理位置密度,但如果你的分数分布不均匀,那么它可能没什么改进。
答案 1 :(得分:0)
逻辑上,除非6000个地点按逻辑分组,否则你将不得不经历所有6000个。
如果您可以控制数据库结构,您可以将GPS位置组织到区域(彼此靠近的位置组),那么这应该将您的6000降低到(取决于您想要去的细粒度)到10,20,30或100组这些组中的每一组都可以有一个中点位置和组的总距离然后你可以在考虑总距离的情况下循环整个组,然后从那里细粒化......
答案 2 :(得分:0)
我在这个帖子中使用了Chris Simpson的答案: SQlite Getting nearest locations (with latitude and longitude)
谢谢大家。