如何找到“附近”的结果?

时间:2010-06-23 01:46:45

标签: rdbms geospatial spatial

假设您拥有用户的纬度和经度,并且想要找到附近...让我们说餐馆,您如何查询您的关系数据库?对于像“25英里范围内的餐馆”这样的东西?

您是否只是查询一个正方形的餐馆,其长度和纬度大于/小于用户的位置+/- 25英里(转换为我猜的度数),然后以任何语言过滤掉“角落”使用?或者可以/应该直接在SQL中执行吗?

5 个答案:

答案 0 :(得分:4)

例如,查看oracle中可用的空间要素 - 这是维基百科条目http://en.wikipedia.org/wiki/Spatial_query,以及来自noaa https://www.ngdc.noaa.gov/wiki/index.php?title=Sample_Oracle_Spatial_Queries的示例的链接

答案 1 :(得分:3)

在这里找到一个非常好的指南:http://code.google.com/apis/maps/articles/phpsqlsearch.html

比许多其他解释简单得多......

答案 2 :(得分:2)

使用Haversine formula

的SQL实现

答案 3 :(得分:2)

如果您将纬度/长度视为距离赤道任何显着距离的直线网格(例如,在纽约,或伦敦,或莫斯科),则您的“圆”将已经完全变形。修剪“正方形”的角落并没有太大改善。

答案 4 :(得分:1)

我知道你特别提到过关系数据库,但我认为你至少要研究一个具有空间查询本机实现的系统。

就个人而言,我发现MongoDB非常优雅:http://www.mongodb.org/display/DOCS/Geospatial+Indexing