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

Zbiór danych Hansen et al. (2013) Global Forest Change w Earth Engine przedstawia zmiany w lasach na całym świecie w latach 2000–2014 w rozdzielczości 30 metrów. Zacznijmy od dodania do mapy danych Hansen et al. Zaimportuj dane o globalnych zmianach w lasach (więcej informacji o wyszukiwaniu i importowaniu zbiorów danych) przez wyszukanie „Hansen forest” i nadanie importowi nazwy gfc2014 lub skopiuj ten kod do edytora kodu:

Edytor kodu (JavaScript)

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

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

domyślna zmiana lasu
Rysunek 1. Domyślna wizualizacja danych o zmianach w lasach 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) Po zakończeniu tej sekcji uzyskasz obraz podobny do tego na rysunku 2, gdzie kolor zielony oznacza obszary, w których w 2000 roku wykryto las, czerwony – szacunkową utratę lasów w okresie badania, niebieski – przyrost lasów w tym okresie, magenta – obszary, w których lasy zostały utracone i zyskane, a obszary nieleśne są zamaskowane.

zmiany w lasach – dostosowane,
Rysunek 2. Niestandardowa wizualizacja danych o zmianach w lasach pochodzących z badań 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, a następnie rozciągane zgodnie z typem danych każdego pasma. Obraz jest czerwony, ponieważ pierwsze 3 pasma to treecover2000, lossgain. Pasmo treecover2000 jest wyrażone w procentach i ma wartości znacznie wyższe niż pasma loss (zielone) i gain (niebieskie), które są binarne ({0, 1}). Obraz jest więc w przeważającej mierze czerwony.

Pasma w danych Global Forest Change to:

Nazwa zespołuOpisZakres
treecover2000Procent pokrycia drzewami w pikselu.0–100
przegrana 1, jeśli w okresie badania wystąpiła utrata. 0 lub 1
zyskać1, jeśli w okresie badania nastąpi wzrost. 0 lub 1
lossyearRok, w którym nastąpiła utrata, liczony od 2001 r. (indeksowany od 1) lub 0, jeśli nie nastąpiła żadna utrata.0–12
first_b30Pasmo czerwone Landsat 7 utworzone na podstawie pierwszych prawidłowych pikseli w 2000 roku (lub starszych, jeśli w 2000 roku nie było prawidłowych pikseli). 0–255
first_b40Pas bliskiej podczerwieni satelity Landsat 7 utworzony na podstawie pierwszych prawidłowych pikseli z 2000 roku.0–255
first_b50Pierwszy obraz w paśmie podczerwieni krótkofalowej z satelity Landsat 7, utworzony na podstawie pierwszych prawidłowych pikseli w 2000 roku.0–255
first_b70Druga krótkofalowa podczerwień z satelity Landsat 7 utworzona na podstawie pierwszych prawidłowych pikseli w 2000 roku.0–255
last_b30Pasmo czerwone Landsat 7 utworzone z najnowszych prawidłowych pikseli w 2012 roku. 0–255
last_b40Pas bliskiej podczerwieni Landsat 7 utworzony z najnowszych prawidłowych pikseli w 2012 roku.0–255
last_b50Pierwsze pasmo podczerwieni krótkofalowej Landsat 7 utworzone na podstawie najnowszych prawidłowych pikseli z 2012 roku.0–255
last_b70Druga krótkofalowa podczerwień z satelity Landsat 7, utworzona na podstawie najnowszych prawidłowych pikseli z 2012 roku.0–255
datamaskBrak danych (0), zmapowana powierzchnia lądu (1) i stałe zbiorniki wodne (2).0, 1, 2

Aby wyświetlić pokrywę leśną w 2000 roku jako obraz w skali 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 rezultacie otrzymasz obraz podobny do tego na rysunku 3.

Pokrywa drzewna w Stanach Zjednoczonych
Rysunek 3. Obraz pokrywy drzewnej w Stanach Zjednoczonych w 2000 roku w skali szarości.

Oto obraz, który wykorzystuje 3 pasma: pasma 5, 4 i 3 Landsat z 2015 r. 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łszywe kolory w Stanach Zjednoczonych
Rysunek 4. Kompozycja w fałszywych kolorach przedstawiająca Stany Zjednoczone, wykonana w 2015 roku przez satelitę Landsat 7.

Jedna z ciekawych wizualizacji zbioru danych Global Forest Change pokazuje zasięg lasów w 2000 roku na zielono, utratę lasów na czerwono, a przyrost lasów na niebiesko. W szczególności ustaw loss jako pierwszy pasmo (czerwone), treecover2000 jako drugie pasmo (zielone), a gain jako trzecie pasmo (niebieskie:

Edytor kodu (JavaScript)

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

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

Pokrycie lasami w Stanach Zjednoczonych
Rysunek 5. Pokrycie drzewami w 2000 roku w Stanach Zjednoczonych (kolor zielony).

Chcemy, aby ubytek lasów był oznaczony jasnoczerwonym kolorem, a przyrost lasów – jasnoniebieskim. Aby to naprawić, możemy użyć parametru wizualizacji max, aby ustawić zakres, do którego rozciągane są dane obrazu. Pamiętaj, że parametr max visualization przyjmuje listę wartości odpowiadających wartościom maksymalnym 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 Stanach Zjednoczonych (czerwony), pokrywa leśna w 2000 r. (zielony) i przyrost (niebieski).

W rezultacie powstaje obraz, na którym lasy są zielone, obszary utracone – czerwone, obszary zyskane – niebieskie, a obszary, na których nastąpił zarówno zysk, jak i utrata – fioletowe. Jednak po bliższym przyjrzeniu się okazuje się, że nie jest to do końca prawda. Zamiast czerwonego koloru, strata jest oznaczona kolorem pomarańczowym. Dzieje się tak, ponieważ jasnoczerwone piksele mieszają się z zielonymi pikselami pod nimi, tworząc pomarańczowe piksele. Podobnie piksele, w których występuje las, utrata i przyrost, są różowe – to połączenie zieleni, jasnej czerwieni i jasnego błękitu. Ilustrację znajdziesz na rysunku 7.

Zmiany w lasach w północno-zachodniej części Pacyfiku
Rysunek 7. Utrata lasów w północno-zachodniej części Stanów Zjednoczonych (czerwony), pokrywa leśna w 2000 r. (zielony) i przyrost (niebieski).

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

Palety

Aby wyświetlić każdy obraz w innym kolorze, możesz użyć parametru palette w przypadku obrazów jednopasmowych.Map.addLayer() Palety umożliwiają ustawienie schematu kolorów, w którym obraz jest wyświetlany (więcej informacji o paletach). Z samouczka dotyczącego interfejsu Earth Engine API wiesz, że kolory w palecie są rozciągane liniowo do wartości minmax.

Jeśli na przykład chcesz użyć zielonej palety do wyświetlenia obrazu przedstawiającego obszar lasu, możesz użyć tego kodu:

Edytor kodu (JavaScript)

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

Wynik powinien wyglądać podobnie do tego na rysunku 8.

powierzchnia lasów NA
Rysunek 8. Pokrywa leśna w Ameryce Północnej w 2000 roku.

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

powierzchnia lasów w Paragwaju,
Rysunek 9. Pokrywa leśna w 2000 roku w okolicach Mariscal Estigarribia w Paragwaju.

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

Edytor kodu (JavaScript)

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

Wynik powinien wyglądać podobnie do tego na rysunku 9. Pamiętaj, że w tym przykładzie ustawiony jest tylko parametr max. Domyślna wartość min to 0.

rozciągnięty Paragwaj,
Rysunek 9. Pokrywa leśna w 2000 roku w okolicach Mariscal Estigarribia w Paragwaju,
rozciągnięta do zakresu [0, 100].

Zamaskowanie

Wszystkie dotychczasowe zdjęcia miały duże czarne obszary, w których dane wynosiły zero. 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 wartość i maskę. Obraz jest renderowany z przezroczystością ustawioną przez maskę, przy czym 0 oznacza całkowitą przezroczystość, a 1 – całkowitą nieprzezroczystość.

Możesz zamaskować obraz samym sobą. Jeśli na przykład zamaskujesz pasmo treecover2000 za pomocą tego samego pasma, wszystkie obszary, w których pokrywa leśna 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ć mniej więcej tak jak na rysunku 10.

Pokrycie koronami drzew w Ameryce
Rysunek 10. Zagęszczenie drzew w 2000 roku, rozciągnięte i zamaskowane.

Przykład

Możesz niemal w całości odtworzyć wizualizację danych Hansena, taką jak na początku samouczka. W tym przykładzie łączymy wszystko w całość, ale z jedną niewielką 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ć podobnie jak na rysunku 11.

Ameryka Północna i Południowa – zysk/strata
Rysunek 11. Utrata lasów (czerwony), pokrywa z 2000 r. (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 pojawią się te warstwy. Każdą warstwę można włączyć lub wyłączyć za pomocą pola wyboru obok niej, a na jej krycie wpływa suwak obok nazwy warstwy.

Już prawie możemy wyświetlić obraz na początku samouczka. Brakuje jednak warstwy pokazującej piksele, w których wystąpiła zarówno utrata, jak i zysk. Brakuje go, ponieważ musimy wiedzieć, jak przeprowadzać obliczenia na pasmach obrazu, zanim będziemy mogli obliczyć, które piksele wykazują zarówno utratę, jak i przyrost. To temat następnej sekcji.