Colecciones de imágenes

Una colección de imágenes hace referencia a un conjunto de imágenes de Earth Engine. Por ejemplo, la colección de todas las imágenes de Landsat 8 es un ee.ImageCollection. Al igual que la imagen del SRTM con la que has estado trabajando, las colecciones de imágenes también tienen un ID. Al igual que con las imágenes individuales, puedes descubrir el ID de una colección de imágenes buscando en el catálogo de datos de Earth Engine desde el editor de código y consultando la página de detalles del conjunto de datos. Por ejemplo, busca "landsat 8 toa" y haz clic en el primer resultado, que debería corresponder al conjunto de datos USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance. Importa ese conjunto de datos con el botón Importar y cámbiale el nombre a l8, o bien copia el ID en el constructor de la colección de imágenes:

Editor de código (JavaScript)

var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');

Cómo filtrar colecciones de imágenes

Cabe destacar que esta colección representa todas las escenas de Landsat 8 recopiladas en toda la Tierra. A menudo, es útil extraer una sola imagen o un subconjunto de imágenes para probar los algoritmos. La forma de limitar la recopilación por tiempo o espacio es filtrándola. Por ejemplo, para filtrar la colección y mostrar solo las imágenes que cubren una ubicación en particular, primero define tu área de interés con un punto (o una línea o un polígono) usando las herramientas de dibujo de geometría. Desplázate hasta el área de tu interés, coloca el cursor sobre Importaciones de geometría (si ya tienes una o más geometrías definidas) y haz clic en +nueva capa (si no tienes ninguna importación, ve al siguiente paso). Obtén la herramienta de dibujo de puntos () y crea un punto en el área que te interesa. Asigna el nombre point a la importación. Ahora, filtra la colección l8 para obtener solo las imágenes que se cruzan con el punto y, luego, agrega un segundo filtro para limitar la colección solo a las imágenes que se adquirieron en 2015:

Editor de código (JavaScript)

var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);

var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);

Aquí, filterBounds() y filterDate() son métodos abreviados para el método filter() más general en las colecciones de imágenes, que toma un ee.Filter() como argumento. Explora la pestaña Docs del editor de código para obtener más información sobre estos métodos. El argumento para filterBounds() es el punto que digitalizaste, y los argumentos para filterDate() son dos fechas, expresadas como cadenas.

Ten en cuenta que puedes print() las colecciones filtradas. No puedes imprimir más de 5,000 cosas a la vez, por lo que no podrías, por ejemplo, imprimir toda la colección de l8. Después de ejecutar el método print(), puedes inspeccionar las colecciones impresas en la consola. Ten en cuenta que, cuando expandes el elemento ImageCollection con el cierre () y, luego, expandes la lista de features, verás una lista de imágenes, cada una de las cuales también se puede expandir y revisar. Esta es una forma de descubrir el ID de una imagen individual. Otra forma más programática de obtener imágenes individuales para el análisis es ordenar la colección para obtener la imagen más reciente, la más antigua o la óptima en relación con alguna propiedad de metadatos. Por ejemplo, al inspeccionar los objetos de imagen en las colecciones de imágenes impresas, es posible que hayas observado una propiedad de metadatos llamada CLOUD_COVER. Puedes usar esa propiedad para obtener la imagen con menos nubes en 2015 en tu área de interés:

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

Ya puedes mostrar la imagen.

Digresión: Cómo mostrar imágenes RGB

Cuando se agrega una imagen multibanda a un mapa, Earth Engine elige las primeras tres bandas de la imagen y las muestra como rojo, verde y azul de forma predeterminada, y las extiende según el tipo de datos, como se describió anteriormente. Por lo general, esto no será suficiente. Por ejemplo, si agregas la imagen de Landsat (scene en el ejemplo anterior) al mapa, el resultado no será satisfactorio:

Editor de código (JavaScript)

Map.centerObject(scene, 9);
Map.addLayer(scene, {}, 'default RGB');

Ten en cuenta que, primero, el mapa se centra en la imagen con una escala de zoom de 9. Luego, la imagen se muestra con un objeto vacío ({}) para el parámetro visParams (consulta la documentación de Map.addLayer() para obtener más detalles). Como resultado, la imagen se muestra con la visualización predeterminada: las primeras tres bandas se asignan a R, G y B, respectivamente, y se extienden a [0, 1], ya que las bandas son de tipo de datos float. Esto significa que la banda de aerosol costero ("B1") se renderiza en rojo, la banda azul ("B2") se renderiza en verde y la banda verde ("B3") se renderiza en azul. Para renderizar la imagen como un compuesto de color verdadero, debes indicarle a Earth Engine que use las bandas "B4", "B3" y "B2" de Landsat 8 para R, G y B, respectivamente. Especifica qué bandas usar con la propiedad bands del objeto visParams. Obtén más información sobre las bandas de Landsat en esta referencia.

También debes proporcionar valores de min y max adecuados para mostrar la reflectancia de los objetivos típicos de la superficie terrestre. Si bien las listas se pueden usar para especificar diferentes valores para cada banda, aquí es suficiente con especificar 0.3 como max y usar el valor predeterminado de cero para el parámetro min. Combinación de los parámetros de visualización en un objeto y visualización:

Editor de código (JavaScript)

var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
Map.addLayer(scene, visParams, 'true-color composite');

El resultado debería ser similar al de la figura 5. Ten en cuenta que este código asigna el objeto de parámetros de visualización a una variable para su posible uso futuro. Como descubrirás pronto, ese objeto será útil cuando visualices colecciones de imágenes.

Tutorial_api_05_true_color.png
Figura 5: Imagen de reflectancia de la TOA de Landsat 8 como un compuesto de color verdadero, ampliado a [0, 0.3].

Intenta visualizar diferentes bandas. Otra combinación favorita es "B5", "B4" y "B3", que se denomina composición de falso color. Aquí se describen otros compuestos interesantes de falso color.

Como Earth Engine está diseñado para realizar análisis a gran escala, no estás limitado a trabajar con una sola escena. Ahora es el momento de mostrar una colección completa como un compuesto RGB.

Cómo mostrar colecciones de imágenes

Agregar una colección de imágenes a un mapa es similar a agregar una imagen a un mapa. Por ejemplo, si usas imágenes de 2016 en la colección l8 y el objeto visParams definido anteriormente,

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

Ten en cuenta que ahora puedes alejar la imagen y ver un mosaico continuo en el que se recopilan imágenes de Landsat (es decir, sobre la tierra). También ten en cuenta que, cuando uses la pestaña Inspector y hagas clic en la imagen, verás una lista de valores de píxeles (o un gráfico) en la sección Píxeles y una lista de objetos de imagen en la sección Objetos del inspector.

Si alejaste el mapa lo suficiente, probablemente viste algunas nubes en el mosaico. Cuando agregas un ImageCollection al mapa, se muestra como un elemento compuesto de valores recientes, lo que significa que solo se muestran los píxeles más recientes (como si llamaras a mosaic() en la colección). Por eso, puedes ver discontinuidades entre las rutas que se adquirieron en diferentes momentos. También es por eso que muchas áreas pueden parecer nubladas. En la siguiente página, aprenderás a cambiar la forma en que se componen las imágenes para deshacerte de esas molestas nubes.