我正在尝试执行一个顺序查询,以查找最接近current_user的记录。
我知道两点之间的距离是:current_location.euclidean_distance(@record.position)
如何将其用于PostGIS(或active_record/spatial_adapter)查询?
最佳答案
要获得最接近的5:
SELECT * FROM your_table
ORDER BY ST_Distance(your_table.geom, ST_Geomfromtext(your point as wkt))
limit 5;
如果您有一个庞大的数据集,并且知道您不想进行进一步搜索,例如说1 km,那么执行以下查询将更高效:
SELECT * FROM your_table
WHERE ST_DWithin(your_table.geom, ST_Geomfromtext(your point as wkt, 1000)
ORDER BY ST_Distance(your_table.geom, ST_Geomfromtext(your point as wkt))
limit 5;
/尼克斯
关于ruby-on-rails - 按最近的顺序排序-PostGIS,GeoRuby,spatial_adapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5111627/