在 Cloudant 中使用 MapReduce 获取地理空间索引的结果
Using MapReduce for results of geospatial indexes in Cloudant
我在 Cloudant 中使用地理空间索引来检索多边形内的所有文档。现在我想计算这些文档的一些基本静态值(例如,一个地区的平均年龄和收入总和)。
是否可以查询地理索引,然后将结果传递给 MapReduce 函数?
我怎样才能做到这一点,最好是在数据库中?我可以避免先查询多边形内的文档 ID,然后发送检索到的 ID 以执行 MapReduce(我正在处理大型数据集)吗?
目前有效的是查询索引以及使用视图(分别)。
我的地理索引
function (doc) {
if (doc.geometry && doc.geometry.coordinates) {
st_index(doc.geometry);
}
}
我的观点
function (doc) {
var beitrag = doc.properties.beitrag;
var schadenaufwand = doc.schadenaufwand;
if(beitrag !== null && typeof beitrag === 'number' ) {
emit(doc._id, doc.properties.beitrag);
}
}
示例 geoJson 文档(原始数据看起来相似)
{
"_id": "01bff77f642fc4249e787d2ded011504",
"_rev": "1-25a9a1a15939d5b21af3fbcc5c2d6ed1",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
7.2316,
40.99
]
},
"properties": {
"age": 34,
"earnings": 982.7
}
}
这个问题很相似,但并没有真正帮助我:Cloudant - apply a view/mapReduce to a geospatial query
这个演示可能是正确的方向:https://examples.cloudant.com/simplegeo_places/_design/geo/index.html
这似乎是一个有用的功能,但答案是 'no'。 Geo 索引器无法对数据执行聚合。
我认为您必须按照您的想法去做 -- 使用返回的文档 ID 列表在另一个 map-reduce 系统中分发计算。
我在 Cloudant 中使用地理空间索引来检索多边形内的所有文档。现在我想计算这些文档的一些基本静态值(例如,一个地区的平均年龄和收入总和)。
是否可以查询地理索引,然后将结果传递给 MapReduce 函数?
我怎样才能做到这一点,最好是在数据库中?我可以避免先查询多边形内的文档 ID,然后发送检索到的 ID 以执行 MapReduce(我正在处理大型数据集)吗?
目前有效的是查询索引以及使用视图(分别)。
我的地理索引
function (doc) {
if (doc.geometry && doc.geometry.coordinates) {
st_index(doc.geometry);
}
}
我的观点
function (doc) {
var beitrag = doc.properties.beitrag;
var schadenaufwand = doc.schadenaufwand;
if(beitrag !== null && typeof beitrag === 'number' ) {
emit(doc._id, doc.properties.beitrag);
}
}
示例 geoJson 文档(原始数据看起来相似)
{
"_id": "01bff77f642fc4249e787d2ded011504",
"_rev": "1-25a9a1a15939d5b21af3fbcc5c2d6ed1",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
7.2316,
40.99
]
},
"properties": {
"age": 34,
"earnings": 982.7
}
}
这个问题很相似,但并没有真正帮助我:Cloudant - apply a view/mapReduce to a geospatial query
这个演示可能是正确的方向:https://examples.cloudant.com/simplegeo_places/_design/geo/index.html
这似乎是一个有用的功能,但答案是 'no'。 Geo 索引器无法对数据执行聚合。
我认为您必须按照您的想法去做 -- 使用返回的文档 ID 列表在另一个 map-reduce 系统中分发计算。