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.
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.