Сумма данных сбора изображений за отдельные годы в пределах вновь определенных ячеек сетки в GEE

Я работаю в 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 отдельных коллекций функций? Или есть способ вычислить сумму в определенных ячейках сетки для каждого годового слоя в коллекции изображений? Если да, то как?

Спасибо!!


person C. Ashley    schedule 07.10.2019    source источник


Ответы (1)


Думаю, я понял это, используя информацию из этого блога. Ключ состоит в том, чтобы преобразовать коллекцию изображений в стопку изображений.

person C. Ashley    schedule 13.10.2019