Mejores paquetes de R para análisis de imágenes satelitales hoy

Afuera está lloviendo como si el cielo se hubiera roto sobre Valdivia, una de esas lluvias que no te dejan escuchar ni tus propios pensamientos, y yo estoy aquí, con el sonido rítmico de las gotas sobre el techo de zinc mientras el ventilador de mi computador zumba como si fuera a despegar procesando un stack de imágenes de 10 metros. Es increíble que algo tan chiquitito como un pixel de diez metros de la misión Sentinel-2 pueda pesar tanto en la memoria de mi pobre laptop, pero ahí estoy, mirando la pantalla y esperando que el gráfico aparezca antes de que se me acabe el mate (o la paciencia, lo que ocurra primero).

No les voy a mentir: aprender esto de la teledetección por cuenta propia ha sido un camino lleno de 'y entonces por qué no funciona' y de cerrar el RStudio de un golpe porque el mapa salió en blanco. Pero desde finales de la primavera pasada hasta este invierno lluvioso, he ido armando mi propia cajita de herramientas. Porque cuando una empieza, todo el mundo te dice 'usa este paquete' o 'usa este otro', pero nadie te explica que algunos ya están medio jubilados y otros son los que de verdad te salvan la vida cuando quieres ver si el bosque nativo detrás de tu casa sigue ahí o si el verano lo dejó muy maltratado.

El gran cambio: de lo viejo a lo nuevo (y por qué me dolía la cabeza)

Cuando empecé, me bajé un montón de tutoriales antiguos y todos hablaban de un paquete que se llama raster. Y yo, obediente, lo usaba. Pero sentía que todo iba lentísimo, como si estuviera tratando de mover un auto con el freno de mano puesto. Y entonces, a mediados de noviembre, descubrí que la comunidad de R se había movido a algo mucho más moderno. Resulta que ahora lo que la lleva es el paquete terra.

La diferencia es brutal. No es solo que sea más rápido porque está escrito en C++ (algo que leí por ahí y que suena muy técnico, pero que para mí significa que el computador no se calienta tanto), sino que es mucho más intuitivo. Antes, para hacer cualquier cosa con un archivo vectorial, tenías que pelearte con sp, pero ahora sf es el estándar de oro. Y la combinación de terra para las imágenes y sf para los mapas vectoriales es como el pan con mantequilla: simplemente funcionan bien juntos.

Primer plano de una pantalla de laptop ejecutando código de R para procesar imágenes satelitales.

Recuerdo una tarde de tormenta en mayo donde casi tiro la toalla. Estaba intentando cruzar los datos de las parcelas del bosque con una imagen satelital y nada cuadraba. Sentí esa derrota amarga al ver que el mapa de vegetación aparecía totalmente desplazado, como si el bosque se hubiera mudado al medio del Océano Pacífico, y todo porque olvidé transformar el CRS de la capa vectorial. Si les pasa, no se asusten, es lo más normal del mundo al principio. De hecho, escribí un poco sobre eso en mi nota sobre cómo corregir proyecciones cartográficas en R de forma sencilla, porque es un error que te puede arruinar todo un sábado de trabajo.

Mis favoritos: Los paquetes que no me fallan

Si tuviera que armar un bolso de emergencia para analizar satélites un fin de semana, estos serían los elegidos. Primero, terra. Es el que lee los archivos .tif, el que corta las imágenes y el que calcula los índices. Es el corazón de todo. Y lo mejor es que no te pide cosas raras; le pasas la ruta del archivo y ya está.

Después está sf. Este es para los vectores (puntos, líneas, polígonos). Lo que más me gusta es que trata a los datos geográficos como si fueran una planilla de Excel normal (un data frame, para los que saben), así que puedes usar todas las herramientas de tidyverse que ya conoces. Y hablando de eso, el 'spatial tidyverse' es una maravilla porque te permite usar el operador pipe (%>%), lo que hace que tu código se lea como una receta de cocina en lugar de un jeroglífico egipcio.

Pero el que de verdad me cambió la vida fue rstac. Antes, yo pasaba horas descargando archivos comprimidos gigantescos de la web de la ESA o de la NASA, llenando mi disco duro de basura que después no sabía ni qué era. Con rstac, puedes conectarte directamente a catálogos en la nube (el estándar STAC) y buscar imágenes filtrando por fecha y nubosidad sin descargar nada primero. Solo bajas lo que realmente vas a usar. Es como pasar de comprar todo el supermercado a pedir solo los ingredientes de la cena por una app.

La trampa de los paquetes 'todo en uno'

Aquí es donde me pongo un poco seria (bueno, lo que puedo). Al principio, muchos te recomiendan RStoolbox. Es un paquete que tiene funciones para todo: corregir la atmósfera, hacer clasificaciones, calcular índices... suena ideal, ¿cierto? Pues después de tres semanas de errores constantes y de ver cómo mi RStudio se cerraba solo, me di cuenta de algo.

Abandonar los paquetes integrales como RStoolbox es preferible si buscas escalabilidad real. El problema es que esos paquetes suelen intentar procesar todo en la memoria de una forma que, cuando trabajas con series temporales masivas (muchas imágenes de muchos años), saturan los sistemas. Aprendí que es mucho mejor usar funciones atómicas de terra. Sí, tienes que escribir un par de líneas más de código, pero tienes el control total y no te arriesgas a que el computador muera en medio de un proceso largo. Es un poco como mi experiencia aprendiendo teledetección con R sin ser programadora: a veces el camino más largo es el que realmente te enseña cómo funcionan las cosas.

Cuaderno de notas con bocetos de mapas junto a un monitor que muestra un índice de vegetación NDVI.

Un sábado de éxito y el verde que por fin cuadra

Hace poco, un sábado por la mañana, logré por fin lo que tanto quería. Me serví un café bien cargado, abrí el RStudio y empecé a procesar una serie de imágenes de Landsat 8-9. Estos satélites tienen 11 bandas de información, lo que te permite ver cosas que el ojo humano ni se imagina. Mi meta era ver cómo había cambiado el índice NDVI (el que mide qué tan verde y sana está la vegetación) en un parche de bosque cerca de mi casa después de un verano que fue súper seco para los estándares de acá de Valdivia.

Usando terra y un pequeño bucle (que me costó sangre, sudor y lágrimas entender), logré procesar toda la serie temporal sin que el laptop se apagara por sobrecalentamiento. Y ahí estaba: un gráfico precioso donde se notaba claramente la pérdida de follaje. Ver que los datos de un satélite que está a cientos de kilómetros de altura coinciden con lo que yo vi caminando por el cerro es una sensación de poder increíble. Sentí que, por fin, después de tantos errores de proyecciones y códigos que no corrían, estaba entendiendo el lenguaje de la Tierra.

Para quienes están empezando, les recomiendo mucho mirar los pasos para calcular el índice NDVI usando imágenes satelitales en R, porque es el mejor proyecto para perderle el miedo a estos paquetes. No necesitan ser geógrafas ni tener un máster en computación; solo necesitan un poco de paciencia, un buen par de calcetines de lana para el frío y ganas de mirar su entorno desde una perspectiva nueva.

Al final del día, estas herramientas gratuitas son las que nos permiten a personas comunes y corrientes vigilar lo que pasa en nuestro paisaje. Ya no dependemos de que alguien más nos diga si el bosque está bien o mal; podemos abrir RStudio, cargar un par de librerías y verlo con nuestros propios ojos. Y aunque a veces el EPSG:4326 me siga dando pesadillas (es el código para el sistema de coordenadas WGS 84, no lo olviden), vale totalmente la pena el esfuerzo. Ahora, si me disculpan, la lluvia parece que amainó un poco y voy a aprovechar de salir a mirar ese verde de verdad, antes de que el próximo script me vuelva a atrapar frente a la pantalla.

Artículos relacionados