¿Te podemos ayudar?

PROYECTO

Análisis espacial con R

María Alexandra Flores Vásquez
El corredor de Conservación Transfronterizo Abiseo-Cóndor-Kutokú, ubicado en el norte del Perú y el sur de Ecuador cuenta con una alta diversidad biológica y fue establecido para proteger la conectividad y la resiliencia de los ecosistemas distribuidos entre las Áreas Naturales Protegidas (ANP) y otras unidades de conservación de ambos países (Servicio Nacional de Áreas Naturales Protegidas por el Estado [SERNANP], 2025). Debido a su variado relieve altitudinal, el Santuario Nacional Cordillera de Colán (SNCC) y el Bosque de Protección Alto Mayo (BPAM), que forman parte de este corredor, presentan diversos ecosistemas y albergan una alta diversidad de flora y fauna, e incluso endemismo (Edquén, 2024; Ministerio del Ambiente [MINAM], 2021; Elliot, 2009).
En este contexto, el análisis de parámetros físicos, como las altitudes y pendientes, es fundamental debido a que su relieve accidentado influye directamente en la distribución de la biodiversidad, la vulnerabilidad de los suelos ante procesos erosivos y su degradación por actividades antropogénicas como la deforestación, agricultura y ganadería extensiva. El presente proyecto tiene como finalidad procesar un Modelo Digital de Elevación del Terreno (DEM) utilizando el software RStudio para generar un mapa de pendientes y un histograma de elevaciones para un área de estudio que engloba al Bosque de Protección Alto Mayo y el Santuario Nacional Cordillera de Colán.
Los DEM son la representación digital de la superficie topográfica y son herramientas importantes en la hidrología, geomorfología, climatología y biodiversidad (Liu et al., 2022). Pueden ser utilizados para modelamientos hidrológicos, evaluación de riesgos de movimientos en masa e inundaciones, planeamiento urbano, y para el cálculo de pendientes, aspecto y sombreado (Ibrahim et al., 2020). Diversas misiones de observación de la tierra han generado DEM de distinta resolución espacial, resolución temporal y cobertura territorial (Polidori & El Hage et al., 2020), destacando ASTER GDEM, SRTM, ALOS World 3D, TanDEM-X y Copernicus, este último muestra gran detalle en la representación del terreno, sin embargo, su precisión puede ser afectada por la cobertura del suelo y en un menor nivel por la pendiente del terreno (Li et al., 2022).
Investigaciones en el BPAM han analizado la influencia de factores microambientales como la pendiente y elevación en la abundancia y composición de orquídeas (Edquén, 2024; Acuña-Tarazona et al. 2022) o como la altura puede influenciar la biomasa de los árboles y su altura (Heckmann, 2006). Camacho-Zorogastúa et al. (2023) modelaron la pérdida de suelo en la cuenca del río Mayo (San Martín), determinando que las pendientes y la cobertura vegetal, están directamente relacionadas a la tasa de erosión del suelo. Estos antecedentes evidencian que el relieve del área no es solo una característica física, sino un factor importante para la biodiversidad y los procesos ecológicos, justificando el análisis de pendientes en el área de estudio.
Se delimitó el área de estudio incluyendo las áreas de las ANP SNCC y el BPAM, más un buffer de 20km (Figura 01), abarcando un total de 11912.66 km². El área de interés se encuentra en los departamentos de Amazonas y San Martín en el norte peruano.
A lo largo del área delimitada se encuentran diversas ANP, como la Zona Reservada Rio Nieva, la Reserva Comunal Chayu Naín, el Área de conservación Regional Vista Alegre-Omia y las Áreas de Conservación Privada Copallín, La Pampa del Burro, Abra Patricia - Alto Nieva, Hierba Buena - Allpayacu y Bosque de Palmeras de la Comunidad Campesina Taulia Molinopampa, que contribuyen a la conectividad entre las ANP seleccionadas para el presente estudio (SERNANP, 2010).

Utilizar el software RStudio para procesar un DEM, generar productos cartográficos y analizar las principales características topográficas del área de estudio.
Se utilizó el Copernicus DEM GLO-30 (versión DGED 2023_1), obtenido de OpenTopography, que es un Modelo Digital de Superficie capturado entre 2011-2015 y de resolución de 30 metros. Asimismo, se obtuvieron los datos vectoriales (shapefiles) de las ANP SNCC y BPAM de GEO ANP de SERNANP.
Se estableció la ruta de trabajo, y se instalaron los siguientes paquetes: terra, para la manipulación de datos raster; sf, para el manejo de datos vectoriales; whitebox, para procesamiento de rasters; dplyr, para el filtrado y manipulación de datos tabulares; ggplot2, tidyterra y ggnewscale, para la visualización cartográfica; y RColorBrewer, para crear paletas de colores estandarizadas.
| # Establecerdirectorio de trabajo setwd("~/28_Análisis_espacial_con_R/Proyecto/data/") # Importar librerías library(terra) library(ggplot2) library(whitebox) library(sf) library(dplyr) library(tidyterra) library(ggnewscale) library(RColorBrewer) |
Se cargaron los datos vectoriales correspondientes a las ANP y se filtraron las unidades correspondientes al SNCC y BPAM, para luego proceder a la unión geométrica de ambos vectores. Se delimitó el área de interés generando un buffer de 20km alrededor de las ANP seleccionadas, no sin antes reproyectar el vector a UTM Zona 18S (EPSG:32718).
| #Cargar shapefile anps <- st_read("~/28_Análisis_espacial_con_R/Proyecto/data/SERNANP/ANPNacionalDefinitivas.shp") names(anps) #Leer nombres de columnas unique(anps$anp_nomb) #Ver nombres de ANPs #Filtrar vectores sn_cord_colan <- anps %>% filter(anp_nomb == "Cordillera de Colán") bp_alto_mayo <- anps %>% filter(anp_nomb == "Alto Mayo") #Unir polígonos corredor_base <- st_union(st_geometry(sn_cord_colan), st_geometry(bp_alto_mayo)) #Reproyectar a UTM Zona 18S (EPSG:32718) st_crs(corredor_base) #Verificar CRS actual corredor_base_utm <- st_transform(corredor_base, crs = 32718) #Generar buffer de 20km corredor_buffer <- st_buffer(corredor_base_utm, dist=20000) |
Se creó el objeto Spatraster a partir del mosaico DEM que será manipulado por el programa. El corte del DEM al tamaño del área de interés se realizó utilizando el vector previamente reproyectado al sistema de coordenadas del mosaico. Los DEM sin procesar presentan "sumideros" o depresiones artificiales que pueden sesgar el cálculo de pendientes y flujos, por lo cual, se utilizó whitebox para rellenar estas imperfecciones.
| #Importar mosaico DEM tile <- rast("~/28_Análisis_espacial_con_R/Proyecto/data/rasters_COP30/output_hh.tif") #Convertir al polígono en SpatVector (terra) area_interes <- vect(corredor_buffer) area_interes_geo <- project(area_interes, crs(tile)) #Reproyectar a CRS del raster (WGS84 geográfico) #Recortar raster dem_crop <- crop(tile, area_interes_geo) # Recorta al extent dem <- mask(dem_crop, area_interes_geo) # Recorta a la forma de área #Guardar archivo DEM writeRaster(dem, "dem.tif", overwrite=TRUE) #Rellenar depresiones wbt_fill_depressions(dem= "dem.tif", "dem_rellenado.tif") #Cargar raster dem_interes <- rast( "dem_rellenado.tif") |
Se calculó la pendiente en grados para posterior reclasificación y se generó un hillshade (sombreado), a partir del aspecto y pendiente, para mejorar la visualización.
#Calcular pendiente en grados #Calcular pendiente y aspecto en radianes |
Se reproyectaron las pendientes a UTM 18S y se convirtieron de grados a porcentaje, para su reclasificación según los rangos establecidos por FAO (2009), para facilitar la interpretación de resultados.
| # Reproyectar pendientes a UTM 18S pendientes_utm <- project(pendientes, "EPSG:32718") #Convertir grados (°) a % #Fórmula: % = tan(grados * π/180) * 100 pendientes_pct <- tan(pendientes_utm * pi / 180) * 100 #Matriz de reclasificación m_reclass <- matrix(c(0, 0.2, 1, 0.2, 0.5, 2, 0.5, 1, 3, 1, 2, 4, 2, 5, 5, 5, 10, 6, 10,15, 7, 15, 30, 8, 30, 60, 9, 60, Inf, 10), ncol =3, byrow= TRUE) #Reclasificación pendientes_fao <- classify(pendientes_pct, m_reclass) #Asignar etiquetas levels(pendientes_fao) <- data.frame(id = 1:10, class = c("Plano", "Nivel", "Cercano al nivel", "Muy ligeramente inclinado", "Ligeramente inclinado", "Inclinado", "Fuertemente inclinado", "Moderadamente escarpado", "Escarpado", "Muy escarpado")) #Paleta de colores pal_fao <- brewer.pal(10, "RdYlGn") # 10 colores, de verde a rojo pal_fao <- rev(pal_fao) # invertir colores |
Previo a realizar el mapa de pendientes, se reproyectaron los resultados del cálculo de sombreado y los datos vectoriales correspondientes a las Cordillera de Colán y Alto Mayo, a UTM 18S para asegurar la precisión en su mapeo.
| # Reproyectar hillshade a UTM 18S sombreado_utm <- project(sombreado, "EPSG:32718") # Reproyectar vectores a UTM 18S alto_mayo_utm <- st_transform(bp_alto_mayo, "EPSG:32718") cord_colan_utm <- st_transform(sn_cord_colan, "EPSG:32718") ggplot() + #Agregar ráster de sombreado y escala de color geom_spatraster(data = sombreado_utm) + scale_fill_gradientn(colours = grey(0:100/100), na.value = "transparent", #color de fondo guide = "none") + #oculta barra de color #Agregar ráster de pendientes y escala de color new_scale_fill() + #Agrega una 2nda escala de relleno para raster geom_spatraster(data = pendientes_fao, alpha = 0.5) + #controla transparencia del raster scale_fill_manual(values = pal_fao, na.translate = FALSE, #remueve valores NA name = "Clasificación de\nPendientes (FAO, 2009)") + # "\n" salto de línea #Agregar vector de BP Alto Mayo y etiqueta geom_sf(data = alto_mayo_utm, fill = NA, color = "black", linewidth = 0.6) + geom_sf_text(data = alto_mayo_utm, aes(label = "BP\nAlto Mayo"), color = "black", fontface = "bold.italic", size = 2.8) + #Agregar vector de SN Cordillera de Colán y etiqueta geom_sf(data = cord_colan_utm, fill = NA, color = "black", linewidth = 0.6) + geom_sf_text(data = cord_colan_utm, aes(label = "SN Cordillera\nde Colán"), color = "black", fontface = "bold.italic", size = 2.8) + coord_sf(crs = 32718, datum = st_crs(32718)) + # forzar UTM 18S (en la grilla) labs(title="Mapa de Pendientes", subtitle="BP Alto Mayo / SN Cordillera de Colán", x="Este (m)", y="Norte(m)", caption="Fuente: Copernicus DEM GLO-30 | SERNANP") |
Se realizó la conversión del ráster a un data frame para su procesamiento en ggplot2 para la generación del histograma de distribución de alturas.
| demg <- terra::as.data.frame(dem_interes, xy = TRUE) ggplot(data = demg, aes(x = dem_rellenado))+ geom_histogram(bins = 25, fill = "azure2", color = "darkcyan") + labs(title = "Distribución de valores de altitud", subtitle = "BP Alto Mayo — SN Cordillera de Colán", x = "Altitud (m s.n.m.)", y = "Número de celdas raster", caption = "Fuente: Copernicus DEM GLO-30")+ theme_minimal() |

El mapa de pendientes (Figura 02) y la tabla 01, muestran que las zonas de mayor pendiente (de moderadamente escarpado a muy escarpado) se encuentran en la zona norte y oeste del área de estudio. Las pendientes escarpadas (30-60%) y moderadamente escarpadas (15-30%), concentran la mayor parte de la superficie, con 39.54% y 23.30%, respectivamente. Adicionalmente, la categoría muy escarpado (>60%) representa un 18.80% del territorio. En conjunto, estas tres clases abarcan aproximadamente el 81.64% del área total, lo que nos indica que el paisaje está dominado por pendientes pronunciadas y relieve montañoso.
Las áreas con pendientes de plano a fuertemente inclinado se encuentran en la zona sur-este al BPAM, y representan solo el 18.37% del área de estudio, de las cuales, el 9.97% del área representa las pendientes intermedias (5-15%) y el 8.4% está cubierto por pendientes suaves (0-5%) que representan las zonas de transición de áreas montañosas a zonas de pendientes reducidas de la selva baja.

Tabla 01: Clases de gradientes de las pendientes en el área de estudio, según clasificación FAO (2009).
| Clase | Rango FAO (%) | Área (km²) | Área (%) | |
|---|---|---|---|---|
| 1 | Plano | 0–0,2 | 168.4737 | 1.5 |
| 2 | Nivel | 0,2–0,5 | 67.6287 | 0.6 |
| 3 | Cercano al nivel | 0,5–1,0 | 121.6935 | 1.1 |
| 4 | Muy ligeramente inclinado | 1,0–2 | 192.0339 | 1.7 |
| 5 | Ligeramente inclinado | 2–5 | 399.4911 | 3.5 |
| 6 | Inclinado | 5–10 | 510.2127 | 4.5 |
| 7 | Fuertemente inclinado | 10–15 | 618.2127 | 5.5 |
| 8 | Moderadamente escarpado | 15–30 | 2635.5474 | 23.3 |
| 9 | Escarpado | 30–60 | 4473.2385 | 39.5 |
| 10 | Muy escarpado | > 60 | 2126.7378 | 18.8 |
En el histograma de valores de elevación (Figura 03), se observa una distribución asimétrica positiva. La moda se ubica en 916.7 m.s.n.m., mientras que la mediana (1571.3 m) y la media (1738.5 m) se desplazan hacia valores de elevación mayores. La desviación estándar (761.4 m) refleja una alta variabilidad altitudinal en el área de estudio.
Las altitudes máximas (de hasta 3998 m.s.n.m.), y las altitudes mínimas (de hasta 332 m.s.n.m.) representan una superficie relativamente reducida. Solo el 10% de la superficie total se ubica por debajo de los 849.7 m y por encima de 2915.7 m., los cuales corresponden a los valles más bajos y las cumbres más elevadas. Asimismo, el 80% central de la superficie se distribuye entre estos valores.


María Alexandra Flores Vásquez

Análisis espacial con R
Mario Caceres