Un mapa con el NDVI ya calculado todavía no es lo mismo que una clasificación de coberturas vegetales. Es una pregunta que me tomó bastante tiempo responder, sobre todo después de ver tantos tutoriales gratuitos que tratan ambas cosas como si fueran el mismo paso.
Antes de seguir: algunos enlaces de este texto son de afiliado a cursos que compré con mi propia plata y probé por mi cuenta. Si te matriculas por acá, yo recibo una comisión y a ti no te cambia el precio final. Cuando la recomendación no viene de algo que usé, te lo digo directo.
La diferencia es más simple de lo que parece, aunque casi nadie te la explica así de entrada. El NDVI es un número por pixel, una razón entre dos bandas que te dice qué tan "verde y sano" se ve algo, pero no te dice si ese pixel es bosque nativo, una plantación o el pasto de una plaza. Clasificar coberturas vegetales en R significa, en cambio, entrenarle un algoritmo a la imagen completa para que le ponga una etiqueta a cada pixel, usando varias bandas a la vez y ejemplos reales de terreno. Es la diferencia entre medir qué tan verde se ve algo y decidir qué es. Ahí la teledetección deja de ser solo mirar una imagen satelital bonita y pasa a ser un proceso con varios pasos que hay que respetar en orden, uno detrás de otro.
¿Qué necesita R para clasificar de verdad, más allá del NDVI?
Para clasificar coberturas vegetales necesitas tres cosas al mismo tiempo: varias bandas espectrales de una misma escena, un puñado de puntos de terreno donde tú ya sabes qué hay ahí, y un algoritmo que aprenda la relación entre ambos. No voy a explicar acá qué es exactamente un archivo raster pixel por pixel, porque ya me extendí sobre eso en otro texto: es la base sobre la que se para todo lo demás, y conviene tenerla clara antes de llegar a esta parte. Tampoco hace falta venir de una carrera de geografía ni saber programar de antes para llegar hasta este punto: aprendí esto sola, los fines de semana, revisando foros y probando de nuevo cada vez que algo no funcionaba.
La imagen que elijas también pesa. Trabajé con escenas de Landsat 8, que tienen una resolución de 30 metros por pixel. Cada cuadradito representa esa medida en la vida real, así que no es para ver tu patio, pero para el bosque cerca de Barrio Alemania, acá en Valdivia, funciona bien. Lo que sí importa un poco más es que trae varias bandas espectrales, y entre ellas la infrarroja y la roja son las que el algoritmo mira con más atención para distinguir vegetación sana de suelo pelado, aunque ese tema de las bandas da para otro texto aparte.
Antes de llegar a ese punto pasé harto tiempo dando vueltas: vi horas de videos de YouTube sobre SIG que usaban un software distinto al que tenía instalado en mi computador, y terminaba más perdida que al principio. Ahí fue cuando me inscribí en el curso de Teledetección Satelital con R y R-Studio. No fue barato y lo pensé harto antes de pagar, pero tener el proceso completo ordenado, en vez de ir picoteando videos sueltos que no calzaban entre sí, me ahorró varias tardes de dar vueltas en círculo sin llegar a ninguna parte.
La proyección: el paso invisible que puede arruinarlo todo
Antes de clasificar nada hay un paso que casi nadie menciona y que puede arruinarlo todo en silencio: tus puntos de terreno y tu imagen satelital tienen que compartir el mismo sistema de referencia de coordenadas, algo que dejé explicado con calma en la guía sobre cómo corregir proyecciones cartográficas en R de forma sencilla, porque es un paso que no conviene improvisar.
La primera vez que a mí me apareció un error de proyección en la consola, no cerré la ventana ni fui a buscar ayuda de inmediato: me quedé leyendo el mensaje completo, de principio a fin, y para mi sorpresa tenía sentido. Decía justo qué sistema de coordenadas traía cada capa, y bastó comparar los dos nombres para entender el problema. Cuando por fin volví a mirar la pantalla, el té ya se había enfriado del todo, ahí al lado del cursor parpadeando junto a esa línea roja.
Entrenar el algoritmo para que reconozca el bosque
Una vez que las capas coinciden, viene la parte que de verdad clasifica: armas un set de puntos de entrenamiento, zonas que conoces bien y donde puedes decir con seguridad "esto es bosque, esto es pradera, esto es suelo desnudo". Yo usé un algoritmo llamado Random Forest, que mira los valores de esas bandas en los puntos que tú le diste y va aprendiendo el patrón por su cuenta. Ayuda bastante haber calculado antes un índice como el NDVI para tener una capa extra de información, aunque como dijimos al principio, ese índice por sí solo no es todavía la clasificación. Si el tema de los índices te interesa, dejé un glosario de índices espectrales aparte, porque merece su propio espacio.
Un consejo que aprendí después de varias pruebas fallidas: no suavices demasiado tu imagen antes de clasificar. Muchos tutoriales recomiendan aplicar filtros para quitar el "ruido", pero si dejas la imagen demasiado pareja, le borras al algoritmo las texturas pequeñas que necesita para distinguir un matorral de un bosque denso. Ese "ruido" muchas veces es información real sobre la estructura de la vegetación, no un error que haya que limpiar. Para esto trabajé con el paquete 'terra' en R, aunque hay varios paquetes espaciales que sirven para lo mismo, cada uno con su propia lógica.
Ese mismo curso que mencioné antes, Teledetección Satelital con R, fue el que me llevó paso a paso por esta parte: desde cómo cargar las bandas sin que R colapse hasta cómo evaluar el resultado, que es justo lo que viene ahora.
Recortar antes de clasificar: el error que R no avisa
Otra trampa típica: recortar la imagen satelital al área que te interesa, usando un shapefile con el límite de tu zona de estudio. Suena trivial, pero si el shapefile y el raster no comparten el mismo sistema de coordenadas, el recorte te devuelve un objeto completamente vacío y R no lanza ningún error que te avise. Simplemente te quedas con nada, sin saber por qué. A mí me pasó un sábado en que una amiga se iba a su taller de cerámica en el centro y yo me quedé el resto de la tarde mirando una consola limpia, sin ningún mensaje rojo, preguntándome por qué mi capa recortada no tenía ni un solo pixel. Hay una guía completa sobre cómo recortar un raster con un shapefile que explica el paso con más calma de la que yo tuve ese día.
Clasificar coberturas vegetales no es lo mismo que predecir dónde vive una especie
Otro mito común, cercano al del NDVI: pensar que una vez que sabes clasificar coberturas vegetales, ya sabes predecir dónde podría vivir una especie en el futuro. Son preguntas distintas, aunque usen capas parecidas. Clasificar te dice qué hay hoy, en la imagen que tienes; modelar dónde podría estar una especie es otra rama completa, que trabaja con esas mismas capas espaciales pero para responder una pregunta distinta. Si te interesa esa segunda pregunta, existe un curso aparte de modelado de nicho ecológico que complementa bien lo que ya sabes de R espacial, pero no reemplaza el paso de clasificar ni lo continúa directamente.
¿Cómo saber si tu mapa final realmente sirve?
Acá está la parte que más se salta la gente: no basta con que el mapa se vea bonito y con colores prolijos para dar la clasificación por buena. Antes de confiar en el resultado, compáralo contra puntos de terreno que no hayas usado para entrenar el algoritmo. Si esos puntos calzan con lo que el mapa dice, vas por buen camino. Fíjate especialmente en las zonas de sombra en los cerros y en los bordes entre coberturas distintas, porque ahí es donde casi cualquier clasificación se equivoca más, confundiendo por ejemplo una ladera en sombra con un cuerpo de agua. Ese chequeo, más que cualquier filtro bonito o cualquier paquete nuevo, es lo que separa un mapa que solo se ve bien de uno en el que realmente puedes confiar para tomar una decisión.
Si ya calculaste tu NDVI y pensabas que ahí terminaba la pega, prueba dar el siguiente paso: arma tus puntos de entrenamiento, revisa que las proyecciones calcen, y deja que el algoritmo haga el resto. Cuéntame si te atoras en algún punto. Lo más probable es que yo ya me haya atorado ahí antes.