【发布时间】:2011-06-29 05:04:35
【问题描述】:
给定一个包含纬度 + 经度位置的地点数据库,例如 40.8120390、-73.4889650,我如何找到特定位置给定距离内的所有位置?
从DB中选择所有位置,然后逐个遍历,获取与起始位置的距离,看看它们是否在指定距离内,似乎效率不高。有没有一种好方法可以缩小数据库中最初选择的位置?一旦我有(或没有?)一组缩小的位置,我是否仍要逐个检查距离,还是有更好的方法?
我这样做的语言并不重要。谢谢!
【问题讨论】:
-
这可能是你需要的:en.wikipedia.org/wiki/K-d_tree
-
一个 SQL 查询不能解决它吗? SELECT * FROM Places WHERE (Lat - :Lat)^2 + (Long - :Long)^2
-
@Ashu,nOiAd,不幸的是我不得不放弃那个项目,所以我最终没有选择解决方案。如果你们在项目中使用其中一种解决方案,我和其他人将非常感谢你们的 cmets 在这里。
标签: algorithm geolocation gps location latitude-longitude