Reducers GEE中新定义网格单元内图像采集数据的独立年份总和
我在Google Earth引擎Javascript API中工作,已经定义了覆盖我感兴趣区域的网格单元。它是:Reducers GEE中新定义网格单元内图像采集数据的独立年份总和,reducers,google-earth-engine,Reducers,Google Earth Engine,我在Google Earth引擎Javascript API中工作,已经定义了覆盖我感兴趣区域的网格单元。它是: var lat_start = 32.31644; var lat_end = 37.31914; var lon_start = 35.61394; var lon_end = 42.38504; // 2) Decide no. of (in this case: equally sized) cells var num_cells = 10; var lon_edge = (
var lat_start = 32.31644;
var lat_end = 37.31914;
var lon_start = 35.61394;
var lon_end = 42.38504;
// 2) Decide no. of (in this case: equally sized) cells
var num_cells = 10;
var lon_edge = (lon_end-lon_start)/Math.sqrt(num_cells);
var lat_edge = (lat_end-lat_start)/Math.sqrt(num_cells);
// 3) Create the grid
var polys = [];
var polys_line = [];
var cell_id = 0;
for (var lon = lon_start; lon < lon_end; lon += lon_edge) {
var x1 = lon;
var x2 = lon + lon_edge;
for (var lat = lat_start; lat < lat_end; lat += lat_edge) {
cell_id = cell_id + 1;
var y1 = lat;
var y2 = lat + lat_edge;
polys.push(ee.Feature(ee.Geometry.Rectangle(x1, y1, x2, y2), {label: cell_id}));
}
}
var grid = ee.FeatureCollection(polys);
我的目标是在网格单元级别获得一个特征集合,用于识别给定年份每个网格中的总人口。我不认为我可以在图像采集中使用“reduce”函数,因为这将对图像采集定义的单元(我的网格单元更大)在不同年份的总体进行求和
到目前为止,我的方法是隔离图像层,希望将它们重新拼接到数据帧中。到目前为止,每年都是这样:
pop_01 = pop.filterDate('2001');
var pop_01_img = pop_01.reduce(ee.Reducer.sum());
var pop_grid_01 = pop_01_img.reduceRegions({collection: grid,reducer:
ee.Reducer.sum(), scale: 6000,});
这将产生一系列要素集合,我可以使用内部联接合并两个要素集合。但我如何合并更多?我正在使用以下基本的内部联接函数:
var toyFilter = ee.Filter.equals({
leftField: 'system:index',
rightField: 'system:index'
});
var innerJoin = ee.Join.inner('primary', 'secondary');
var toyJoin = innerJoin.apply(pop_grid_00, pop_grid_01, toyFilter);
如果你想完成我上面描述的任务,你会怎么做?您认为创建单独的图像和相应的要素集合并将它们重新组合在一起最有效吗?如果是,我们如何对10个单独的要素集合进行内部联接?或者,是否有一种方法可以让我计算图像采集中每一层的定义网格单元内的总和?如果是,如何进行
谢谢 我想我是利用了来自的信息弄明白的。关键是将图像集合转换为一组图像
var toyFilter = ee.Filter.equals({
leftField: 'system:index',
rightField: 'system:index'
});
var innerJoin = ee.Join.inner('primary', 'secondary');
var toyJoin = innerJoin.apply(pop_grid_00, pop_grid_01, toyFilter);