给定大量的GPS坐标及其权重,是否有开源软件(数据库/搜索引擎)在边界框或圆形内获取前N个值?
SELECT * FROM list WHERE IS_IN_BBOX(coords, bbox) ORDER BY weight DESC LIMIT 10;
我希望 list 中有数千万个项目。边界框可能很大(整个世界),也可能很小(缩放18),但是搜索仍然应该相当快。另外,我们可以为此使用Elasticsearch吗?我看到它有一个基于距离的搜索,但没有基于权重的搜索。 Postgis呢?
最佳答案
您可以使用ST_MakeEnvelope和&&运算符
SELECT *
FROM list
WHERE list.coords && ST_MakeEnvelope(left, bottom, right, top, srid)
ORDER BY list.weight;
相应地补充左,下,右,上和纬线以进行搜索
关于elasticsearch - 在bbox中获取前N个加权GPS点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34075342/