Anteriormente, aprendiste a obtener escenas individuales de Landsat de la siguiente manera, donde l8
y point
son importaciones que representan la colección de TOA de Landsat 8 y una geometría de área de interés:
Editor de código (JavaScript)
// Define a point of interest. Use the UI Drawing Tools to import a point // geometry and name it "point" or set the point coordinates with the // ee.Geometry.Point() function as demonstrated here. var point = ee.Geometry.Point([-122.292, 37.9018]); // Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Get the least cloudy image in 2015. var image = ee.Image( l8.filterBounds(point) .filterDate('2015-01-01', '2015-12-31') .sort('CLOUD_COVER') .first() );
Supongamos ahora que deseas calcular una imagen del Índice de vegetación de diferencia normalizada (NDVI) a partir de la imagen de Landsat. La vegetación refleja la luz en la parte del infrarrojo cercano (NIR) del espectro electromagnético y absorbe la luz en la parte roja (obtén más información sobre la reflectancia NIR de la vegetación). El NDVI usa este valor para crear un valor único que refleja aproximadamente la actividad fotosintética que ocurre en un píxel. El cálculo es (NIR - rojo) / (NIR + rojo). Esto da como resultado un número entre 1 y -1, en el que los píxeles con alta actividad fotosintética tienen un NDVI alto. Esta es una forma de calcular el NDVI en Earth Engine:
Editor de código (JavaScript)
// Compute the Normalized Difference Vegetation Index (NDVI). var nir = image.select('B5'); var red = image.select('B4'); var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI'); // Display the result. Map.centerObject(image, 9); var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']}; Map.addLayer(ndvi, ndviParams, 'NDVI image');
El resultado debería ser similar al de la figura 8. Ten en cuenta que usamos la función select()
que aprendiste en la sección anterior sobre el enmascaramiento para obtener las bandas de NIR y rojo, y, luego, calculamos el NDVI con los operadores matemáticos de imágenes que también viste antes en la sección sobre las matemáticas de Image
. Por último, muestra la imagen con una paleta. Aquí usamos nombres de colores en lugar de cadenas hexadecimales en la paleta. (Consulta esta referencia externa sobre el color CSS para obtener más detalles).

La operación de diferencia normalizada es tan omnipresente en la teledetección que existe una función de acceso directo en un ee.Image
que es útil para simplificar el código del ejemplo anterior:
Editor de código (JavaScript)
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
Cómo asignar una función a una colección
Supongamos ahora que deseas agregar el NDVI a cada imagen de una colección de imágenes. La forma de hacerlo en Earth Engine es map()
una función sobre la colección.
No confundas map()
con el objeto Map
. El primero es un método en una colección y usa map en el sentido de la computación paralela de aplicar una función a cada elemento de una colección. La función define las operaciones que se aplicarán a cada elemento de la colección. Ya viste una función simple en el instructivo de JavaScript, pero ahora crearemos una función que incluya la funcionalidad de Earth Engine. Por ejemplo, copia el código anterior del NDVI en una función que muestre la imagen de entrada con una banda del NDVI:
Editor de código (JavaScript)
var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // Test the addNDVI function on a single image. var ndvi = addNDVI(image).select('NDVI');
Es posible que este código no sea tan eficiente para calcular el NDVI de una sola imagen, pero esta función se puede usar como argumento para map()
y, así, agregar una banda de NDVI a cada imagen de la colección. A menudo, es útil probar primero una función en una sola imagen para asegurarse de que se comporta como se espera. Una vez que hayas probado la función en una imagen individual y hayas determinado que hace lo que quieres, puedes asignarla a la colección:
Editor de código (JavaScript)
var withNDVI = l8.map(addNDVI);
Para verificar que, de hecho, se agrega una banda de NDVI a cada imagen de esta colección, puedes agregar la colección withNDVI
al mapa y consultar una ubicación aleatoria con la pestaña Inspector. Deberías observar que cada imagen de la colección ahora tiene una banda llamada NDVI
.
Cómo crear un compuesto del píxel más verde
Ahora que creaste una colección de imágenes en la que cada imagen tiene una banda de NDVI, podemos explorar una nueva forma de crear imágenes compuestas: qualityMosaic()
. Es posible que hayas notado discontinuidades entre las rutas de Landsat, incluso en la composición de píxeles mediana. Parte de la razón de esto puede deberse a las diferencias en la fenología como resultado de que las imágenes en rutas adyacentes se recopilan en diferentes momentos (específicamente, con 8 días de diferencia). Una forma de minimizar esto es intentar establecer valores de píxeles en la composición a partir de la misma etapa fenológica, por ejemplo, el momento de máxima verdor de las plantas (cuando las hojas están activas y fotosintéticamente activas). Si permitimos que la vegetación máxima se defina por el NDVI máximo, podemos usar qualityMosaic()
para crear una imagen compuesta en la que cada píxel contenga el píxel con el NDVI máximo de la colección.
Ahora puedes usar la banda NDVI agregada en tu colección withNDVI
:
Editor de código (JavaScript)
// Make a "greenest" pixel composite. var greenest = withNDVI.qualityMosaic('NDVI'); // Display the result. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(greenest, visParams, 'Greenest pixel composite');
El resultado de este código debería ser similar al de la figura 9. Si comparas la figura 9 con la composición mediana que se muestra en la figura 6, observarás que la composición de píxeles más verde es, de hecho, mucho más verde. Sin embargo, un examen minucioso de las masas de agua debería revelar un problema diferente. Específicamente, las masas de agua ahora se ven nubladas. Esto se debe a la forma en que funciona el método qualityMosaic()
: en cada ubicación, se examina toda la serie temporal y se establece el píxel con el valor máximo en la banda del NDVI como el valor compuesto. Dado que el NDVI es más alto sobre las nubes que sobre el agua, las áreas de agua obtienen píxeles nublados, mientras que las áreas con vegetación aparecen todas verdes porque el NDVI es más alto cuando la vegetación en el píxel es fotosintéticamente activa.

Ahora ya viste varias formas de componer y crear mosaicos de imágenes en Earth Engine. Puedes crear composiciones de valor reciente, mediana o píxel más verde a partir de imágenes filtradas por hora y lugar, o bien de todas las imágenes de la colección. Aprendiste a realizar cálculos en las imágenes y a extraer información. En la siguiente página, se explican las formas de obtener información de Earth Engine, por ejemplo, como un gráfico o un conjunto de datos exportado a tu carpeta de Google Drive.