Cómo calcular el índice de vegetación EVI en R paso a paso

El verde no cambia de tono en el mapa, aunque el bosque sí tiene matices de sobra: ese fue el primer problema que vi al abrir mi capa de NDVI sobre el parche de bosque nativo del Parque Saval, en Isla Teja. Ahí hay renovales jóvenes, helechos, algún ejemplar viejo que sobresale entre el resto, y el índice los pintaba a todos del mismo verde intenso, como si la estructura del bosque no le importara a nadie.

La respuesta corta, después de poner los dos índices uno al lado del otro sobre la misma zona, es esta: el NDVI sirve para un vistazo rápido, pero se satura rápido en vegetación densa y deja de mostrar diferencias. El EVI, el Índice de Vegetación Mejorado, cuesta un poco más armar en R, pero es el que realmente distingue un dosel cerrado de uno más ralo. Antes de llegar a esa conclusión pasé por herramientas que no sirvieron para nada parecido: probé comparar imágenes de distintos años en Google Earth, pensando que bastaría con mirar, pero no podía medir nada ni guardar un resultado que sirviera para algo más que una captura de pantalla.

Llegué a los índices de vegetación por curiosidad más que por formación — quería ver, con datos, cómo cambiaba la cobertura del bosque que tengo cerca, y así fue como terminé metida en la teledetección sin buscarla directamente. Marcia, una compañera de la oficina que estudia agronomía a distancia, fue quien me empezó a mandar links de papers sobre esto que casi nunca alcanzo a leer completos, pero los resúmenes ya dejaban claro que el NDVI no era la única opción.

NDVI y EVI miden cosas distintas en un bosque denso

El NDVI se calcula con dos bandas, la roja y la infrarroja cercana, y funciona bien mientras la vegetación no sea demasiado espesa. El EVI suma una banda más, la azul, y un par de constantes fijas para corregir el ruido que mete la atmósfera — esa neblina que en el sur de Chile casi nunca se va del todo. No es una fórmula que uno se invente sobre la marcha: son valores que ya vienen definidos y que hay que respetar tal cual.

¿Dónde se queda corto el NDVI?

Cuando mapeas una zona con harta vegetación, el NDVI llega a un techo cerca de 0.8 o 0.9 y ahí se queda, sin importar si el árbol es más alto o el follaje más tupido que el del vecino. Para un vistazo general entre "hay bosque" y "no hay bosque" esto alcanza. Pero si lo que quieres es distinguir un renoval de un bosque adulto, necesitas un índice que siga respondiendo aunque la vegetación ya sea densa, y ahí es donde el EVI hace su trabajo.

Comparación en pantalla entre un mapa NDVI saturado y uno con más detalle de vegetación usando EVI en R

Si ya sabes cómo quitar nubes de imágenes Sentinel 2 en RStudio paso a paso, la lógica de por qué el EVI corrige la atmósfera te va a sonar familiar, aunque acá trabajamos con Landsat en vez de Sentinel.

Identifica las bandas que pide el EVI

Para este cálculo usé imágenes de Landsat 8, que vienen bien documentadas y son fáciles de conseguir. El EVI necesita identificar tres bandas concretas dentro del archivo raster: la Banda 5, que es el infrarrojo cercano y muestra cuánta actividad tiene la planta; la Banda 4, que es la roja, la que absorbe la clorofila; y la Banda 2, que es la azul, la que permite la corrección atmosférica. Confundir la Banda 2 con la Banda 1 — que corresponde a aerosoles costeros y no sirve para esto — es de los descuidos más comunes al armar el código por primera vez, así que vale la pena revisar el nombre del archivo antes de cargarlo.

Apuntes a mano sobre las bandas de Landsat 8 necesarias para calcular el EVI en RStudio

Las constantes de la fórmula no se inventan

La fórmula estándar, la misma que usa la NASA para el sensor MODIS y que se adapta a Landsat, trae cuatro elementos fijos. El factor de ganancia, G, vale 2.5 y funciona como el volumen de una radio: amplifica la señal para que los cambios se noten. Los coeficientes de resistencia atmosférica, C1 y C2, son 6 y 7.5 respectivamente, y usan la banda azul para descontar el ruido que mete el aire. El ajuste de fondo de dosel, L, vale 1, y evita que el brillo del suelo en los claros del bosque haga parecer que hay menos vegetación de la que realmente existe. Estos cuatro números no se ajustan a ojo ni se recalculan para cada imagen — van fijos en la ecuación.

Calculando el EVI en R, paso a paso

El paquete terra le gana al antiguo raster justo en esto: cuando el archivo pesa harto, el computador no sufre tanto. Un lector de Temuco, Aldo — que resultó ser guardaparques con interés en monitoreo forestal — me preguntó hace poco qué pasaba si el archivo superaba los 2 GB, y la respuesta corta es que con terra se nota mucho menos que con las herramientas que probé al principio. Si tu RStudio se te queda pegado con archivos pesados, esta solución a errores comunes al cargar rasters pesados en R tiene varios trucos que uso seguido.

Trabajo esto en el escritorio de mi pieza, con el monitor prestado que llevo meses usando y la ventana del patio interior empañándose un poco por fuera. Al lado del trackpad siempre hay una taza de café que se enfría antes de que me acuerde de tomarla, y en una carpeta de hojas sueltas voy anotando cada error ya resuelto para no repetirlo dos veces. El código, una vez que tienes las tres bandas cargadas, queda más o menos así:

library(terra)

nir <- rast("ruta/al/archivo_B5.tif")
red <- rast("ruta/al/archivo_B4.tif")
blue <- rast("ruta/al/archivo_B2.tif")

G <- 2.5
C1 <- 6
C2 <- 7.5
L <- 1

evi <- G * ((nir - red) / (nir + C1 * red - C2 * blue + L))

Cuando las tres bandas están bien cargadas y los nombres de las variables coinciden, el cálculo corre limpio y el resultado ya no se ve como una mancha uniforme, sino con la variación que uno espera encontrar en terreno.

Código en RStudio con la fórmula del índice EVI usando el paquete terra en R

Evita estos errores al armar la fórmula

El orden de los paréntesis importa más de lo que parece. La fórmula correcta es G * ((NIR - Red) / (NIR + (C1 * Red) - (C2 * Blue) + L)), y si mezclas mal dónde va cada suma o resta, el resultado sale con valores que no tienen sentido, números fuera de rango que no corresponden a ningún EVI real. Tampoco sirve aplicar la fórmula sin fijarte bien en qué banda estás metiendo en cada lugar: si usas una imagen sin banda azul, como pasa con algunas capturas de dron más básicas, lo que obtienes ya no es EVI, es otra cosa con el mismo nombre.

La proyección también hay que revisarla antes de confiar en cualquier resultado — de eso ya escribí en otra entrada, así que no me voy a repetir acá. Lo que sí puedo contar es que la primera vez que quedó bien alineada, el contorno del bosque calzó exacto con la curva de la carretera que manejo tan seguido que podría dibujarla con los ojos cerrados.

Una vez que el mapa de EVI queda bien armado, el paso natural es separar bosque de pradera, algo que cuento con más detalle en cómo hacer una clasificación de coberturas vegetales en R paso a paso.

Mapa final del índice EVI mostrando la estructura del bosque nativo tras el análisis en R

¿Cuál conviene usar, NDVI o EVI?

Si necesitas un vistazo rápido — distinguir vegetación de suelo desnudo, comparar dos fechas a grandes rasgos — el NDVI sigue siendo más simple de calcular y no pide la banda azul. Pero si tu zona de estudio es un bosque cerrado como el del Parque Saval, y te importa la estructura — claros, dosel denso, árboles más altos que otros — vale la pena el esfuerzo extra de conseguir las tres bandas y respetar las constantes del EVI. No hay un índice mejor en abstracto, hay uno mejor para lo que estás tratando de ver.

Antes de llegar a este punto conviene tener claro cómo se lee un archivo raster en R — eso lo dejo para otra entrada, porque acá ya asumo que sabes cargar tus capas. Lo que sí recomiendo siempre es recortar tu raster con un shapefile antes de calcular nada, para no hacer que R procese medio país cuando solo te interesa un parche de bosque nativo como el del Parque Saval.

Aprender esto sin venir de las ciencias de la tierra tiene lo suyo: una vuelve a mirar cada resultado con desconfianza hasta confirmar que tiene sentido, y ese hábito sirve para más cosas — hasta para armar modelos de distribución de especies más adelante, aunque ese es tema para otro día. Por ahora, con el EVI corriendo bien sobre el bosque que veo casi todos los días, el mapa dejó de ser una mancha verde uniforme y pasó a mostrar algo parecido a la estructura real del lugar, que es finalmente hacer análisis espacial y no solo mirar un mapa bonito.

Artículos relacionados