使用MapReduce获取Cloudant中的地理空间索引的结果

时间:2017-01-26 18:03:29

标签: node.js geospatial geojson 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
  }
}

1 个答案:

答案 0 :(得分:1)

这似乎是一个有用的功能,但答案是“没有”。地理索引器无法对数据执行聚合。

我认为您必须按照您的想法进行操作 - 使用返回的doc ID列表将计算分配到另一个map-reduce系统中。