Gráfico da perda anual de florestas

Calculando a perda anual de florestas

Na seção anterior, você aprendeu a calcular a área total de floresta perdida na região de interesse usando o método reduceRegion. Em vez de calcular a perda total, seria útil calcular a perda de cada ano. Para fazer isso no Earth Engine, use um redutor agrupado.

Para agrupar a saída de reduceRegion(), especifique um intervalo de agrupamento que define grupos por valores de pixel inteiros. No exemplo a seguir, modificamos um pouco o código anterior e adicionamos a banda lossYear à imagem original. Cada pixel na banda lossYear contém valores de 0 a 14, indicando o ano em que a perda ocorreu. Também mudamos o redutor para um redutor agrupado, especificando o índice da banda de agrupamento (1) para que as áreas de pixel sejam somadas e agrupadas de acordo com o valor na banda lossYear.

Editor de código (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);

Depois de executar o código acima, você verá a área de perda florestal anual impressa em uma lista aninhada chamada groups. Podemos formatar um pouco a saída para que o resultado seja um dicionário, com o ano como chave e a área de perda como valor. Estamos usando o método format() para converter os valores de ano de 0 a 14 para 2000 a 2014.

Editor de código (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);

Como criar um gráfico

Agora que temos os números de perda anual, podemos preparar um gráfico. Vamos usar o método ui.Chart.array.values(). Esse método usa uma matriz (ou lista) de valores de entrada e uma matriz (ou lista) de rótulos para o eixo X.

Editor de código (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);

O resultado será semelhante ao gráfico abaixo.

Tutorial_Hansen_17_chart.png
Figura 1. Gráfico da perda de floresta por ano

Na próxima seção, você vai conhecer outro conjunto de dados de monitoramento do desmatamento, o FORMA, e compará-lo aos dados de Hansen et al.