Grafico della perdita annuale di foreste

Calcolo della perdita annuale di foreste

Nella sezione precedente hai imparato a calcolare la superficie forestale totale persa nella regione di interesse specificata utilizzando il metodo reduceRegion. Invece di calcolare la perdita totale, sarebbe utile calcolare la perdita per ogni anno. Il modo per farlo in Earth Engine è utilizzare un riduttore raggruppato.

Per raggruppare l'output di reduceRegion(), puoi specificare una banda di raggruppamento che definisce i gruppi in base ai valori dei pixel interi. Nell'esempio seguente, modifichiamo leggermente il codice precedente e aggiungiamo la banda lossYear all'immagine originale. Ogni pixel nella banda lossYear contiene valori da 0 a 14, che indicano l'anno in cui si è verificata la perdita. Modifichiamo anche il riduttore in un riduttore raggruppato, specificando l'indice della banda di raggruppamento (1) in modo che le aree dei pixel vengano sommate e raggruppate in base al valore nella banda lossYear.

Editor di codice (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);

Dopo aver eseguito il codice riportato sopra, vedrai l'area di perdita forestale annuale stampata in un elenco nidificato chiamato groups. Possiamo formattare un po' l'output per fare in modo che il risultato sia un dizionario, con l'anno come chiave e l'area di perdita come valore. Tieni presente che utilizziamo il metodo format() per convertire i valori degli anni da 0-14 a 2000-2014.

Editor di codice (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);

Creare un grafico

Ora che abbiamo i numeri delle perdite annuali, possiamo preparare un grafico. Utilizzeremo il metodo ui.Chart.array.values(). Questo metodo accetta un array (o un elenco) di valori di input e un array (o un elenco) di etichette per l'asse X.

Editor di codice (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);

Il risultato dovrebbe essere simile al grafico riportato di seguito.

Tutorial_Hansen_17_chart.png
Figura 1. Grafico della perdita di foreste per anno

Nella sezione successiva, scoprirai un altro set di dati per il monitoraggio della deforestazione, FORMA, e lo confronterai con i dati di Hansen et al.