1. Introducción

En este cuaderno se trabajó con modelos digitales de elevación (DEMs) para calcular atributos geomorfométricos del terreno en el departamento de Nariño. Se utilizó el paquete MultiscaleDTM de R para procesar y analizar los datos, obteniendo variables como pendientes y curvaturas.

Se agregaron explicaciones a cada código y se describieron los resultados obtenidos para facilitar su comprensión. El enfoque fue aplicar estas herramientas al contexto geográfico de Nariño, considerando su diversidad topográfica.

DEMs (Modelos de Datos de Elevación)

2. Configuración

2.1. Limpieza de memoria

La siguiente instrucción limpia la memoria:

rm(list=ls())

2.2. Instalación y Configuración de Paquetes

Se emplean los siguientes paquetes para el análisis:

options(warn = -1)  # Ocultar advertencias
suppressPackageStartupMessages({
library(elevatr)   # Procesamiento de datos de elevación
library(sf)        # Manejo de datos espaciales
library(leaflet)   # Visualización interactiva
library(terra)     # Manipulación de datos ráster
library(MultiscaleDTM) # Calcular atributos geomorfométricos del terreno 
library(exactextractr) # Extraer valores de ráster dentro de áreas específicas
  options(warn = -1)  # Ocultar advertencias
})

3. Introducción a elevatr

El paquete elevatr permite obtener datos de elevación desde diferentes servicios, generando resultados en formato RasterLayer.

4. Datos de elevación para Nariño

Cargaremos los datos espaciales correspondientes al departamento de Nariño. Esto incluye un archivo en formato shapefile o geopackage que contiene los límites oficiales del departamento.

4.1. Importar límites departamentales

En este paso, se identifican los archivos disponibles relacionados con los límites geográficos del departamento de Nariño.

list.files("./Nariño")
## character(0)

4.2. Carga de datos espaciales

Se importa un geopaquete con los límites oficiales de los municipios de Nariño:

munic <- sf::st_read("Narino/mun_Narino.gpkg")
## Reading layer `cortado' from data source 
##   `C:\Users\danna\Desktop\Geomática Básica 2024-2\Proyecto 4\Datos\Narino\mun_Narino.gpkg' 
##   using driver `GPKG'
## Simple feature collection with 64 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -79.01021 ymin: 0.3613481 xmax: -76.83368 ymax: 2.683898
## Geodetic CRS:  MAGNA-SIRGAS

CRS: MAGNA-SIRGAS Geometría: MULTIPOLYGON Dimensiones: 64 entidades con 11 atributos.

(Narino_crs = st_crs(st_geometry(munic)))
## Coordinate Reference System:
##   User input: MAGNA-SIRGAS 
##   wkt:
## GEOGCRS["MAGNA-SIRGAS",
##     DATUM["Marco Geocentrico Nacional de Referencia",
##         ELLIPSOID["GRS 1980",6378137,298.257222101,
##             LENGTHUNIT["metre",1]]],
##     PRIMEM["Greenwich",0,
##         ANGLEUNIT["degree",0.0174532925199433]],
##     CS[ellipsoidal,2],
##         AXIS["geodetic latitude (Lat)",north,
##             ORDER[1],
##             ANGLEUNIT["degree",0.0174532925199433]],
##         AXIS["geodetic longitude (Lon)",east,
##             ORDER[2],
##             ANGLEUNIT["degree",0.0174532925199433]],
##     USAGE[
##         SCOPE["Horizontal component of 3D system."],
##         AREA["Colombia - onshore and offshore. Includes San Andres y Providencia, Malpelo Islands, Roncador Bank, Serrana Bank and Serranilla Bank."],
##         BBOX[-4.23,-84.77,15.51,-66.87]],
##     ID["EPSG",4686]]
munic$area_m2 = sf::st_area(munic)
munic$area = munic$area_m2/1000000
munic$area = signif(munic$area, digits = 6)
munic

4.3. Obtención de centroides de los municipios

(centers <- st_centroid(munic))

Los centroides de los municipios se calculan y se extraen sus coordenadas:

centers$x = st_coordinates(centers)[,1]
centers$y = st_coordinates(centers)[,2]
centers

4.4. Descarga de datos de elevación

Se utiliza get_elev_raster para descargar un DEM con resolución de zoom 10:

elevation <- elevatr::get_elev_raster(munic, z = 10)
## Mosaicing & Projecting
## Note: Elevation units are in meters.
elevation
## class      : RasterLayer 
## dimensions : 3583, 3585, 12845055  (nrow, ncol, ncell)
## resolution : 0.0006864884, 0.0006864884  (x, y)
## extent     : -79.10156, -76.6405, 0.3516834, 2.811371  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs 
## source     : file592c4c554c71.tif 
## names      : file592c4c554c71

Propiedades:

  • Resolución: 0.0006864884
  • Extensión: xmin = -79.10156, xmax = -76.6405, ymin = 0.3516834, ymax = 2.811371.
  • Sistema de coordenadas: WGS 84.

El resultado se guarda como archivo:

writeRaster(elevation, "Narino/Elevación_Nariño.tif", overwrite=TRUE)

4.5. Conversión a SpatRaster

(elevation2 <- terra::rast(elevation))
## class       : SpatRaster 
## dimensions  : 3583, 3585, 1  (nrow, ncol, nlyr)
## resolution  : 0.0006864884, 0.0006864884  (x, y)
## extent      : -79.10156, -76.6405, 0.3516834, 2.811371  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs 
## source      : file592c4c554c71.tif 
## name        : file592c4c554c71

5. Visualización de Datos de Elevación

5.1 Creación de paleta de colores

Se define una paleta de colores para los valores de elevación:

pal <- colorNumeric(c("cyan", "forestgreen","yellow","tan","orange", "brown"), values(elevation),
  na.color = "transparent")

5.2 Ajuste de resolución

Se reduce la resolución del raster:

(elevation3 <- terra::aggregate(elevation2, fact = 2))
## |---------|---------|---------|---------|=========================================                                          
## class       : SpatRaster 
## dimensions  : 1792, 1793, 1  (nrow, ncol, nlyr)
## resolution  : 0.001372977, 0.001372977  (x, y)
## extent      : -79.10156, -76.63982, 0.3509969, 2.811371  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs 
## source(s)   : memory
## name        : file592c4c554c71 
## min value   :         -2296.50 
## max value   :          4844.25

5.3 Recorte según límites municipales

El raster se recorta para coincidir con los límites de Nariño:

elevation4 <- terra::crop(elevation3, munic, mask=TRUE)

x

leaflet(munic) %>% addTiles() %>% setView(lng = -77.5, lat = 1.5, zoom = 8) %>% 
    addPolygons(color = "white", weight = 1.0, smoothFactor = 0.5,
    opacity = 0.25, fillOpacity = 0.15,
    popup = paste("Municipio: ", munic$mpio_cnmbr, "<br>",
                          "Km2: ", munic$area, "<br>")) %>%
  addLabelOnlyMarkers(data = centers,
                    lng = ~x, lat = ~y, label = ~mpio_cnmbr,
                    labelOptions = labelOptions(noHide = TRUE, direction = 'top', textOnly = TRUE, textsize = "10px")) %>%
  addRasterImage(elevation4, colors = pal, opacity = 0.9)  %>%
  addLegend(pal = pal, values = values(elevation),
    title = "Elevation data for Cordoba (mts)")

Atributos geomorfométricos del terreno en R

6. Introducción a un MultiscaleDTM

El paquete MultiscaleDTM permite calcular atributos geomorfométricos del terreno en múltiples escalas a partir de modelos digitales de terreno (DTM), utilizando ventanas específicas sobre cuadrículas regulares.

7. Lectura de datos de entrada

Para iniciar, cargaremos un modelo digital de elevación (DEM) del departamento de Nariño. Utilizaremos un DEM previamente descargado.

(dem = suppressWarnings(terra::rast("Narino/Elevacion_Narino.tif")))
## class       : SpatRaster 
## dimensions  : 3583, 3585, 1  (nrow, ncol, nlyr)
## resolution  : 0.0006864884, 0.0006864884  (x, y)
## extent      : -79.10156, -76.6405, 0.3516834, 2.811371  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +ellps=GRS80 +no_defs 
## source      : Elevacion_Narino.tif 
## name        : Elevacion_Narino 
## min value   :            -2298 
## max value   :             4864

Este comando permite leer el archivo ráster y obtener información básica del DEM, como su extensión y resolución.

Para reducir la resolución del DEM y evitar problemas de memoria, estás utilizando el siguiente código:

dem2 = terra::aggregate(dem,2, "mean")
## |---------|---------|---------|---------|=========================================                                          

Este comando agrupa las celdas del DEM original en bloques de 2x2, promediando sus valores, lo que reduce la resolución y, por lo tanto, la carga de memoria.

Luego, para leer los municipios, utiliza el paquete sf:

(munic <-  sf::st_read("Narino/mun_Narino.gpkg"))
## Reading layer `cortado' from data source 
##   `C:\Users\danna\Desktop\Geomática Básica 2024-2\Proyecto 4\Datos\Narino\mun_Narino.gpkg' 
##   using driver `GPKG'
## Simple feature collection with 64 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -79.01021 ymin: 0.3613481 xmax: -76.83368 ymax: 2.683898
## Geodetic CRS:  MAGNA-SIRGAS

Al recortar el DEM ( dem2) a los límites del departamento usando el siguiente código:

dem3 = terra::crop(dem2,munic, mask=TRUE)

8. Transformación de coordenadas

Para calcular los atributos geomorfométricos, el DEM debe estar en coordenadas planas. En 2020, el IGAC adoptó el sistema de coordenadas planas con origen único nacional en Colombia, con el código EPSG 9377 .

El siguiente código transforma el DEM a este sistema de coordenadas:

(dem_plane = project(dem3, "EPSG:9377"))
## class       : SpatRaster 
## dimensions  : 1690, 1594, 1  (nrow, ncol, nlyr)
## resolution  : 152.7195, 152.7195  (x, y)
## extent      : 4330329, 4573764, 1598112, 1856208  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        : Elevacion_Narino 
## min value   :        -77.96003 
## max value   :       4708.78516

Para transformar el objeto vectorial, se utiliza:

(munic_plane = sf::st_transform(munic, "EPSG:9377"))

9. Cálculo de atributos geomorfométricos

Para calcular la pendiente y el aspecto, se utiliza la función SlpAsp del paquete MultiscaleDTM .

Se define el parámetro w como el tamaño de la ventana utilizada para calcular los atributos. En este caso, w = c(3, 3)corresponde a una ventana de celdas de 3x3.

El parámetro methoddefine el tipo de vecindad utilizado para los cálculos, donde “queen” es un tipo de vecindad que incluye los vecinos directos e intermedios.

El siguiente código calcula la pendiente y el aspecto:

# Cálculo de pendiente y aspecto
(slp_asp = MultiscaleDTM::SlpAsp(
  dem_plane,
  w = c(3, 3),
  unit = "degrees",
  method = "queen",
  metrics = c("slope", "aspect"),
  na.rm = TRUE,
  include_scale = FALSE,
  mask_aspect = TRUE
))
## class       : SpatRaster 
## dimensions  : 1690, 1594, 2  (nrow, ncol, nlyr)
## resolution  : 152.7195, 152.7195  (x, y)
## extent      : 4330329, 4573764, 1598112, 1856208  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## names       :    slope,       aspect 
## min values  :  0.00000, 1.291696e-04 
## max values  : 62.30485, 3.599993e+02

Luego, se separan los dos resultados en dos capas: pendiente y aspecto. Para la pendiente:

# Capa de pendiente
(slope = subset(slp_asp, 1))
## class       : SpatRaster 
## dimensions  : 1690, 1594, 1  (nrow, ncol, nlyr)
## resolution  : 152.7195, 152.7195  (x, y)
## extent      : 4330329, 4573764, 1598112, 1856208  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :    slope 
## min value   :  0.00000 
## max value   : 62.30485

Finalmente, se visualiza la distribución de los valores de la pendiente:

# Histograma de pendiente
terra::hist(slope, 
            main = "Pendiente de Nariño", 
            xlab = "Pendiente (en grados)",
            ylab = "Frecuencia", 
            col = "#B4EEB4", 
            border = "white", 
            cex.main = 1.8, # tamaño del título
            cex.lab = 1.2, # tamaño subtítulos
            cex.axis = 1, # tamaño números
            sub = "Distribucion de la pendiente en el departamento de Nariño",
            col.sub = "darkred",
            font.sub = 4) # tamaño subtpitulo rojo

Con esto, se obtiene la distribución de las pendientes para el departamento de Nariño.

(aspect =subset(slp_asp, 2))
## class       : SpatRaster 
## dimensions  : 1690, 1594, 1  (nrow, ncol, nlyr)
## resolution  : 152.7195, 152.7195  (x, y)
## extent      : 4330329, 4573764, 1598112, 1856208  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :       aspect 
## min value   : 1.291696e-04 
## max value   : 3.599993e+02
terra::hist(aspect, 
            main = "Orientación de Nariño", 
            xlab = "Orientación (en grados)", 
            ylab = "Frecuencia", 
            col = "powderblue", 
            border = "white", 
            cex.main = 1.8, # tamaño del título
            cex.lab = 1.2, # tamaño subtítulos
            cex.axis = 1, # tamaño números
            sub = "Distribución de la orientación en el departamento de Nariño", 
            col.sub = "darkgreen", 
            font.sub = 4)

(slope_perc = tan(slope*(pi/180))*100)
## class       : SpatRaster 
## dimensions  : 1690, 1594, 1  (nrow, ncol, nlyr)
## resolution  : 152.7195, 152.7195  (x, y)
## extent      : 4330329, 4573764, 1598112, 1856208  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 190.5112
terra::hist(slope_perc, 
            main = "Pendiente de Nariño", 
            xlab = "Pendiente (en porcentaje)", 
            ylab = "Frecuencia", 
            col = "#FFB5C5", 
            border = "white", 
            cex.main = 1.8, # tamaño del título
            cex.lab = 1.2, # tamaño subtítulos
            cex.axis = 1, # tamaño números
            sub = "Distribución de la pendiente en porcentaje en el departamento de Nariño", 
            col.sub = "darkblue", 
            font.sub = 4)

10. Reclasificación del raster de pendiente en Nariño

Para analizar las pendientes en los municipios de Nariño, se utiliza la clasificación de IGAC diseñada para propósitos agrológicos. Esta clasificación divide los valores de pendiente en diferentes rangos, que representan la dificultad de manejo del terreno. Usamos una matriz para definir los rangos y asignarles una clase numérica. Luego, se aplica esta matriz al ráster de pendiente ( slope_perc) para obtener un nuevo ráster reclasificado.

m <- c(0, 3, 1,  
       3, 7, 2,  
       7, 12, 3, 
       12, 25, 4, 
       25, 50, 5, 
       50, 75, 6,
       75, 160, 7)
m <- matrix(m, ncol = 3, byrow = TRUE)

# Reclasificar el raster de pendiente
rc <- classify(slope_perc, m, right = TRUE)

Esta reclasificación permite identificar fácilmente las áreas con pendientes similares y categorizarlas según su grado de inclinación.

10.1. Cálculo de estadísticas zonales en Nariño

Para entender cómo varían las pendientes dentro de cada municipio, se calculan dos estadísticas importantes:

  • Pendiente media por municipio: Se obtiene el valor promedio de pendiente (en porcentaje) dentro de los límites de cada municipio. Esto permite comparar la inclinación general entre diferentes áreas.
  • Clase de pendiente predominante: Se identifica la clase más frecuente en cada municipio, según la clasificación del IGAC. Esto ayuda a entender qué tipo de pendiente domina en cada zona.
# Calcular la pendiente media por municipio en Nariño
(munic$mean_slope <- exactextractr::exact_extract(slope_perc, munic, 'mean'))
##   |                                                                              |                                                                      |   0%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   8%  |                                                                              |=======                                                               |   9%  |                                                                              |========                                                              |  11%  |                                                                              |=========                                                             |  12%  |                                                                              |==========                                                            |  14%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  17%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  23%  |                                                                              |==================                                                    |  25%  |                                                                              |===================                                                   |  27%  |                                                                              |====================                                                  |  28%  |                                                                              |=====================                                                 |  30%  |                                                                              |======================                                                |  31%  |                                                                              |=======================                                               |  33%  |                                                                              |========================                                              |  34%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  41%  |                                                                              |==============================                                        |  42%  |                                                                              |===============================                                       |  44%  |                                                                              |================================                                      |  45%  |                                                                              |=================================                                     |  47%  |                                                                              |==================================                                    |  48%  |                                                                              |===================================                                   |  50%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  58%  |                                                                              |==========================================                            |  59%  |                                                                              |===========================================                           |  61%  |                                                                              |============================================                          |  62%  |                                                                              |=============================================                         |  64%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |====================================================                  |  75%  |                                                                              |======================================================                |  77%  |                                                                              |=======================================================               |  78%  |                                                                              |========================================================              |  80%  |                                                                              |=========================================================             |  81%  |                                                                              |==========================================================            |  83%  |                                                                              |===========================================================           |  84%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  91%  |                                                                              |=================================================================     |  92%  |                                                                              |==================================================================    |  94%  |                                                                              |===================================================================   |  95%  |                                                                              |====================================================================  |  97%  |                                                                              |===================================================================== |  98%  |                                                                              |======================================================================| 100%
##  [1] 20.299105 32.380596  8.698729 41.571503 32.348682 15.669327 27.581131
##  [8] 27.215588 31.412651 38.679775 25.938221 32.615753  9.848496 29.244473
## [15] 37.610256 31.082952 18.418098 37.305721 35.680111 33.170403 34.788029
## [22] 35.712063 11.652614 28.767040 17.722202 23.390669 32.262543 30.377728
## [29] 28.722628 29.733049 31.126711  4.446312 21.784964 38.383274 44.348251
## [36] 28.601044  6.693422 30.628193  5.202904 23.174118  3.004278 22.532930
## [43]  3.751915 36.990864 28.297071 32.750084 36.419662 12.336136 27.841749
## [50]  3.023802 30.547775 32.052128 29.655416 31.669868 31.555115 25.662476
## [57]  8.453331 32.616131 10.925809 28.797358 25.671827  2.908676 21.983486
## [64] 27.497936
# Calcular la clase de pendiente predominante por municipio en Nariño
munic$class <- exactextractr::exact_extract(rc, munic, 'mode')
##   |                                                                              |                                                                      |   0%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   8%  |                                                                              |=======                                                               |   9%  |                                                                              |========                                                              |  11%  |                                                                              |=========                                                             |  12%  |                                                                              |==========                                                            |  14%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  17%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  23%  |                                                                              |==================                                                    |  25%  |                                                                              |===================                                                   |  27%  |                                                                              |====================                                                  |  28%  |                                                                              |=====================                                                 |  30%  |                                                                              |======================                                                |  31%  |                                                                              |=======================                                               |  33%  |                                                                              |========================                                              |  34%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  41%  |                                                                              |==============================                                        |  42%  |                                                                              |===============================                                       |  44%  |                                                                              |================================                                      |  45%  |                                                                              |=================================                                     |  47%  |                                                                              |==================================                                    |  48%  |                                                                              |===================================                                   |  50%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  58%  |                                                                              |==========================================                            |  59%  |                                                                              |===========================================                           |  61%  |                                                                              |============================================                          |  62%  |                                                                              |=============================================                         |  64%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |====================================================                  |  75%  |                                                                              |======================================================                |  77%  |                                                                              |=======================================================               |  78%  |                                                                              |========================================================              |  80%  |                                                                              |=========================================================             |  81%  |                                                                              |==========================================================            |  83%  |                                                                              |===========================================================           |  84%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  91%  |                                                                              |=================================================================     |  92%  |                                                                              |==================================================================    |  94%  |                                                                              |===================================================================   |  95%  |                                                                              |====================================================================  |  97%  |                                                                              |===================================================================== |  98%  |                                                                              |======================================================================| 100%
progress = FALSE #ocultar la barra.............

Los resultados de estas estadísticas proporcionan una visión general del relieve de Nariño, útil para la planificación agrícola y el manejo de los terrenos.

10.2. Visualización: Histograma de la pendiente media en Nariño

Finalmente, para visualizar cómo se distribuyen los valores de medios pendientes entre los municipios de Nariño, se genera un histograma. Este gráfico permite identificar tendencias generales, como si la mayoría de los municipios tienen pendientes bajas, medias o altas.

hist(munic$mean_slope, 
     main = "Pendiente Media en Nariño", 
     xlab = "Pendiente (en porcentaje)", 
     ylab = "Frecuencia de municipios", 
     col = "#FFEC8B", 
     border = "white",
            cex.main = 1.8, # tamaño del título
            cex.lab = 1.2, # tamaño subtítulos
            cex.axis = 1, # tamaño números
            sub = "Distribución de la pendiente media en porcentaje en el departamento de Nariño", 
            col.sub = "darkgreen", 
            font.sub = 4)

El histograma muestra claramente cuántos municipios tienen pendientes promedio dentro de ciertos rangos, lo que facilita la interpretación visual de los datos geográficos.

10.3. Análisis de la pendiente en los municipios de Nariño

- Estadísticas zonales para los municipios de Nariño:

Utilizando el dataset de los municipios de Nariño, se calcula la clase de pendiente predominante en cada municipio a partir de un ráster de pendiente reclasificado. Este cálculo utiliza el método de moda ( mode), que identifica la categoría de pendiente más frecuente dentro de los límites de cada municipio.

munic$class <- exactextractr::exact_extract(rc, munic, 'mode')
##   |                                                                              |                                                                      |   0%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   8%  |                                                                              |=======                                                               |   9%  |                                                                              |========                                                              |  11%  |                                                                              |=========                                                             |  12%  |                                                                              |==========                                                            |  14%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  17%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  23%  |                                                                              |==================                                                    |  25%  |                                                                              |===================                                                   |  27%  |                                                                              |====================                                                  |  28%  |                                                                              |=====================                                                 |  30%  |                                                                              |======================                                                |  31%  |                                                                              |=======================                                               |  33%  |                                                                              |========================                                              |  34%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  41%  |                                                                              |==============================                                        |  42%  |                                                                              |===============================                                       |  44%  |                                                                              |================================                                      |  45%  |                                                                              |=================================                                     |  47%  |                                                                              |==================================                                    |  48%  |                                                                              |===================================                                   |  50%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  58%  |                                                                              |==========================================                            |  59%  |                                                                              |===========================================                           |  61%  |                                                                              |============================================                          |  62%  |                                                                              |=============================================                         |  64%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |====================================================                  |  75%  |                                                                              |======================================================                |  77%  |                                                                              |=======================================================               |  78%  |                                                                              |========================================================              |  80%  |                                                                              |=========================================================             |  81%  |                                                                              |==========================================================            |  83%  |                                                                              |===========================================================           |  84%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  91%  |                                                                              |=================================================================     |  92%  |                                                                              |==================================================================    |  94%  |                                                                              |===================================================================   |  95%  |                                                                              |====================================================================  |  97%  |                                                                              |===================================================================== |  98%  |                                                                              |======================================================================| 100%

Esta información es clave para planificar actividades agrícolas en zonas montañosas y para identificar áreas donde la pendiente podría representar un riesgo de erosión o dificultar el uso del suelo.

- Histograma de clases de pendiente predominante Se genera un histograma para visualizar la distribución de las clases de pendiente predominante en los municipios de Nariño. Esto ayuda a identificar tendencias generales en el alivio del departamento.

hist(munic$class, 
     main = "Pendiente reclasificada en Nariño", 
     xlab = "Clase de pendiente", 
     ylab = "Frecuencia de municipios",
     col = "#DDA0DD", 
     border = "white",
      cex.main = 1.8, # tamaño del título
            cex.lab = 1.2, # tamaño subtítulos
            cex.axis = 1, # tamaño números
            sub = "Distribución de la clase de pendiente reclasficada en el departamento de Nariño", 
            col.sub = "darkblue", 
            font.sub = 4)

Con este análisis, se pueden diferenciar municipios de baja pendiente (zonas más planas, ideales para cultivos como el maíz) y municipios con alta pendiente (zonas andinas, donde se cultivan productos como papa o frutales).

-Transformación de coordenadas geográficas Los datos de pendiente (reclasificados y en porcentaje) se reproyectan al sistema de coordenadas geográficas ( EPSG:4326), necesario para trabajar con mapas interactivos y asegurar compatibilidad con datos globales.

(rc.geo = project(rc, "EPSG:4326"))
## class       : SpatRaster 
## dimensions  : 1698, 1593, 1  (nrow, ncol, nlyr)
## resolution  : 0.001372953, 0.001372953  (x, y)
## extent      : -79.01603, -76.82892, 0.3612498, 2.692524  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 175.1628

La pendiente en este departamento es altamente variable debido a su ubicación en la cordillera de los Andes, por lo que trabajar con un sistema de referencia estándar facilitar integrar esta información con otras regionales.

(slope.geo = project(slope_perc, "EPSG:4326"))
## class       : SpatRaster 
## dimensions  : 1698, 1593, 1  (nrow, ncol, nlyr)
## resolution  : 0.001372953, 0.001372953  (x, y)
## extent      : -79.01603, -76.82892, 0.3612498, 2.692524  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 175.1628

11. Visualización de la pendiente del terreno en Nariño

En este análisis, se genera un mapa interactivo utilizando la librería leafleten R para visualizar la pendiente del terreno en los municipios de Nariño. Este tipo de visualización es útil para comprender las características topográficas y apoyar decisiones relacionadas con el uso del suelo, riesgos naturales y planificación territorial.

11.1. Definición de la paleta de colores*

Se define una paleta de colores que representa diferentes niveles de pendiente, desde baja (verde) hasta alta (rojo). Esto permite identificar visualmente las áreas con mayor y menor inclinación del terreno:

palredgreen <- colorNumeric(c("darkseagreen3","yellow2", "orange", "brown2", "darkred"), 
                            values(slope.geo),
                            na.color = "transparent")

11.2. Configuración y creación del mapa interactivo

El mapa se centra en los municipios de Nariño, permitiendo visualizar:

  • Límites municipales : Cada municipio se resalta con un borde gris, y la opacidad de relleno se ajusta para destacar las capas subyacentes.
  • Pendiente del terreno : Representada por el raster slope.geousando la paleta definida anteriormente.
  • Información interactiva : Al hacer clic en un municipio, se desplegará un cuadro emergente con el nombre del municipio y la clase de pendiente más frecuente.

El código sería:

leaflet(munic) %>% addTiles() %>% setView(lng = -77.5, lat = 1.5, zoom = 8) %>% # Coordenadas para centrar en Nariño
    addPolygons(color = "gray", weight = 1.0, smoothFactor = 0.5,
    opacity = 0.4, fillOpacity = 0.10,
    popup = paste("Municipio: ", munic$mpio_cnmbr, "<br>",
                          "Slope class: ", munic$class, "<br>")) %>%
  addRasterImage(slope.geo, colors = palredgreen, opacity = 0.9)  %>%
  addLegend(pal = palredgreen, values = values(slope.geo),
    title = "Pendiente del terreno en Nariño (%)")

12. Visualización alternativa de la pendiente del terreno en grados

En este punto, el objetivo es visualizar la pendiente en grados, además de agregar etiquetas con el nombre de los municipios y sus valores medios de pendiente. Los valores emergentes (popup) se mantienen como en el gráfico anterior.

Código para la visualización alternativa:

leaflet(munic) %>% 
  addTiles() %>% 
  setView(lng = -77.5, lat = 1.5, zoom = 8) %>% 
  addPolygons(color = "white", weight = 1.0, smoothFactor = 0.5,
              opacity = 0.25, fillOpacity = 0.15,
              popup = paste("Municipio: ", munic$mpio_cnmbr, "<br>",
                            "Km2: ", munic$area, "<br>",
                            "Pendiente media (grados): ", round(munic$class, 2), "<br>")) %>%
  addLabelOnlyMarkers(data = centers,
                      lng = ~x, lat = ~y, label = ~paste(mpio_cnmbr, 
                                                        " - ", round(munic$class, 2), "°"),
                      labelOptions = labelOptions(noHide = TRUE, direction = 'top', 
                                                  textOnly = TRUE, textsize = "10px")) %>%
  addRasterImage(slope.geo, colors = palredgreen, opacity = 0.9)  %>%
  addLegend(pal = palredgreen, values = values(slope.geo),
            title = "Pendiente del terreno (grados)")

La visualización muestra la pendiente del terreno en grados, utilizando una escala cromática que va del amarillo (pendiente baja) al rojo oscuro (pendiente alta). Cada municipio está etiquetado con su nombre y el valor de su pendiente promedio en grados. Además, el cuadro emergente ofrece detalles adicionales, mostrando el nombre del municipio y su pendiente media para una interacción más detallada.

Esta visualización permite identificar de manera clara las áreas con mayor y menor inclinación del terreno, lo cual es útil para:

  • Análisis de riesgos : Para evaluar posibles deslizamientos o inundaciones en áreas con pendientes más pronunciadas.
  • Planificación de infraestructura : Facilita la toma de decisiones en la construcción de caminos, edificios y otras infraestructuras, adaptándose a las condiciones del terreno.
  • Selección de áreas agrícolas o ganaderas : Ayuda a identificar zonas adecuadas para cultivos o pastoreo, favoreciendo las áreas con pendientes suaves y evitando las más empinadas.

13. Visualización del aspecto del terreno

El análisis realizado sobre el aspecto del terreno en Nariño permitió visualizar las pendientes de la región utilizando un método plano. Se aplican colores vibrantes, como magenta y azul, para representar las variaciones de las pendientes.

library(raster)
## Cargando paquete requerido: sp
elevation_narino <- raster("Narino/Elevacion_Narino.tif")
nariño_extent <- extent(-78, -75, 1, 2)  # Rango de longitud y latitud para Nariño
elevation_narino_sub <- crop(elevation_narino, nariño_extent)
elevation_narino_reduced <- aggregate(elevation_narino, fact = 8) # Reducir la resolución del raster para que funcione

# Calcular el aspecto utilizando el método planar
aspect_planar <- terrain(elevation_narino_reduced, opt = "aspect", unit = "degrees", neighbors = 8)

# Definir la paleta de colores vibrantes (ejemplo: fucsia y otros tonos brillantes)
colors <- colorRampPalette(c("magenta", "red", "yellow", "orange", "green", "blue"))(255)

# Para hacer el mapa, entonces: 
leaflet() %>%
  addTiles() %>%
  setView(lng = -77.5, lat = 1.5, zoom = 8) %>%
  addRasterImage(aspect_planar, colors = colors, opacity = 0.7) %>%
  addLegend(pal = colorNumeric(c("magenta", "red", "yellow", "orange", "green", "blue"), values(aspect_planar)), values = values(aspect_planar), title = "Aspecto del terreno")

El análisis del aspecto del terreno en Nariño mostró una variabilidad significativa en las pendientes de la región. Se observaron áreas con colores como el rosa, que representaban pendientes cercanas a 0°, y zonas de azul, que indicaban pendientes pronunciadas cercanas a 350°. Esta variabilidad es clave para entender cómo la topografía influye en aspectos como la agricultura, la planificación de infraestructuras y los riesgos naturales. El mapa interactivo y la leyenda detallada permiten una visualización clara de cómo se distribuyen las pendientes a lo largo de la región.

Bibliografía

Lizarazo, I., 2025. Geomorphometric terrain attributes in R. Available at https://rpubs.com/ials2un/geomorphometric