Cómo exportar gráficos e imágenes

Earth Engine es una herramienta de análisis potente, pero es posible que necesites exportar los resultados de tu análisis para incorporar gráficos, imágenes, mapas, etcétera, en informes o publicaciones. En esta sección, aprenderás a crear gráficos e imágenes que se pueden exportar y ver en otro software. Recuerda que, en la sección anterior, usaste código como el siguiente para agregar una banda del NDVI a cada imagen de una colección, en la que la variable l8 hace referencia a la colección de reflectancia TOA de Landsat 8:

Editor de código (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);
});

Creando gráfico

Supongamos que lo que quieres es un gráfico del NDVI a lo largo del tiempo en una ubicación determinada. Para crear un gráfico de este tipo, el primer paso es elegir una ubicación de interés. Crea un punto. Para ello, obtén la herramienta de dibujo de puntos () y crea una geometría de un solo punto en el área de interés. (Si ya tienes importaciones, primero coloca el cursor sobre Importaciones de geometría y haz clic en + capa nueva). Ubica el punto en un área de agricultura, bosque caducifolio, pastizal anual o algún otro tipo de cobertura terrestre con un ciclo anual. Asigna el nombre roi a la importación. (Consulta esta página para obtener información sobre cómo crear geometrías de forma programática).

Ahora, usemos el punto roi para crear un gráfico del NDVI a lo largo del tiempo en el píxel debajo de ese punto. La forma de crear gráficos en Earth Engine es con el paquete ui.Chart. (Obtén más información para crear gráficos en Earth Engine). Específicamente, para crear un gráfico a lo largo del tiempo, puedes usar el método ui.Chart.image.series():

Editor de código (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);

Para la geometría roi, elegimos un punto en un área agrícola, lo que generó un gráfico similar al de la figura 10. Ten en cuenta que los parámetros del constructor del gráfico incluyen un reductor y una escala como reduceRegion(). Dado que el punto que proporcionamos como región solo puede intersecar un píxel, es suficiente con usar el reductor "first". Si tienes una región más grande, debes usar un reductor de "media" o algún otro que especifique cómo agregar píxeles. También ten en cuenta que, para visualizar un gráfico, solo debes imprimirlo.

Tutorial_api_10_ndvi_chart.png
Figura 10. Gráfico del NDVI de Landsat a lo largo del tiempo en una geometría de punto.

Digresión: Enmascaramiento simple de nubes para Landsat

Es posible que hayas notado que la serie temporal de los valores del NDVI en el punto se ve un poco ruidosa. Es probable que se deba a las nubes. Para mitigar este efecto, Earth Engine incluye un algoritmo de enmascaramiento de nubes para los sensores de Landsat con una banda térmica: ee.Algorithms.Landsat.simpleCloudScore(). Toma una imagen de reflectancia de TOA de Landsat como entrada y agrega una banda llamada cloud, que es un índice de nubosidad en el píxel de cero a 100, de menos a más nublado, respectivamente. Si modificas la función que asignaste a la colección, puedes usar un umbral arbitrario (20) en el índice de nubes para limpiar un poco el gráfico:

Editor de código (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'}));

El resultado con la máscara de nubes se ilustra en la figura 11. Ten en cuenta que la serie temporal se ve un poco más uniforme, pero es posible que aún contenga píxeles afectados por las nubes. Ajusta el umbral en el índice de nubes y observa las series temporales representadas en el gráfico para saber cómo este umbral puede afectar tus resultados.

Tutorial_api_11_cloudless_chart.png
Figura 11. Gráfico del NDVI enmascarado por nubes a lo largo del tiempo en una geometría de punto.

Cómo exportar imágenes

Viste una forma de exportar un gráfico de datos calculados por Earth Engine, pero ¿qué sucede con una imagen completa? Supongamos, por ejemplo, que creaste un compuesto del píxel más verde como se explicó en la sección anterior:

Editor de código (JavaScript)

var greenest = cloudlessNDVI.qualityMosaic('NDVI');

La única diferencia en este código con respecto a lo que hiciste anteriormente es que ahora usamos la colección enmascarada por nubes. Puedes exportar un subconjunto (definido por una región) de este con el paquete Export. (Obtén más información para exportar datos ráster y vectoriales de Earth Engine). Por ejemplo, para exportar una imagen que se pueda incorporar fácilmente en otros documentos, creemos una imagen de visualización, como ya hiciste, y expórtala a tu carpeta de Google Drive:

Editor de código (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
});

Cuando ejecutes este código, observa que se crea una tarea nueva en la pestaña Tareas. Para iniciar el diálogo de configuración de exportación, haz clic en el botón EJECUTAR en la pestaña Tareas. Una vez que hayas configurado la tarea, haz clic en el botón Ejecutar del diálogo para iniciar la exportación. Pero antes de hacerlo, ten en cuenta lo siguiente:

El motivo por el que debes tener cuidado al exportar sin un argumento region es que, si estableces un valor relativamente pequeño para scale y el mapa se aleja para mostrar un área grande, exportarás una imagen potencialmente muy grande a tu carpeta de Drive. Consulta los documentos de Export.image.toDrive() en la pestaña Docs para obtener más detalles y una lista de los posibles parámetros de configuración.

Con esto concluye la introducción a la API de Earth Engine. Ahora ya conoces gran parte de las funciones más comunes de Earth Engine y deberías poder continuar con confianza con análisis más complejos. Asegúrate de leer la documentación y buscar en el foro respuestas a otras preguntas. ¡Feliz codificación!