Wprowadzenie do danych o zmianach w lasach na całym świecie według Hansena i in.

Zbiór danych Global Forest Change autorstwa Hansena i in. (2013) w Earth Engine przedstawia zmiany lasów na całym świecie w latach 2000–2014 w rozdzielczości 30 metrów. Zacznijmy od dodania do mapy danych Hansena i in. Zaimportuj dane dotyczące globalnych zmian w lasach (dowiedz się więcej o wyszukiwaniu i importowaniu zbiorów danych), wyszukując „Hansen forest” i nadając importowi nazwę gfc2014, lub skopiuj ten kod do edytora kodu:

Edytor kodu (JavaScript)

var gfc2014 = ee.Image('UMD/hansen/global_forest_change_2015');
Map.addLayer(gfc2014);

Kliknij przycisk Uruchom u góry edytora kodu. Powinien wyświetlić się obraz podobny do tego na rysunku 1.

forest change default
Rysunek 1. Domyślna wizualizacja danych o zmianach powierzchni lasów według Hansena i in. (2013).

Nie martw się, wkrótce będzie wyglądać lepiej. (więcej informacji o domyślnych wizualizacjach obrazów w Earth Engine). Na końcu tej sekcji uzyskasz obraz podobny do tego na rysunku 2, gdzie zielony kolor oznacza obszary, na których w 2000 r. wykryto las, czerwony – szacowaną utratę lasu w okresie badania, niebieski – przyrost lasu w tym okresie, purpurowy – obszary, na których las został zarówno utracony, jak i przywrócony, a obszary bez lasu są zamaskowane.

forest change custom
Rysunek 2. Niestandardowa wizualizacja danych dotyczących zmian powierzchni lasów według Hansena i in. (2013).

Pamiętaj, że gdy do mapy dodawany jest obraz wielopasmowy, pierwsze 3 pasma obrazu są wybierane odpowiednio jako czerwone, zielone i niebieskie i rozciągane zgodnie z typem danych każdego pasma. Obraz wygląda na czerwony, ponieważ pierwsze 3 pasma to treecover2000, loss i gain. Pasmo treecover2000 jest wyrażone w procentach i ma wartości znacznie wyższe niż loss (zielone) i gain (niebieskie), które są binarne ({0, 1}). Dlatego obraz jest wyświetlany jako przeważająco czerwony.

Pasma w danych Global Forest Change:

Nazwa zespołuOpisZakres
treecover2000Odsetek zagęszczenia drzew w pikselu.0–100
strata 1, jeśli w okresie badania wystąpiła utrata. 0 lub 1
przybrać1, jeśli w okresie badania nastąpił wzrost. 0 lub 1
lossyearRok, w którym nastąpiła utrata, indeksowany od roku 2001, lub 0, jeśli nie doszło do utraty.0–12
first_b30Czerwone pasmo Landsat 7 utworzone z pierwszych prawidłowych pikseli w 2000 r. (lub starszych, jeśli w 2000 r. nie było prawidłowych pikseli). 0–255
first_b40Pasmo bliskiej podczerwieni Landsat 7 utworzone z pierwszych prawidłowych pikseli w 2000 roku.0–255
first_b50Pierwsze pasmo krótkofalowej podczerwieni Landsat 7 utworzone z pierwszych prawidłowych pikseli w 2000 r.0–255
first_b70Drugie pasmo krótkofalowej podczerwieni Landsat 7 utworzone na podstawie pierwszych prawidłowych pikseli w 2000 r.0–255
last_b30Pasmo czerwone Landsat 7 utworzone na podstawie najnowszych prawidłowych pikseli z 2012 r. 0–255
last_b40Pasmo bliskiej podczerwieni Landsat 7 utworzone na podstawie najnowszych prawidłowych pikseli w 2012 r.0–255
last_b50Pierwsze pasmo krótkofalowej podczerwieni Landsat 7 utworzone z najnowszych prawidłowych pikseli z 2012 r.0–255
last_b70Drugie pasmo krótkofalowej podczerwieni Landsat 7 utworzone z najnowszych prawidłowych pikseli z 2012 r.0–255
datamaskBrak danych (0), zmapowana powierzchnia lądu (1) i stałe zbiorniki wodne (2).0, 1, 2

Aby wyświetlić pokrycie lasem w roku 2000 jako obraz w odcieniach szarości, możesz użyć pasma treecover2000, określonego w drugim argumencie funkcji Map.addLayer():

Edytor kodu (JavaScript)

Map.addLayer(gfc2014, {bands: ['treecover2000']}, 'treecover2000');

W efekcie otrzymasz obraz, który powinien wyglądać mniej więcej tak jak na rysunku 3.

US treecover
Rysunek 3. Obraz w odcieniach szarości przedstawiający zagęszczenie drzew w Stanach Zjednoczonych w 2000 r.

Oto obraz, który wykorzystuje 3 pasma Landsat (5, 4 i 3) z 2015 roku. Ta kombinacja pasm pokazuje zdrową roślinność na zielono, a glebę na fioletowo:

Edytor kodu (JavaScript)

Map.addLayer(
    gfc2014, {bands: ['last_b50', 'last_b40', 'last_b30']}, 'false color');

Wynik powinien wyglądać mniej więcej tak jak na rysunku 4.

Fałszywy kolor USG
Rysunek 4. Kompozycja w fałszywych barwach przedstawiająca Stany Zjednoczone, Landsat 7, 2015 r.

Jedna z wizualizacji zbioru danych Global Forest Change przedstawia zasięg lasów w 2000 r. na zielono, utratę lasów na czerwono, a przyrost lasów na niebiesko. W szczególności ustaw loss jako pierwszy pas (czerwony), treecover2000 jako drugi pas (zielony) i gain jako trzeci pas (niebieski):

Edytor kodu (JavaScript)

Map.addLayer(gfc2014, {bands: ['loss', 'treecover2000', 'gain']}, 'green');

Wartości pasm utraty i przyrostu są binarne, więc będą ledwo widoczne na obrazie, który powinien wyglądać podobnie do rysunku 5.

Pokrycie lasami w USA
Rysunek 5. Zagęszczenie drzew w USA w 2000 roku (zielony).

Chcemy, aby utrata lasów była wyświetlana jako jasnoczerwona, a przyrost lasów jako jasnoniebieski. Aby to naprawić, możemy użyć parametru wizualizacji max, aby ustawić zakres, do którego rozciągane są dane obrazu. Zwróć uwagę, że parametr wizualizacji max przyjmuje listę wartości odpowiadających maksimom dla każdego pasma:

Edytor kodu (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['loss', 'treecover2000', 'gain'],
  max: [1, 255, 1]
}, 'forest cover, loss, gain');

Wynik powinien wyglądać mniej więcej tak jak na rysunku 6.

Zmiany w lasach w USA
Rysunek 6. Utrata lasów w USA (czerwony), pokrycie lasami w 2000 r. (zielony) i przyrost (niebieski).

W rezultacie powstaje obraz, na którym obszary zielone oznaczają las, czerwone – utratę lasu, niebieskie – przyrost lasu, a purpurowe – zarówno przyrost, jak i utratę lasu. Jednak po bliższym przyjrzeniu się widać, że coś jest nie tak. Zamiast straty oznaczonej na czerwono jest ona oznaczona na pomarańczowo. Dzieje się tak, ponieważ jasnoczerwone piksele mieszają się z zielonymi pikselami pod spodem, tworząc pomarańczowe piksele. Podobnie piksele, w których występuje las, ubytek i przyrost, są różowe – to połączenie zielonego, jasnoczerwonego i jasnoniebieskiego. Ilustrację znajdziesz na Rysunku 7.

Zmiany w lasach w północno-zachodniej części wybrzeża Pacyfiku
Rysunek 7. Utrata lasów w północno-zachodniej części wybrzeża Pacyfiku w USA (czerwony), pokrycie w roku 2000 (zielony) i przyrost (niebieski).

Aby uzyskać obraz obiecany na początku samouczka, możesz utworzyć osobne obrazy dla lasu, utraty, przyrostu oraz utraty i przyrostu. Dodaj każdy z tych obrazów do mapy w kolejności, która jest najlepsza do wyświetlania.

Palety

Aby wyświetlić każdy obraz w innym kolorze, możesz użyć parametru palette funkcji Map.addLayer() w przypadku obrazów z jednym pasmem. Palety pozwalają ustawić schemat kolorów, w którym wyświetlany jest obraz (więcej informacji o paletach). Przypomnij sobie z samouczka dotyczącego interfejsu Earth Engine API, że kolory w palecie są liniowo rozciągane do wartości min i max.

Aby na przykład użyć zielonej palety do wyświetlenia obrazu zasięgu lasu, możesz użyć:

Edytor kodu (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00']
}, 'forest cover palette');

Wynik powinien wyglądać mniej więcej tak jak na rysunku 8.

forest extent NA
Rysunek 8. Pokrycie lasami w Ameryce Północnej w 2000 r.

Powiększenie pozwala lepiej ocenić rozdzielczość zdjęć. Rysunek 9 przedstawia obszar wokół Mariscal Estigarribia w Paragwaju.

forest extent Paraguay
Rysunek 9. Zadrzewienie wokół Mariscal Estigarribia w Paragwaju w 2000 roku.

Obraz na rysunku 3 jest nieco ciemny. Problem polega na tym, że pasmo treecover2000 ma typ danych bajtowych ([0, 255]), podczas gdy wartości są wyrażone w procentach ([0, 100]). Aby rozjaśnić obraz, możesz odpowiednio ustawić parametry min lub max. Paleta jest następnie rozciągana między tymi wartościami ekstremalnymi.

Edytor kodu (JavaScript)

Map.addLayer(gfc2014, {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover percent');

Wynik powinien wyglądać mniej więcej tak jak na rysunku 9. Pamiętaj, że w tym przykładzie ustawiono tylko parametr max. Wartość min jest domyślnie ustawiona na 0.

stretched Paraguay
Rysunek 9. Pokrycie lasem w 2000 roku wokół Mariscal Estigarribia w Paragwaju, rozciągnięte do [0, 100].

Zamaskowanie

Wszystkie pokazane do tej pory obrazy miały duże czarne obszary, w których dane mają wartość 0. Na przykład w oceanie nie ma drzew. Aby te obszary były przezroczyste, możesz zamaskować ich wartości. Każdy piksel w Earth Engine ma zarówno wartość, jak i maskę. Obraz jest renderowany z przezroczystością ustawioną przez maskę, gdzie zero oznacza całkowitą przezroczystość, a jeden – całkowitą nieprzezroczystość.

Możesz zamaskować obraz nim samym. Jeśli na przykład zamaskujesz pasmo treecover2000 nim samym, wszystkie obszary, w których pokrycie lasem wynosi zero, będą przezroczyste:

Edytor kodu (JavaScript)

Map.addLayer(gfc2014.mask(gfc2014), {
  bands: ['treecover2000'],
  palette: ['000000', '00FF00'],
  max: 100
}, 'forest cover masked');

Wynik powinien wyglądać podobnie jak na rysunku 10.

Zagęszczenie drzew w Ameryce Północnej i Południowej
Rysunek 10. Zagęszczenie drzew w roku 2000, rozciągnięte i zamaskowane.

Przykład

Można już prawie utworzyć wizualizację danych Hansena, taką jak na początku samouczka. W tym przykładzie łączymy wszystko z jedną małą różnicą. Zamiast określać parametr bands w wywołaniu Map.addLayer, tworzymy nowe obrazy za pomocą select():

Edytor kodu (JavaScript)

var treeCover = gfc2014.select(['treecover2000']);
var lossImage = gfc2014.select(['loss']);
var gainImage = gfc2014.select(['gain']);

// Add the tree cover layer in green.
Map.addLayer(treeCover.updateMask(treeCover),
    {palette: ['000000', '00FF00'], max: 100}, 'Forest Cover');

// Add the loss layer in red.
Map.addLayer(lossImage.updateMask(lossImage),
            {palette: ['FF0000']}, 'Loss');

// Add the gain layer in blue.
Map.addLayer(gainImage.updateMask(gainImage),
            {palette: ['0000FF']}, 'Gain');

Wynik powinien wyglądać mniej więcej tak jak na rysunku 11.

Ameryka Północna i Południowa – utrata i zysk
Rysunek 11. Utrata lasów (czerwony), pokrycie w roku 2000 (zielony) i przyrost (niebieski).

Zauważ, że są 3 wywołania addLayer(). Każde wywołanie addLayer() dodaje warstwę do mapy. Po najechaniu kursorem na przycisk Warstwy w prawym górnym rogu mapy zobaczysz te warstwy. Każdą warstwę można włączyć lub wyłączyć za pomocą pola wyboru obok niej, a jej przezroczystość można zmienić za pomocą suwaka obok nazwy warstwy.

Możemy już prawie utworzyć obraz pokazany na początku samouczka. Brakuje jednak warstwy pokazującej piksele, na których nastąpiła zarówno utrata, jak i przyrost. Brakuje go, ponieważ musimy wiedzieć, jak wykonać pewne obliczenia na pasmach obrazu, zanim będziemy mogli obliczyć, które piksele pokazują zarówno utratę, jak i przyrost. Temat ten omówimy w następnej sekcji.