ObjectMapper:在某个正方形中查找地理位置,按邻近度排序

时间:2011-09-10 00:17:58

标签: ruby postgresql orm geolocation heroku

我正在使用Sinatra和与ObjectMapper接口的PostgreSQL数据库在Heroku上构建一个Ruby应用程序。我需要运行一个查询,它返回一个数据库中所有位置的列表(每个位置都有纬度和经度属性)在某个矩形内(对应于可见的地图区域)。

我可以通过搜索落在地图范围内的纬度来实现这一点,经度相同。然而,我的问题是,如何按接近度排序这些结果?我可以得到所有与查询匹配的结果,然后一旦它们离开数据库就对它们进行排序,但我想分批运行这个查询,只返回最近的5个位置,然后是6-10,然后是11-15,等等

可以这样做吗?

编辑:我还没有决定是否使用PostgreSQL,如果合适,我可能会使用MongoDB。

1 个答案:

答案 0 :(得分:0)

当前的问题是接近什么?您需要定义一个点作为接近的基础。然后,您可以使用ORDER BY子句中的st_distance按几何对象之间的距离进行排序。这可以与LIMIT和OFFSET结合使用,完全符合您的要求。