Cómo calcular el índice de agua NDWI en RStudio para analizar humedales

Afuera la lluvia no para y el sonido sobre el techo de zinc es lo único que me acompaña esta tarde. Aquí en Valdivia, cuando el cielo se pone gris oscuro y no deja ver los cerros, lo mejor que una puede hacer es prender la estufa, servirse algo caliente y sentarse frente al computador. El reflejo azulado de la pantalla de RStudio en el vidrio empañado de la ventana es casi hipnótico mientras afuera todo es ese gris valdiviano que ya conozco de memoria. Hoy me propuse algo que me venía dando vueltas: entender cómo diablos R puede decirme dónde hay agua y dónde hay barro en el humedal que tengo cerca de la casa.

La verdad es que no soy experta en esto, ya lo saben. Soy solo yo, Javiera, tratando de que los códigos no me tiren errores rojos cada cinco minutos. Empecé con esto de la teledetección el invierno pasado porque quería ver cómo cambiaba el paisaje desde arriba, sin tener que mojarme las botas cada vez. Y bueno, después de muchas vueltas y de entender por qué estudiar teledetección satelital con R es tan útil para los que amamos la naturaleza, hoy por fin me sentí con ánimo de enfrentarme al famoso NDWI.

El primer tropiezo: ¿Raster o Terra?

Un sábado gris de julio, hace apenas unas semanas, me senté decidida. Lo primero que me confundió fue qué paquete usar. En todos los tutoriales viejos que encontraba en internet hablaban de un paquete llamado raster, pero después leí que ahora lo que se lleva es terra. Y claro, una que es aprendiz se marea rápido. Resulta que terra es como el hermano menor pero más fuerte y rápido, ideal para manejar esos archivos gigantes que uno baja de internet.

Para analizar un humedal, que es básicamente un lugar donde el agua juega a las escondidas con la vegetación, necesitaba imágenes de Sentinel-2. Me gusta Sentinel porque pasa seguido (cada 5 días, si es que las nubes nos dejan, que aquí es difícil) y tiene una resolución espacial de 10 metros en las bandas que más me interesan. Eso significa que cada cuadrito de mi mapa representa 10 metros en el suelo, lo cual es harto detalle para alguien que está aprendiendo en su living.

Primer plano de código en RStudio y notas manuscritas del índice NDWI

Las bandas mágicas: 3 y 8

Y aquí es donde la cosa se pone interesante (y un poco técnica, pero no tanto, lo prometo). Para calcular el índice de agua, que se llama NDWI (Normalized Difference Water Index), no usamos una foto común como la que sacas con el celular. Usamos bandas que ven cosas que nuestros ojos no. Específicamente, necesitamos la Banda 3 (el Verde) y la Banda 8 (el Infrarrojo Cercano o NIR).

Lo que aprendí, después de leer un rato y tomarme dos tés, es que el agua refleja súper bien la luz verde, pero absorbe casi todo el infrarrojo cercano. Es como si el agua se "comiera" el infrarrojo. Entonces, si restamos esas dos cosas y hacemos una división mañosa, el agua aparece brillando en nuestro mapa. La fórmula es algo como (Verde - NIR) / (Verde + NIR). En términos de Sentinel-2, estamos hablando de la longitud de onda central de la Banda 3, que son unos 560 nm, y la Banda 8, que anda por los 842 nm.

Tres semanas de errores y una coma traicionera

No crean que esto fue cargar y listo. Estuve después de tres semanas de errores en la consola que casi me hacen tirar la toalla. Hubo un momento en que me quedé mirando el mensaje Error in x + y : non-numeric argument durante una hora entera. Me sentía la persona más tonta del mundo. ¿Saben qué era? Me había olvidado de una coma en la ruta del archivo donde guardaba las imágenes. Una coma. Así de frágil es la programación cuando una está empezando.

Para que no les pase, el proceso en RStudio se ve más o menos así (una vez que ya tienes tus bandas descargadas):

Si alguna vez te trabas con el manejo de estos archivos pesados, yo misma escribí sobre cómo crear composiciones de color en RStudio, que es un buen paso previo antes de meterse con los índices matemáticos.

La trampa de las sombras (mi gran descubrimiento)

Aquí les quiero contar algo que no sale en todos los manuales básicos y que me voló la cabeza una tarde de agosto antes de entrar a la oficina. Yo estaba toda feliz porque mi mapa mostraba agua por todos lados, pero cuando miré bien los cerros que rodean Valdivia, ¡parecía que había lagos en las cimas! Y yo sé que ahí no hay lagos, hay puyes y coigües.

Resulta que el NDWI estándar tiene un pequeño problema: confunde las sombras de las montañas (y de los edificios, si estás en la ciudad) con agua. Como la sombra es oscura y refleja poco, la matemática del índice se marea. Por eso, si estás analizando una zona con cerros como el sur de Chile, tienes que tener cuidado. Aprendí que a veces hay que aplicar máscaras de edificios o correcciones topográficas, pero para una como yo, que está aprendiendo, basta con saber que si ves "agua" en una pendiente de 45 grados, probablemente sea solo una sombra caprichosa.

Mapa de índice de agua NDWI terminado en la pantalla de una laptop

El momento en que todo cuadró

Después de pelear con los sistemas de coordenadas (que siempre son un dolor de cabeza), por fin logré que la operación corriera. Escribí la línea mágica: ndwi <- (b3 - b8) / (b3 + b8). Le di al Enter con los dedos cruzados y esperé. El rango de valores del índice NDWI va de -1 a 1. Lo que me explicaron es que los valores positivos suelen ser agua, y los negativos son vegetación o suelo seco.

Y entonces apareció. Un mapa en tonos azules y verdes en mi pantallita. El humedal cercano a mi casa brillaba en tonos positivos intensos. Era increíble ver cómo la forma del agua que yo conocía de caminar por ahí con botas de goma coincidía exactamente con lo que RStudio me estaba mostrando. Esa satisfacción de que lo que ves en la pantalla cuadre con el barro en tus botas es lo que hace que valga la pena pasar los fines de semana estudiando esto.

Si te interesa profundizar más en otros índices, hace poco también estuve probando cómo calcular el índice de vegetación EVI, que es primo hermano de este pero para ver qué tan sano está el bosque.

Reflexiones de una tarde de domingo

Mirando ahora el mapa terminado, me doy cuenta de cuánto he avanzado desde que empecé este invierno sin saber qué era un píxel. Ya no me asusta tanto abrir RStudio, aunque sé que el próximo fin de semana probablemente me encontraré con otro error que me tendrá de cabeza un par de horas. Pero así es esto de aprender sola, ¿no? Es un camino de hormiga, muy valdiviano, de avanzar bajo la lluvia, un paso a la vez.

Para quienes están empezando, mi consejo de aprendiz es que no se desesperen con los mensajes rojos. A veces es solo una coma, a veces es que el sistema de coordenadas se volvió loco, y a veces es simplemente que el satélite vio una nube que justo tapaba tu humedal favorito. Pero cuando logras ver esa mancha azul en el mapa y sabes que ahí, justo ahí, el agua está alimentando a los cisnes y a las garzas, todo el esfuerzo cobra sentido. ¡Nos vemos el próximo fin de semana con más mapas y seguramente más café!

Artículos relacionados