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

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

Спасибо !!

1 Ответ

0 голосов
/ 14 октября 2019

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

...