我有两个特征集合,一个包含带测量值的点数据,另一个多边形标记不同的聚类,在这些聚类中进行了多次测量。在谷歌地球引擎中,我试图创建一个新的(点(特征集合(或编辑多边形特征(,其中包含每个单独聚类的平均测量值。
我使用以下代码来连接两个不同的特征集合(这样多边形也包含点数据(:
var mean = ee.Filter.intersects({
leftField: '.geo',
rightField: '.geo'
})
var saveAllJoin = ee.Join.saveAll({
matchesKey: 'Measurements',
})
var intersect = saveAllJoin.apply(Clusters, Measurements, mean)
然而,由于在一个集群中进行了多次测量,因此会生成一个特征集合,该集合包含一个列表,其中包含位于特定集群中的测量点。相反,我正在寻找作为多边形属性的平均测量值。在谷歌地球引擎中(或者可能在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)
})
现在,如果我打印变量";cluster";我得到了一个特征集,其中包含(测量的(粘土属性的平均值。然而,每个特征都得到相同的值(所有测量点的平均值,而不仅仅是特定聚类中的测量点(。
为了清晰起见:我得到了一个包含78个测量位置(点(的形状文件,这些位置作为特征集合加载到我的脚本中,并包含测量值。除此之外,我还有一个带有多边形的形状文件,指示执行了一组测量的16个区域(因此每个集群中大约有4-5个测量(。现在,我试图获得每个多边形(簇(内每个单独多边形的所有测量值(点(的平均值。
我通过对点数据使用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)
})