【问题标题】:How to create a feature collection with mean values of certain features and the location/shape of a different feature collection?如何创建具有某些特征的平均值和不同特征集合的位置/形状的特征集合?
【发布时间】:2020-12-20 18:17:23
【问题描述】:

我有两个特征集合,一个包含带有测量值的点数据,另一个多边形标记不同的集群,其中几个测量值是靠在一起进行的。在 Google 地球引擎中,我正在尝试创建一个新的(点)要素集合(或编辑多边形要素),其中包含每个单独集群的平均测量值。

我使用下面的代码来加入两个不同的特征集合(这样多边形也包含点数据):

 var mean = ee.Filter.intersects({
    leftField: '.geo',
    rightField: '.geo'
  })

var saveAllJoin = ee.Join.saveAll({
  matchesKey: 'Measurements',
})

var intersect = saveAllJoin.apply(Clusters, Measurements, mean)

但是,由于在一个集群内进行了多次测量,因此会产生一个特征集合,其中包含一个列表,其中测量点位于特定集群内。相反,我正在寻找作为多边形属性的平均测量值。在 Google 地球引擎(或可能在 QGIS)中执行此操作的方法是什么?

我尝试使用ee.FeatureCollection.map 来计算每个单独多边形的平均值:

var clust = ee.FeatureCollection(Clusters).map(function(feature) {
  var meanClay = Measurements.reduceColumns({
    reducer: ee.Reducer.mean(),
    selectors: ['Clay']
  })
  return feature.set('mean', meanClay)
})

现在,如果我打印变量“clust”,我会得到一个特征集合,其中包含(测量的)属性粘土的平均值。但是,每个特征都获得相同的值(所有测量点的平均值,而不仅仅是特定集群中的那些)。

为了清楚起见:我得到了一个包含 78 个测量位置(点)的 shapefile,它们作为特征集合加载到我的脚本中并包含测量值。除此之外,我还有一个带有多边形的 shapefile,指示执行了一组测量的 16 个区域(因此每个集群中大约有 4-5 次测量)。现在我正在尝试为每个单独的多边形获取每个多边形(集群)内所有测量值(点)的平均值。

【问题讨论】:

  • 我不确定我是否了解您的数据形状,但您是否查看过ee.FeatureCollection.map() 以总结每个多边形中包含的点位置?
  • 我现在用ee.FeatureCollection.map() 尝试了一些东西,但是我对 Google 地球引擎还是很陌生,并没有得到我想要的结果。我在原来的问题中添加了一些额外的信息。我希望现在更清楚了。
  • 在映射函数中,你应该使用Measurements而不是feature.get来提取你想要汇总的属性。

标签: merge qgis google-earth-engine


【解决方案1】:

我通过在点数据上使用filterBounds() 解决了这个问题。这里 filterBounds 用于过滤点数据,使其仅包含特定集群内的点。

var clust = ee.FeatureCollection(Clusters).map(function(feature) {
  var meanClay = ee.FeatureCollection(Measurements.filterBounds(feature.geometry()))
    .reduceColumns({
      reducer: ee.Reducer.mean(),
      selectors: ['Clay']
    })
  return feature.set(meanClay)
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多