Cómo calcular el NDVI en Google Earth Engine

En este post queremos mostrarte cómo calcular el índice de vegetación NDVI con imágenes Landsat utilizando Google Earth Engine, la plataforma en la nube para realizar análisis científicos que permite el análisis y visualización de datos geoespaciales a escala global.

Si no sabes lo que es un NDVI, puedes visitar nuestro post ¿Qué es un NDVI y cómo calcularlo en QGIS?.

Y, si quieres aprender más sobre los índices de vegetación, visita nuestro artículo los 6 índices de vegetación para completar el NDVI.

Selección y filtrado de una imagen

En primer lugar, vamos a utilizar la imagen Landsat 8 que se corresponde al conjunto de datos de reflectancia TOA de nivel 1 de la colección 2 de Landsat 8 del USGS.

Accede al editor de código de GEE, e introduce su nombre en el buscador, selecciónala e importa este conjunto de datos con el botón Import, puedes cambiar el nombre a l8, por ejemplo.

Para filtrar la colección a imágenes sobre una ubicación en particular debemos definir el área de interés usando las herramientas de dibujo de geometrías.

Sitúa la vista en el visor de Google Earth Engine en el área que desees y accede a las herramientas de digitalización de la parte superior izquierda del mapa, por ejemplo mediante un marcador.

Calcular el NDVI en Google Earth Engine

En la cabecera del script se reflejaran dos variables, la que almacena la colección de imágenes y la correspondiente al marcador. 

El siguiente paso sería establecer el filtro espacial, con nuestra zona de interés, y el filtro temporal, por ejemplo, sólo imágenes del mes de mayo de 2022.

Utilizaremos filterBounds() y filterDate(), que son métodos abreviados para el método filter(), común en colecciones de imágenes.

//Establecemos nuestro área de interés con un marcador
var FiltroEspacial = l8.filterBounds(punto_interes);
//Introducimos el filtro para imágenes tomadas en el mes de mayo de 2022
var FiltroTemporal = FiltroEspacial.filterDate('2022-05-01', '2022-05-31');

El argumento de filterBounds () es el marcador digitalizado con el área de interés y, los argumentos de filterDate (), son dos fechas, expresadas como cadenas.

Por otro lado, filtraremos la colección de imágenes ordenándola de mayor a menor cobertura nubosa con el método .sort() (empleando la propiedad CLOUD_COVER de los metadatos de la imagen) y seleccionaremos la de menor presencia de nubes.

// Ordena de menos a más nubosidad 
var FiltroNubosidad = FiltroTemporal.sort('CLOUD_COVER'); 
// Obtiene la imagen de menor nubosidad 
var imagen_final = FiltroNubosidad.first();

Cálculo del NDVI en Google Earth Engine

Una vez seleccionada y filtrada nuestra imagen, introducimos los operadores matemáticos para el cálculo del NDVI,  recuerda que este utiliza las bandas Roja (Banda 4) e Infrarrojo Cercano (Banda 5) de Landsat 8.

Calcular el NDVI en Google Earth Engine

Creamos por tanto las variables con ambas bandas e introducimos la fórmula:

//Bandas Roja e IRC de Landsat 8
var nir = imagen_final.select('B5'); 
var red = imagen_final.select('B4');
//Fórmula de cálculo NDVI
var ndvi = nir.subtract(red).divide(nir.add(red));

En este caso, utilizamos tres operadores: suma(add), resta(subtract) y división(divide).

Visualización de los resultados

Por último, meramente quedaría establecer los parámetros de visualización de los valores del NDVI calculado, recuerda que se mueve en valores que van de -1 para zonas de vegetación poco vigorosa a 1 para aquellas áreas de mayor vigorosidad vegetal.

Vamos a generar una paleta de colores de tonalidades de azul para representar menor vigorosidad y verde para mayor vigorosidad dentro de una variable, también queremos que nos muestre todos los valores, por ello indicaremos el parámetro min (-1) y max (1), podríamos acotar este rango si lo deseamos.

//Establecemos la paleta de colores
var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']};

Únicamente faltaría añadir nuestra imagen al mapa/visor de Google Earth Engine, para lo que utilizamos la propiedad addLayer, en la que indicamos la imagen a mostrar, los parámetros de visualización y el nombre con el que se mostrará en el panel de capas.

//Visualizamos el resultado
Map.addLayer(ndvi, ndviParams, 'Imagen NDVI');

Tras pulsar el botón Run se mostrarán los resultados en el visor.

Si hacemos zoom sobre la imagen y nos situamos en la pestaña Inspector, podemos pulsar sobre los píxeles de nuestro resultado para conocer los valores del NDVI.

Si quieres aprender a trabajar con Google Earth Engine y realizar más operaciones como estás, inscríbete ya en el curso online de Introducción a Google Earth Engine.