Obliczanie rocznej utraty lasów
In the previous section you learned how to
calculate total forest area lost in
the given region of interest using the reduceRegion method. Zamiast obliczać łączną stratę, warto obliczyć stratę dla każdego roku. W Earth Engine można to osiągnąć za pomocą reduktora grupowego.
Aby pogrupować dane wyjściowe 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 nieco zmodyfikujemy poprzedni kod i dodamy pasmo lossYear do oryginalnego obrazu. 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ż reduktor na reduktor grupowany, określając indeks pasma grupowania (1), aby obszary pikseli były sumowane i grupowane zgodnie z 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 roczną utratę powierzchni lasów wydrukowaną na zagnieżdżonej liście o nazwie groups. Możemy nieco sformatować dane wyjściowe, aby uzyskać słownik, w którym kluczem jest rok, a wartością obszar utraty. Zauważ, że używamy metody format(), aby przekonwertować wartości roku z 0–14 na 2000–2014.
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,
Teraz, gdy mamy już roczne dane o stratach, możemy przygotować wykres. Użyjemy metody ui.Chart.array.values(). Ta metoda przyjmuje tablicę (lub listę) wartości wejściowych oraz 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.
W następnej sekcji dowiesz się więcej o innym zbiorze danych do monitorowania wylesiania, FORMA, i porównasz go z danymi Hansena i in.