Earth Engine to zaawansowane narzędzie analityczne, ale może być konieczne wyeksportowanie wyników analizy, aby umieścić wykresy, obrazy, mapy itp. w raportach lub publikacjach. Z tej sekcji dowiesz się, jak tworzyć wykresy i obrazy, które można eksportować i wyświetlać w innych programach. Pamiętaj, że w poprzedniej sekcji do dodawania pasma NDVI do każdego obrazu w kolekcji używaliśmy kodu podobnego do tego poniżej. Zmienna l8
odnosi się do kolekcji odbicia TOA z satelity Landsat 8:
Edytor kodu (JavaScript)
// Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Map a function over the Landsat 8 TOA collection to add an NDVI band. var withNDVI = l8.map(function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); });
Tworzę wykresy
Załóżmy, że chcesz uzyskać wykres NDVI w czasie w określonej lokalizacji. Aby utworzyć taki wykres, najpierw wybierz interesującą Cię lokalizację. Utwórz punkt, wybierając narzędzie do rysowania punktów () i tworząc pojedynczy punkt w interesującym Cię obszarze. (Jeśli masz już importy, najpierw najedź kursorem na Importy geometrii i kliknij + nowa warstwa).
Znajdź punkt na obszarze rolniczym, w lesie liściastym, na łące jednorocznej lub na innym obszarze o pokryciu terenu z cyklem rocznym. Nadaj importowi nazwę
roi
. (Informacje o tworzeniu geometrii programowo znajdziesz na tej stronie).
Teraz użyjemy roi
, aby utworzyć wykres NDVI w czasie w pikselu
pod tym punktem. W Earth Engine wykresy tworzy się za pomocą pakietu ui.Chart
. (Więcej informacji o tworzeniu wykresów w Earth Engine)
Aby utworzyć wykres zmian w czasie, możesz użyć metody ui.Chart.image.series()
:
Edytor kodu (JavaScript)
// Create a chart. var chart = ui.Chart.image.series({ imageCollection: withNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'NDVI over time'}); // Display the chart in the console. print(chart);
W przypadku geometrii roi
wybraliśmy punkt na obszarze rolniczym, co dało wykres podobny do tego na rysunku 10. Zwróć uwagę, że parametry konstruktora wykresu obejmują funkcję redukującą i skalę, np. reduceRegion()
. Ponieważ punkt, który podajemy jako region, może przecinać tylko 1 piksel, wystarczy użyć reduktora „first”. Jeśli masz większy region, użyj funkcji „mean” lub innego reduktora, który określa sposób agregowania pikseli. Pamiętaj też, że aby wyświetlić wykres, wystarczy go wydrukować.

Dygresja: proste maskowanie chmur w przypadku danych z satelity Landsat
Na tym wykresie można zauważyć, że szereg czasowy wartości NDVI w danym punkcie jest nieco zaszumiony. Jest to prawdopodobnie spowodowane chmurami. Aby złagodzić ten efekt, Earth Engine zawiera algorytm maskowania chmur dla czujników Landsat z pasmami termicznymi: ee.Algorithms.Landsat.simpleCloudScore()
. Jako dane wejściowe przyjmuje obraz odbicia TOA z satelity Landsat i dodaje pasmo o nazwie cloud
, które jest indeksem zachmurzenia w pikselu w zakresie od 0 do 100, od najmniejszego do największego zachmurzenia. Modyfikując funkcję przypisaną do kolekcji, możesz użyć dowolnego progu (20) w indeksie chmur, aby nieco oczyścić wykres:
Edytor kodu (JavaScript)
var cloudlessNDVI = l8.map(function(image) { // Get a cloud score in [0, 100]. var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); // Create a mask of cloudy pixels from an arbitrary threshold. var mask = cloud.lte(20); // Compute NDVI. var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); // Return the masked image with an NDVI band. return image.addBands(ndvi).updateMask(mask); }); print(ui.Chart.image.series({ imageCollection: cloudlessNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'Cloud-masked NDVI over time'}));
Wynik z maskowaniem chmur przedstawiono na rysunku 11. Zwróć uwagę, że szereg czasowy wygląda nieco płynniej, ale nadal może zawierać piksele, na które wpływają chmury. Dostosuj próg indeksu chmury i obserwuj wykreślone szeregi czasowe, aby dowiedzieć się, jak ten próg może wpływać na wyniki.

Eksportowanie obrazów
Wiesz już, jak wyeksportować wykres danych obliczonych przez Earth Engine, ale co z całym obrazem? Załóżmy na przykład, że masz kompozycję z najbardziej zielonymi pikselami, o której pisaliśmy w poprzedniej sekcji:
Edytor kodu (JavaScript)
var greenest = cloudlessNDVI.qualityMosaic('NDVI');
Jedyną różnicą w tym kodzie w porównaniu z tym, co robiliśmy wcześniej, jest to, że teraz używamy zamaskowanej kolekcji w chmurze. Możesz wyeksportować podzbiór tych danych (określony przez region) za pomocą pakietu Export
. (Więcej informacji o eksportowaniu danych rastrowych i wektorowych z Earth Engine) Aby na przykład wyeksportować obraz, który można łatwo osadzić w innych dokumentach, utwórz obraz wizualizacji w sposób opisany wcześniej i wyeksportuj go do folderu na Dysku Google:
Edytor kodu (JavaScript)
// Create a 3-band, 8-bit, color-IR composite to export. var visualization = greenest.visualize({ bands: ['B5', 'B4', 'B3'], max: 0.4 }); // Create a task that you can launch from the Tasks tab. Export.image.toDrive({ image: visualization, description: 'Greenest_pixel_composite', scale: 30 });
Po uruchomieniu tego kodu na karcie Zadania zostanie utworzone nowe zadanie. Aby otworzyć okno konfiguracji eksportu, na karcie Zadania kliknij przycisk URUCHOM. Po skonfigurowaniu zadania kliknij w oknie przycisk Uruchom, aby rozpocząć eksportowanie. Zanim to zrobisz, pamiętaj:
Powodem, dla którego należy zachować ostrożność podczas eksportowania bez argumentu region
, jest to, że jeśli ustawisz stosunkowo małą wartość dla scale
, a mapa będzie powiększona na duży obszar, wyeksportujesz do folderu na Dysku potencjalnie bardzo duży obraz. Więcej informacji i listę możliwych parametrów konfiguracji znajdziesz w Export.image.toDrive()
dokumentacji na karcie Dokumenty.
To już koniec tego wprowadzenia do Earth Engine API. Poznałeś już większość najczęściej używanych funkcji Earth Engine i powinieneś być w stanie przejść do bardziej złożonych analiz. Przeczytaj dokumentację i przeszukaj forum, aby znaleźć odpowiedzi na inne pytania. Pozdrawiamy