我有十进制点阵格式的一系列GPS坐标,乘以1.000.000
。例如,纬度51.1
和经度4.1
将保存为Y 51100000
和X 4100000
。这些坐标保存在SQlite 3数据库中。
使用Ruby 1.9.2和Rails 3.0.8,我需要能够获得在某个中心点的某个半径范围内的所有记录。例如,给定纬度51
和经度4
的中心点,我需要查找10
公里范围内的所有记录。
本文很好地解释了如何执行查询以获取这些记录,但SQlite似乎不支持使用的数学函数:http://www.movable-type.co.uk/scripts/latlong-db.html
有没有其他方法可以从数据库中检索不涉及遍历整个表格的正确记录?
谢谢!
答案 0 :(得分:1)
除非您必须使用SQLite,否则请使用Sphinx:
我会将GPS坐标转换为lat / lng坐标,然后使用Sphinx(有gem思考 - sphinx for rails:http://freelancing-god.github.com/ts/en/)。使用Sphinx,您可以使用Sphinx的功能搜索给定圈内的点:@geodist
如何操作的一个很好的例子,您将在此处看到:http://joeyschoblaska.com/blog_posts/220-thinking-sphinx-searching-by-location-and-keyword