我想用一些POI创建一个CouchDB数据库。 是否有一种方法/查询可以让poi在给定的纬度/长度位置的某个半径范围内(比方说50米)?
我看到了扩展程序https://github.com/couchbase/geocouch,但这意味着我必须重新编译CouchDB,但此时我没有管理员权限来执行此操作。
答案 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)
}
使用这种方法,您可以使用一种简单的机制来使文档位于与参考点相同的边界框中。
这不完美但可能是一个选择