
Afuera llueve, como casi siempre acá en Valdivia, y el sonido rítmico de la lluvia contra el vidrio de mi ventana es lo único que me acompaña mientras el cursor de R parpadeaba en una consola llena de errores rojos. Es una de esas tardes de sábado donde una se pregunta por qué se mete en estos líos (en vez de estar viendo una serie), pero ahí estaba yo, tratando de entender por qué mi mapa de vegetación parecía un plato de confeti con 20 colores diferentes que no me decían nada. Y es que, cuando uno empieza a bajar datos de satélite, se encuentra con que la realidad es súper detallada, pero a veces ese detalle es ruido cuando lo único que quieres es ver dónde termina el bosque y dónde empieza lo demás.
Les cuento esto porque me pasó a mediados del invierno pasado, en una tarde de lluvia torrencial en agosto, que fue cuando de verdad me obsesioné con esto de limpiar mis mapas. Yo quería observar el avance del bosque nativo cerca de mi casa, pero los archivos ráster originales traían categorías tan específicas que oscurecían la visión general del paisaje. Tenía como cinco tipos de arbustos distintos y tres clases de áreas urbanas, y al final, en la pantalla de mi laptop, todo se veía mezclado. Para alguien que está aprendiendo sola, como yo, ver tanto número y tanta etiqueta marea un poco, y entonces me di cuenta de que necesitaba aprender a 'simplificar' o, como dicen los que saben, a reclasificar.
El lío de los paquetes y el primer intento fallido
Al principio, una lee tutoriales antiguos y se confunde porque antes todos usaban un paquete que se llamaba 'raster', pero ahora todo el mundo dice que hay que usar terra. Dicen que es el sucesor moderno y mucho más rápido, y la verdad es que se nota, aunque al principio me costó un mundo que me funcionara. Mi primera gran pelea fue no entender cómo estructurar lo que R llama una matriz de reclasificación. Yo pensaba que era llegar y decirle 'oye, junta esto con esto', pero R es súper cuadrado (bueno, es un programa, qué espero) y si no le das la tabla exacta, te lanza esos errores rojos que me hacían querer cerrar la tapa del computador y olvidarme de todo.

Me acuerdo de que un par de semanas después de ese primer intento, me senté con más calma. Ya había aprendido un poco sobre cómo manejar datos vectoriales en R para delimitar áreas forestales, y eso me dio un poco de confianza para volver al raster. El problema es que los datos de uso de suelo a menudo vienen con leyendas internacionales, como esas de la FAO o de agencias europeas, que no siempre se ajustan a lo que uno ve por la ventana en el sur de Chile. Por ejemplo, me marcaba zonas como 'matorral ralo' que para mí eran simplemente bosque joven o degradado que quería proteger.
El momento del 'clic': la matriz de tres columnas
El punto de quiebre, ese momento en que por fin algo cuadró en mi cabeza, fue durante un sábado nublado de mayo, hace no tanto. Estaba tomando mate y mirando la documentación de terra cuando comprendí que un ráster es solo una grilla de números y que podía agruparlos usando una simple tabla de tres columnas. No necesitaba saber de programación avanzada, solo necesitaba organizar mis pensamientos: 'del valor A al valor B, ahora se va a llamar C'.
Para hacerlo en R, usamos la función classify(). Pero antes, hay que construir esa matriz. Imagínense que tienen una imagen de Landsat 8, que tiene una resolución de 30 metros (o sea, cada cuadrito en el mapa representa 30 por 30 metros de terreno real), y los valores de vegetación van del 1 al 10. Si yo quiero que del 1 al 5 sea 'Suelo' y del 6 al 10 sea 'Bosque', mi matriz tiene que decir exactamente eso. Es como hacer una lista de compras pero para píxeles.
Aquí les dejo un ejemplo de cómo se ve esa lógica en mi cabeza (y en el código):
- Columna 1: Valor mínimo del rango original.
- Columna 2: Valor máximo del rango original.
- Columna 3: El nuevo número que les quiero poner.
Lo que me pasó muchas veces, y que fue mi gran fracaso de aprendizaje, fue la decepción de exportar un mapa que salió totalmente negro porque olvidé definir correctamente los valores mínimos y máximos de la matriz. O peor, porque el sistema de coordenadas no coincidía. Por ejemplo, Valdivia está en la zona UTM 18S, que tiene el código EPSG 32718, y si intentaba mezclar eso con algo en WGS 84 (el famoso EPSG 4326), R simplemente no sabía qué hacer y me entregaba un archivo vacío. Un desastre total que me tomó varias tardes entender.
¿Por qué no siempre hay que usar rangos fijos?
Aquí es donde me pongo un poco más preguntona con lo que leo en internet. La mayoría de los manuales te dicen: 'usa estos rangos fijos y listo'. Pero lo que yo aprendí mirando mis propios mapas del bosque es que reclasificar por rangos fijos a veces ignora la variabilidad estadística local de la imagen. No es lo mismo un bosque nativo bajo el sol de enero que bajo las nubes de julio. Por eso, he descubierto que es mucho más preciso aplicar umbrales dinámicos basados en la distribución real de los datos del sensor en ese momento específico.

A veces, antes de reclasificar, conviene mirar el histograma de la imagen (esa montañita de datos que te muestra R). Si ves que la mayoría de tus píxeles de bosque se agrupan en un valor específico, usa ese valor para definir tu corte, no uno que leíste en un libro escrito para bosques de otro continente. Eso me ayudó mucho a que el mapa final se pareciera de verdad a lo que yo veo cuando salgo a caminar por el cerro. Si te interesa profundizar en cómo se ven estas coberturas antes de agruparlas, te recomiendo leer sobre cómo hacer una clasificación de coberturas vegetales en R paso a paso, que es como el paso previo a esta simplificación que estamos haciendo.
Pasos prácticos para no perderse
Si estás ahí frente a la pantalla y te sientes un poco perdida como yo al principio, aquí te resumo lo que a mí me funciona después de mucho ensayo y error:
- Carga tu raster usando
rast()del paqueteterra. - Mira los valores que tiene con
unique()o mira el histograma. No asumas que sabes qué números trae. - Crea la matriz de reclasificación. Yo la hago con la función
matrix(c(...), ncol=3, byrow=TRUE). - Usa
classify()pasando tu raster y la matriz que creaste. - ¡Cruza los dedos! (Bueno, y revisa que no haya errores rojos).
Una vez que logras esto, el alivio de ver un mapa limpio es increíble. Pasar de ese confeti de colores a un mapa donde el bosque, el agua y lo construido se distinguen claramente es como si te limpiaran los lentes. De repente, puedes ver el cambio real año tras año, sin que te distraigan categorías que no te sirven para tu estudio local.

Reflexiones de fin de semana
Al final, todo este camino de aprender teledetección por mi cuenta me ha enseñado que la paciencia es tan importante como el código. A veces una se traba por una coma o por un paréntesis mal puesto (típico de R), y lo mejor es ir a hacerse un té, mirar la lluvia un rato y volver con otros ojos. La reclasificación parece algo técnico y aburrido, pero es la herramienta que me permitió entender que el bosque detrás de mi casa ha retrocedido un poquito en los últimos tres años, algo que a simple vista me costaba asegurar.
Si estás empezando, no te asustes con los términos raros. Al principio yo no sabía qué era una proyección ni un raster, y hoy puedo decir que entiendo cómo esos numeritos en la grilla se convierten en información valiosa para cuidar nuestro entorno. Es un proceso lento, de fin de semana en fin de semana, pero vale totalmente la pena cuando por fin logras exportar ese mapa que tanto te costó y ves que los colores por fin tienen sentido. Y si quieres que ese mapa se vea bonito para mostrarlo, date una vuelta por mis consejos para crear mapas de teledetección en R con leyendas claras, porque de nada sirve un mapa bien reclasificado si nadie entiende qué significan los colores, ¿cierto?
Ya es tarde y la lluvia no para, así que voy a cerrar el RStudio por hoy. Espero que estos pasos te sirvan para que tu próxima tarde de mapas sea un poquito menos frustrante que las mías al principio. ¡Ánimo con esos rasters!