
Afuera la lluvia no para y el sonido sobre las planchas de zinc del techo ya es como música de fondo, de esa que te acompaña mientras tratas de entender por qué un código no funciona. Estoy acá en Valdivia, con mi café que ya se puso rancio de tanto esperar y el calefactor a leña haciendo lo que puede, frente a la pantalla de mi laptop que, pobrecita, ya está en las últimas. Hace poco, una tarde de lluvia intensa en junio, me pasó que bajé una imagen satelital gigante, de esas que cubren media región de Los Ríos, cuando yo en verdad solo quería mirar un parchecito de bosque nativo que hay detrás de mi casa. Y ahí estaba yo, viendo cómo el círculo de 'procesando' daba vueltas y vueltas, sintiendo esa frustración de quien no nació sabiendo programar pero que igual se mete en estos líos por pura curiosidad.
Si alguna vez has intentado abrir un archivo gigante en RStudio y has sentido que el ventilador de tu computador va a despegar como un avión, este post es para ti. No te voy a hablar con palabras raras de ingeniera porque no lo soy, sino como alguien que aprendió a punta de errores (muchos errores) a dejar de pelear con el mapa y empezar a disfrutarlo. Porque recortar un raster parece algo obvio, como usar una tijera, pero en el mundo de los datos geoespaciales, la tijera a veces no corta o, peor, corta en el lugar equivocado porque las reglas del juego son un poco mañosas.
El drama de las imágenes gigantes y la laptop que sufre
Todo empezó porque quería ver cómo cambiaba el verde de mi cerro favorito durante el invierno. Bajé una imagen de Sentinel y, claro, pesaba una enormidad. Mi primer error fue intentar visualizarla entera. Error de principiante, lo sé ahora. Mi laptop se quedó pegada unos diez minutos y yo ahí, mirando la lluvia por la ventana, pensando en si esto de la teledetección era realmente para mí. Es que cuando uno empieza, cree que tiene que trabajar con todo el archivo, pero la verdad es que casi siempre nos interesa un pedacito minúsculo. Y para eso necesitamos lo que en el mundo de los Sistemas de Información Geográfica llamamos un shapefile (ese archivo que guarda formas, como polígonos).

Lo que nadie te dice al principio es que un 'shapefile' no es solo un archivo. Para que R lo reconozca, necesitas tener al menos tres archivos con el mismo nombre pero distintas extensiones en la misma carpeta: el .shp (que es el dibujo), el .shx y el .dbf. Si te falta uno, R te va a tirar un error que te va a dejar con la misma cara de confusión que puse yo hace un par de meses. En mi experiencia aprendiendo teledetección con R sin ser programadora, aprendí que la organización de las carpetas es la mitad de la batalla, especialmente cuando el clima no acompaña y uno solo quiere que el mapa aparezca rápido.
El paquete 'terra': nuestro mejor amigo en este viaje
Antes se usaba mucho un paquete que se llamaba 'raster', pero ahora todo el mundo (o al menos los que saben más que yo) dice que hay que cambiarse a 'terra'. Es mucho más rápido y maneja mejor la memoria, lo cual es vital si tu computador es tan viejo como el mío. Para recortar, lo primero que hago es cargar mi imagen y mi polígono. Y aquí viene el truco que me voló la cabeza: no es llegar y cortar. Es un baile de dos pasos que al principio me parecía innecesario, pero que tiene todo el sentido del mundo una vez que lo entiendes.
El primer paso es el crop(). Imagina que tienes una foto grande y le pones un marco cuadrado encima. El crop() corta el raster siguiendo el rectángulo más pequeño que contiene a tu polígono. Es súper rápido. Pero claro, si tu área de estudio es un círculo o una forma rara de un bosque, el crop() te va a dejar con bordes que no quieres. Ahí es donde entra el segundo paso, el mask(). El mask() es como poner una plantilla encima: todo lo que queda fuera de tu polígono se vuelve 'transparente' (o valores NA, como dicen los que saben).
Pero ojo aquí, y este es mi gran consejo de fin de semana: olvídate de usar la función mask de entrada. Si aplicas mask() directamente a un raster gigante sin haber hecho crop() antes, tu PC va a intentar procesar cada píxel de la imagen original para decidir si lo borra o no. Un desperdicio total. Si haces crop() primero, reduces el área de trabajo al mínimo y luego el mask() se hace en un segundo. Me tomó varias tardes de frustración y mucho olor a café quemado entender que este orden me ahorraba literalmente horas de espera frente a la pantalla.
El gran dolor de cabeza: ¿Por qué mi mapa sale en blanco?
Varios fines de semana después de empezar, me pasó lo peor. Tenía mi código listo, le daba a 'run' y... nada. El gráfico salía blanco. O peor, salía un error diciendo que las extensiones no coincidían. Sentí una derrota total, de esas que te dan ganas de cerrar la tapa de la laptop y dedicarte a tejer. Resulta que el problema era el famoso Sistema de Referencia de Coordenadas (CRS).
Mi cara de derrota al ver un gráfico vacío fue épica. Resulta que mi shapefile estaba en coordenadas geográficas (latitud y longitud, como lo que te da el celular) y mi raster estaba en UTM, específicamente en la zona 18S para Chile central-sur (el código EPSG 32718). Es como si yo estuviera hablando en español y mi mapa en chino; nunca se iban a encontrar en el espacio. En R, si no usas la función project() para que ambos hablen el mismo idioma, el recorte nunca va a funcionar.

Pasos para que no te pase lo que a mí:
- Carga el raster con
rast("tu_imagen.tif"). - Carga el shapefile con
vect("tu_poligono.shp"). - Revisa los sistemas:
crs(raster) == crs(vector). Si sale FALSE, tienes que reproyectar uno de los dos. - Usa
crop()primero para achicar el área de interés. - Usa
mask()al final para dejar la forma perfecta de tu bosque.
Si te pasa que el archivo es demasiado pesado y ni siquiera carga, te recomiendo darle una mirada a lo que escribí sobre la solución a errores comunes al cargar rasters pesados en R, porque a veces el problema no es el código, sino cómo le pedimos a R que lea los datos sin que se ahogue.
La calma después de la tormenta (y el código que funciona)
Un sábado por la mañana despejada, de esos que Valdivia nos regala de vez en cuando para que no nos olvidemos del sol, por fin logré ver mi polígono verde exacto en la pantalla. No era una mancha gigante ni un error rojo en la consola; era el recorte perfecto de mi área de estudio. Guardé ese script como si fuera un tesoro. Lo mejor de aprender así, de a poquito y dándose cabezazos contra la mesa, es que cuando algo cuadra, el aprendizaje se queda grabado a fuego.
Ahora, cada vez que quiero empezar un proyecto nuevo, ya no sufro. Sé que tengo que mirar el código EPSG 32718 para mis mapas de acá del sur, sé que tengo que tener mis tres archivos del shapefile a mano y, sobre todo, sé que tengo que tener paciencia. La teledetección en R es como el clima de acá: a veces te cierra todas las puertas con nubes grises, pero si esperas lo suficiente y sigues intentando, de repente se abre el cielo y puedes verlo todo con una claridad maravillosa.
Si estás empezando, no te desesperes si la pantalla se queda en blanco o si el proceso tarda una eternidad. Prueba ese truco de recortar antes de enmascarar y verás cómo tu laptop te lo agradece. Y si te pierdes con los términos, siempre puedes volver a lo básico. Al final del día, lo que importa es que ese mapa te sirva para entender mejor el pedacito de tierra que estás mirando, ya sea un bosque en el sur de Chile o cualquier otro rincón del mundo.