Kolekcja obrazów to zbiór obrazów Earth Engine. Na przykład zbiór wszystkich zdjęć z satelity Landsat 8 to ee.ImageCollection
. Podobnie jak obraz SRTM, z którym pracujesz, kolekcje obrazów też mają identyfikator. Podobnie jak w przypadku pojedynczych obrazów, identyfikator kolekcji obrazów możesz znaleźć, przeszukując katalog danych Earth Engine w edytorze kodu i sprawdzając stronę szczegółów zbioru danych. Na przykład wyszukaj „landsat 8 toa” i kliknij pierwszy wynik, który powinien odpowiadać zbiorowi danych
USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance.
Zaimportuj ten zbiór danych, klikając przycisk Importuj, i zmień jego nazwę na l8
lub skopiuj identyfikator do konstruktora kolekcji obrazów:
Edytor kodu (JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
Filtrowanie kolekcji obrazów
Warto zauważyć, że ta kolekcja zawiera wszystkie zebrane sceny Landsat 8 z całego świata. Często przydatne jest wyodrębnienie pojedynczego obrazu lub podzbioru obrazów, na których można testować algorytmy. Aby ograniczyć kolekcję według czasu lub przestrzeni, należy ją przefiltrować. Aby na przykład odfiltrować kolekcję i wyświetlić obrazy obejmujące konkretną lokalizację, najpierw zdefiniuj interesujący Cię obszar za pomocą punktu (lub linii lub wielokąta) przy użyciu narzędzi do rysowania geometrii. Przesuń widok do interesującego Cię obszaru, najedź kursorem na Importy geometrii (jeśli masz już zdefiniowane co najmniej 1 geometrię) i kliknij +nowa warstwa (jeśli nie masz żadnych importów, przejdź do następnego kroku). Użyj narzędzia do rysowania punktów () i narysuj punkt w interesującym Cię obszarze. Nadaj importowi nazwę
point
. Teraz przefiltruj kolekcję l8
, aby uzyskać tylko obrazy, które przecinają punkt, a następnie dodaj drugi filtr, aby ograniczyć kolekcję tylko do obrazów uzyskanych w 2015 roku:
Edytor kodu (JavaScript)
var spatialFiltered = l8.filterBounds(point); print('spatialFiltered', spatialFiltered); var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31'); print('temporalFiltered', temporalFiltered);
W tym przypadku filterBounds()
i filterDate()
to skrócone metody bardziej ogólnej metody filter()
w przypadku kolekcji obrazów, która przyjmuje jako argument ee.Filter()
. Więcej informacji o tych metodach znajdziesz na karcie Dokumenty w Edytorze kodu. Argumentem funkcji filterBounds()
jest punkt, który został zdigitalizowany, a argumentami funkcji filterDate()
są dwie daty wyrażone jako ciągi znaków.
Pamiętaj, że możesz print()
odfiltrowane kolekcje. Nie możesz wydrukować więcej niż 5000 rzeczy naraz, więc nie możesz na przykład wydrukować całej kolekcji l8
. Po wykonaniu metody print()
możesz sprawdzić wydrukowane kolekcje w konsoli. Pamiętaj, że gdy rozwiniesz ImageCollection
za pomocą suwaka , a następnie rozwiniesz listę
features
, zobaczysz listę obrazów, z których każdy można rozwinąć i sprawdzić. To jeden ze sposobów na znalezienie identyfikatora konkretnego obrazu. Innym, bardziej programowym sposobem uzyskiwania pojedynczych obrazów do analizy jest sortowanie kolekcji w celu uzyskania najnowszego, najstarszego lub optymalnego obrazu w odniesieniu do określonej właściwości metadanych. Na przykład podczas sprawdzania obiektów obrazów w drukowanych kolekcjach obrazów możesz zauważyć właściwość metadanych o nazwie CLOUD_COVER
. Możesz użyć tej właściwości, aby uzyskać najmniej zachmurzony obraz z 2015 roku w interesującym Cię obszarze:
Edytor kodu (JavaScript)
// This will sort from least to most cloudy. var sorted = temporalFiltered.sort('CLOUD_COVER'); // Get the first (least cloudy) image. var scene = sorted.first();
Możesz już wyświetlić obraz.
Dygresja: wyświetlanie obrazów RGB
Gdy do mapy zostanie dodany obraz wielopasmowy, Earth Engine wybierze pierwsze 3 pasma obrazu i wyświetli je domyślnie jako czerwone, zielone i niebieskie, rozciągając je zgodnie z typem danych, jak opisano wcześniej. Zwykle to nie wystarczy. Jeśli na przykład dodasz do mapy obraz Landsat (scene
w poprzednim przykładzie), wynik będzie niezadowalający:
Edytor kodu (JavaScript)
Map.centerObject(scene, 9); Map.addLayer(scene, {}, 'default RGB');
Pamiętaj, że najpierw mapa jest wyśrodkowana na obrazie w skali powiększenia 9. Obraz jest wtedy wyświetlany z pustym obiektem ({}
) dla parametru visParams
(szczegóły znajdziesz w Map.addLayer()
). W rezultacie obraz jest wyświetlany z domyślną wizualizacją: pierwsze 3 pasma są odpowiednio mapowane na R, G i B, a następnie rozciągane do zakresu [0, 1], ponieważ pasma mają typ danych float
. Oznacza to, że pasmo aerozoli przybrzeżnych („B1”) jest renderowane na czerwono, pasmo niebieskie („B2”) jest renderowane na zielono, a pasmo zielone („B3”) jest renderowane na niebiesko. Aby wyrenderować obraz jako kompozycję w prawdziwych kolorach, musisz poinformować Earth Engine, że w przypadku kolorów czerwonego, zielonego i niebieskiego ma używać odpowiednio pasm „B4”, „B3” i „B2” z danych Landsat 8. Określ, których pasm używać, za pomocą właściwości bands
obiektu visParams
. Więcej informacji o pasmach Landsat znajdziesz w tym materiale.
Musisz też podać wartości min
i max
odpowiednie do wyświetlania odbicia od typowych obiektów na powierzchni Ziemi. Chociaż listy mogą służyć do określania różnych wartości dla każdego pasma, w tym przypadku wystarczy określić 0.3
jako max
i użyć domyślnej wartości zero dla parametru min
. Łączenie parametrów wizualizacji w jeden obiekt i wyświetlanie:
Edytor kodu (JavaScript)
var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(scene, visParams, 'true-color composite');
Wynik powinien wyglądać podobnie jak na rysunku 5. Pamiętaj, że ten kod przypisuje obiekt parametrów wizualizacji do zmiennej, która może być używana w przyszłości. Jak wkrótce się przekonasz, ten obiekt będzie przydatny podczas wizualizacji kolekcji obrazów.

Spróbuj wizualizować różne pasma. Inna popularna kombinacja to „B5”, „B4” i „B3”, która jest nazywana kompozycją w fałszywych kolorach. Inne ciekawe kompozycje w fałszywych kolorach są opisane tutaj.
Earth Engine jest przeznaczony do analiz na dużą skalę, więc nie musisz ograniczać się do pracy z jedną sceną. Teraz możesz wyświetlić całą kolekcję jako kompozycję RGB.
Wyświetlanie kolekcji obrazów
Dodawanie kolekcji obrazów do mapy jest podobne do dodawania obrazu do mapy. Na przykład używając obrazów z 2016 r. w kolekcji l8
i zdefiniowanego wcześniej obiektu visParams
,
Edytor kodu (JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31'); Map.addLayer(landsat2016, visParams, 'l8 collection');
Pamiętaj, że możesz teraz pomniejszyć widok i zobaczyć ciągłą mozaikę, w której zbierane są zdjęcia Landsat (czyli nad lądem). Pamiętaj też, że gdy używasz karty Inspektor i klikniesz obraz, w sekcji Piksele zobaczysz listę wartości pikseli (lub wykres), a w sekcji Obiekty – listę obiektów obrazu.
Jeśli wystarczająco oddalisz widok, prawdopodobnie zauważysz na mozaice chmury. Gdy dodasz ImageCollection
do mapy, będzie ona wyświetlana jako kompozycja z najnowszymi wartościami, co oznacza, że będą wyświetlane tylko najnowsze piksele (podobnie jak w przypadku wywołania mosaic()
w kolekcji). Dlatego możesz zauważyć nieciągłości między ścieżkami, które zostały uzyskane w różnych momentach. Dlatego też wiele obszarów może wydawać się zachmurzonych. Na następnej stronie dowiesz się, jak zmienić sposób łączenia obrazów, aby pozbyć się tych uciążliwych chmur.