Расчет ежегодной потери лесов
В предыдущем разделе вы узнали, как рассчитать общую площадь лесов, потерянных в заданном регионе, с помощью метода reduceRegion
. Вместо расчета общей площади потерь было бы полезно вычислить потери за каждый год. В Earth Engine это можно сделать с помощью метода Grouped Reducer .
Для группировки выходных данных функции reduceRegion()
можно указать группирующий диапазон, который определяет группы по целочисленным значениям пикселей. В следующем примере мы немного изменим предыдущий код и добавим диапазон lossYear
к исходному изображению. Каждый пиксель в диапазоне lossYear
содержит значения от 0 до 14, что указывает на год, в котором произошла потеря данных. Мы также меняем редуктор на группирующий, указав индекс диапазона группировки (1), чтобы области пикселей суммировались и группировались в соответствии со значением в диапазоне lossYear
.
Редактор кода (JavaScript)
// Load country boundaries from LSIB. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Get a feature collection with just the Congo feature. var congo = countries.filter(ee.Filter.eq('country_co', 'CF')); // Get the loss image. // This dataset is updated yearly, so we get the latest version. var gfc2017 = ee.Image('UMD/hansen/global_forest_change_2017_v1_5'); var lossImage = gfc2017.select(['loss']); var lossAreaImage = lossImage.multiply(ee.Image.pixelArea()); var lossYear = gfc2017.select(['lossyear']); var lossByYear = lossAreaImage.addBands(lossYear).reduceRegion({ reducer: ee.Reducer.sum().group({ groupField: 1 }), geometry: congo, scale: 30, maxPixels: 1e9 }); print(lossByYear);
После запуска приведённого выше кода вы увидите данные о площади лесных потерь за год, выведенные во вложенном списке, называемом groups
. Мы можем немного отформатировать вывод, чтобы сделать его словарём, используя год в качестве ключа, а площадь потерь — в качестве значения. Обратите внимание, что мы используем метод format()
для преобразования значений года из диапазона 0–14 в диапазон 2000–2014.
Редактор кода (JavaScript)
var statsFormatted = ee.List(lossByYear.get('groups')) .map(function(el) { var d = ee.Dictionary(el); return [ee.Number(d.get('group')).format("20%02d"), d.get('sum')]; }); var statsDictionary = ee.Dictionary(statsFormatted.flatten()); print(statsDictionary);
Создание диаграммы
Теперь, когда у нас есть данные о годовых убытках, мы готовы построить диаграмму. Мы воспользуемся методом ui.Chart.array.values()
. Этот метод принимает массив (или список) входных значений и массив (или список) подписей для оси X. Редактор кода (JavaScript)
var chart = ui.Chart.array.values({
array: statsDictionary.values(),
axis: 0,
xLabels: statsDictionary.keys()
}).setChartType('ColumnChart')
.setOptions({
title: 'Yearly Forest Loss',
hAxis: {title: 'Year', format: '####'},
vAxis: {title: 'Area (square meters)'},
legend: { position: "none" },
lineWidth: 1,
pointSize: 3
});
print(chart);
Результат должен выглядеть как на диаграмме ниже.

В следующем разделе вы узнаете о другом наборе данных для мониторинга обезлесения, FORMA , и сравните его с данными Хансена и др.