GEE中新定义的网格单元中图像收集数据的单独年份的总和

问题描述 投票:0回答:1

我正在使用Google Earth Engine 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 = (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);

我正在使用Worldpop人口估算数据,即以年份为层次的图像集合(2000-2016)。

var pop = ee.ImageCollection("WorldPop/GP/100m/pop").filterBounds(grid);

我的目标是在网格单元级别获得一个特征集合,以标识给定年份中每个网格的总人口。我不[[认为可以在图像集合上使用“减少”功能,因为这将对由图像集合定义的单元(我的网格单元较大)的年总数进行求和。

到目前为止,我的方法一直是隔离图像层,希望将它们重新粘贴到数据帧中。到目前为止,每年看起来像这样:

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个单独的要素集合进行内部联接?还是我可以通过一种方法来计算图像集合中每一年图层的定义网格单元内的总和?如果是,如何?

谢谢!

reducers google-earth-engine
1个回答
0
投票
[我想我已经用this blog中的信息弄清楚了。关键是将图像集合转换为图像堆栈。
© www.soinside.com 2019 - 2024. All rights reserved.