Cómo exportar gráficos e imágenes

Earth Engine es una herramienta analítica potente, pero es posible que debas exportar los resultados de tu análisis para incorporar gráficos, imágenes, mapas, etc., 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 un código como el siguiente para agregar una banda de 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 con la herramienta de dibujo de puntos () y crea una geometría de un solo punto en tu área de interés. (Si ya tienes importaciones, coloca el cursor sobre Geometry Imports y haz clic en + new layer primero). Ubica el punto en un área de agricultura, bosque caducifolio, pastizal anual o algún otro tipo de cobertura del suelo con un ciclo anual). Asígnale el nombre roi a la importación. (Consulta esta página para obtener información sobre cómo crear geometrías de manera 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 dio como resultado un gráfico similar a 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, basta con usar el reductor "first". Si tienes una región más grande, debes usar un reductor de "media" o de otro tipo que especifique cómo agregar píxeles. Ten en cuenta que, para visualizar un gráfico, todo lo que tienes que hacer es 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 puntos.

Digresión: Enmascaramiento de nubes simple para Landsat

Algo que tal vez hayas notado sobre este gráfico es que la serie temporal de los valores de NDVI en el punto parece un poco ruidosa. Es probable que esto se deba a las nubes. Para mejorar 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 0 a 100, de menos a más nuboso, 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 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 puede contener píxeles afectados por nubes. Ajusta el umbral en el índice de nubes y observa la serie temporal graficada para descubrir cómo este umbral puede afectar tus resultados.

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

Exporta imágenes

Ya viste cómo exportar un gráfico de datos calculados por Earth Engine, pero ¿qué pasa con una imagen completa? Supongamos, por ejemplo, que creaste una composición de píxeles más verdes, 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 antes es que ahora usamos la colección con máscara de 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 de trama y vectoriales desde Earth Engine). Por ejemplo, para exportar una imagen que se pueda incorporar fácilmente en otros documentos, crearemos una imagen de visualización, como lo hiciste antes, y la exportaremos 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, ten en cuenta que se creará 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 en el diálogo para iniciar la exportación. Pero antes de hacerlo, ten en cuenta lo siguiente:

La razón por la que debes tener cuidado cuando exportas sin un argumento region es que, si estableces un valor relativamente pequeño para scale y el mapa se aleja a un área grande, exportarás una imagen potencialmente muy grande a tu carpeta de Drive. Consulta la documentación 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 esta introducción a la API de Earth Engine. Ya viste gran parte de la funcionalidad más común de Earth Engine y deberías poder continuar con confianza hacia análisis más complejos. Asegúrate de leer los documentos y buscar en el foro las respuestas a otras preguntas. ¡Suerte con la programación!