elasticsearch - 在bbox中获取前N个加权GPS点

标签 elasticsearch gps gis geospatial postgis

给定大量的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/

相关文章:

elasticsearch - 如何在 Elastic Cloud 上临时启用 cluster.indices.close.enable?

php - 输入开始和结束的地理位置(纬度和经度)并从数据库(mysql)中搜索输入的开始和结束位置之间有多少个地方?

r - ggplot2 中的离散图例中断

gis - 如何将自定义数据源添加到GeoServer WMS服务?

elasticsearch - Logstash/Elasticsearch的Grok模式

sql-server - 我们可以用 HBase 替换 SQL Server 吗?

elasticsearch - 在 Elasticsearch 查询中检索匹配的数组元素

javascript - 如何使用 JavaScript 访问智能手机的 GPS 服务启用或禁用?

android - Fusionlocationprovider 在 android 中没有 gps 时无法工作

javascript - 连接两个边界框 bbox