Wykres rocznych strat lasów

Obliczanie rocznej utraty lasów

W poprzedniej sekcji dowiedzieliśmy się, jak obliczyć całkowitą utratę powierzchni lasów w danym regionie za pomocą metody reduceRegion. Zamiast obliczać łączną stratę, warto obliczyć stratę w każdym roku. Aby to osiągnąć w Earth Engine, użyj reduktora zgrupowanego.

Aby pogrupować dane wyjściowe polecenia reduceRegion(), możesz określić pasmo grupowania, które definiuje grupy według wartości pikseli w postaci liczb całkowitych. W poniższym przykładzie nieznacznie modyfikujemy poprzedni kod i dodajemy do oryginalnego obrazu pasmo lossYear. Każdy piksel w paśmie lossYear zawiera wartości od 0 do 14, które wskazują rok, w którym nastąpiła utrata. Zmieniamy też funkcję redukującą na funkcję redukującą grupę, określając indeks pasma grupy (1), aby obszary pikseli były sumowane i grupowane według wartości w paśmie lossYear.

Edytor kodu (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);

Po uruchomieniu powyższego kodu zobaczysz obszar rocznej utraty lasów wydrukowany na zagnieżdżonej liście o nazwie groups. Możemy nieco sformatować dane wyjściowe, aby wynik był słownikiem, w którym kluczem jest rok, a wartością – obszar utraty. Zauważ, że do przekształcenia wartości roku z zakresu 0–14 na zakres 2000–2014 używamy metody format().

Edytor kodu (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);

Tworzenie wykresu

Mając już dane o stratach rocznych, możemy przygotować wykres. Użyjemy metody ui.Chart.array.values(). Ta metoda przyjmuje tablicę (lub listę) wartości wejściowych i tablicę (lub listę) etykiet osi X.

Edytor kodu (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);

Wynik powinien wyglądać jak na wykresie poniżej.

Tutorial_Hansen_17_chart.png
Rysunek 1. Wykres utraty lasów w poszczególnych latach

W następnej sekcji dowiesz się więcej o innym zbiorze danych do monitorowania wylesiania, FORMA, i porównasz go z danymi Hansen et al.