查询CouchDB以获得特定半径范围内的poi

时间:2018-04-07 09:03:43

标签: couchdb point-of-interest

我想用一些POI创建一个CouchDB数据库。 是否有一种方法/查询可以让poi在给定的纬度/长度位置的某个半径范围内(比方说50米)?

我看到了扩展程序https://github.com/couchbase/geocouch,但这意味着我必须重新编译CouchDB,但此时我没有管理员权限来执行此操作。

2 个答案:

答案 0 :(得分:0)

解决了它并制作了地图功能:

Error in log("A") : non-numeric argument to mathematical function

答案 1 :(得分:0)

我有一个针对您的用例的替代提案。该提案是使用geohashes

您可以将文档中的位置存储为geohash。 geohash的长度将取决于您想要存储的精确度。

让我们考虑一下这个位置以150米左右的岁差存放。在这种情况下,您将拥有7个字符的geohash,例如' gbsukp7'。检查this进行测试。

然后可以用这种方式重新定义地图功能:

function (doc) {
 emit([doc.geohash.substr(0,4), /* 39.1km × 19.5km bounding box */
      doc.geohash.substr(0,5), /* 4.89km ×  4.89km bounding box */
      doc.geohash.substr(0,6), /* 1.22km ×  0.61km bounding box */
      doc.geohash /* 153m × 153m bounding box */
      ],null)
}

使用这种方法,您可以使用一种简单的机制来使文档位于与参考点相同的边界框中。

这不完美但可能是一个选择