Eksportowanie wykresów i obrazów

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ć.

Tutorial_api_10_ndvi_chart.png
Rysunek 10. Wykres NDVI Landsat na przestrzeni czasu w punkcie geometrycznym.

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.

Tutorial_api_11_cloudless_chart.png
Rysunek 11. Wykres zamaskowanego pod kątem chmur wskaźnika NDVI w ujęciu czasowym w przypadku geometrii punktowej.

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