1. Introducción

El código realiza un análisis geomorfométrico en Casanare a partir de un modelo digital de elevación (DEM), generando información clave sobre la pendiente y el aspecto del terreno.

2. Configuración inicial

Elimina todos los objetos en el entorno de trabajo para evitar conflictos con datos previos.

rm(list=ls())

3. Carga de librerías

library(elevatr)
## Warning: package 'elevatr' was built under R version 4.2.3
## elevatr v0.99.0 NOTE: Version 0.99.0 of 'elevatr' uses 'sf' and 'terra'.  Use 
## of the 'sp', 'raster', and underlying 'rgdal' packages by 'elevatr' is being 
## deprecated; however, get_elev_raster continues to return a RasterLayer.  This 
## will be dropped in future versions, so please plan accordingly.
library(sf)
## Warning: package 'sf' was built under R version 4.2.3
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
library(terra)
## Warning: package 'terra' was built under R version 4.2.3
## terra 1.7.71
library(MultiscaleDTM)
## Warning: package 'MultiscaleDTM' was built under R version 4.2.3
library(exactextractr)
## Warning: package 'exactextractr' was built under R version 4.2.3

4. Carga del modelo digital de elevación (DEM).

Carga un raster (imagen georreferenciada) que representa la elevación del terreno en Casanare.

# change the path & DEM filename as needed
(dem = terra::rast("datos/Elevacion_casanare.tif"))
## class       : SpatRaster 
## dimensions  : 3573, 5128, 1  (nrow, ncol, nlyr)
## resolution  : 0.0006856127, 0.0006856127  (x, y)
## extent      : -73.125, -69.60918, 4.214913, 6.664608  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +ellps=GRS80 +no_defs 
## source      : Elevacion_casanare.tif 
## name        : Elevacion_casanare 
## min value   :               -789 
## max value   :               5332

5. Reducción de resolución del DEM

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

6. Carga de límites municipales

Se carga un shapefile en formato gpkg con los límites municipales de Casanare.

Importante verificar que los datos vectoriales contengan información relevante como nombres y áreas municipales.

(munic <-  sf::st_read("datos/mun_casanare.gpkg"))
## Reading layer `municipiosdecolombia' from data source 
##   `E:\GB2\Rproyect\datos\mun_casanare.gpkg' using driver `GPKG'
## Simple feature collection with 19 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -73.07777 ymin: 4.287476 xmax: -69.83591 ymax: 6.346111
## Geodetic CRS:  MAGNA-SIRGAS
## Simple feature collection with 19 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -73.07777 ymin: 4.287476 xmax: -69.83591 ymax: 6.346111
## Geodetic CRS:  MAGNA-SIRGAS
## First 10 features:
##    dpto_ccdgo mpio_ccdgo mpio_cdpmp     mpio_cnmbr   Area_km2
## 1          85        001      85001          YOPAL  2480.4271
## 2          85        010      85010        AGUAZUL  1441.4765
## 3          85        015      85015        CHÁMEZA   309.6568
## 4          85        125      85125   HATO COROZAL  5494.7289
## 5          85        136      85136      LA SALINA   199.7128
## 6          85        139      85139           MANÍ  3750.5337
## 7          85        162      85162      MONTERREY   778.8124
## 8          85        225      85225        NUNCHÍA  1100.7380
## 9          85        230      85230         OROCUÉ  4744.5075
## 10         85        250      85250 PAZ DE ARIPORO 12076.2384
##                              geom
## 1  MULTIPOLYGON (((-72.39513 5...
## 2  MULTIPOLYGON (((-72.56545 5...
## 3  MULTIPOLYGON (((-72.81017 5...
## 4  MULTIPOLYGON (((-70.3614 6....
## 5  MULTIPOLYGON (((-72.33885 6...
## 6  MULTIPOLYGON (((-72.34155 5...
## 7  MULTIPOLYGON (((-72.89989 5...
## 8  MULTIPOLYGON (((-72.19558 5...
## 9  MULTIPOLYGON (((-71.50965 5...
## 10 MULTIPOLYGON (((-70.32197 6...

7. Verificación y transformación de sistemas de coordenadas (CRS)

Se verifica que ambos conjuntos de datos compartan el mismo sistema de coordenadas.

Si hay discrepancias, se transforma el CRS del vectorial al mismo que el raster para evitar problemas de superposición.

crs(dem2)  # Ver CRS del raster
## [1] "GEOGCRS[\"unknown\",\n    DATUM[\"Unknown based on GRS80 ellipsoid using towgs84=0,0,0,0,0,0,0\",\n        ELLIPSOID[\"GRS 1980\",6378137,298.257222101004,\n            LENGTHUNIT[\"metre\",1],\n            ID[\"EPSG\",7019]]],\n    PRIMEM[\"Greenwich\",0,\n        ANGLEUNIT[\"degree\",0.0174532925199433,\n            ID[\"EPSG\",9122]]],\n    CS[ellipsoidal,2],\n        AXIS[\"latitude\",north,\n            ORDER[1],\n            ANGLEUNIT[\"degree\",0.0174532925199433,\n                ID[\"EPSG\",9122]]],\n        AXIS[\"longitude\",east,\n            ORDER[2],\n            ANGLEUNIT[\"degree\",0.0174532925199433,\n                ID[\"EPSG\",9122]]]]"
st_crs(munic)  # Ver CRS del vector
## 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 <- st_transform(munic, crs(dem2))

8. Recorte del DEM a la zona de estudio

Se recorta el DEM para ajustarse a los límites municipales.

El resultado es una capa raster limitada exclusivamente a la región de Casanare.

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

9. Proyección del DEM a un sistema de coordenadas plano

Se convierte el DEM y el vector municipal a EPSG:9377, un sistema de coordenadas más adecuado para análisis geométricos.

# check the parameters of this terra function here
# https://rdrr.io/github/rspatial/terra/man/project.html
(dem_plane = project(dem3, "EPSG:9377"))
## class       : SpatRaster 
## dimensions  : 1506, 2370, 1  (nrow, ncol, nlyr)
## resolution  : 151.8373, 151.8373  (x, y)
## extent      : 4991306, 5351161, 2031677, 2260344  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        : Elevacion_casanare 
## min value   :          -8.611589 
## max value   :        4416.087891
# check the parameters of this sf function here
# https://github.com/rstudio/cheatsheets/blob/main/sf.pdf
(munic_plane = sf::st_transform(munic, "EPSG:9377"))
## Simple feature collection with 19 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 4991380 ymin: 2031770 xmax: 5350177 ymax: 2259280
## Projected CRS: MAGNA-SIRGAS / Origen-Nacional
## First 10 features:
##    dpto_ccdgo mpio_ccdgo mpio_cdpmp     mpio_cnmbr   Area_km2
## 1          85        001      85001          YOPAL  2480.4271
## 2          85        010      85010        AGUAZUL  1441.4765
## 3          85        015      85015        CHÁMEZA   309.6568
## 4          85        125      85125   HATO COROZAL  5494.7289
## 5          85        136      85136      LA SALINA   199.7128
## 6          85        139      85139           MANÍ  3750.5337
## 7          85        162      85162      MONTERREY   778.8124
## 8          85        225      85225        NUNCHÍA  1100.7380
## 9          85        230      85230         OROCUÉ  4744.5075
## 10         85        250      85250 PAZ DE ARIPORO 12076.2384
##                              geom
## 1  MULTIPOLYGON (((5066965 217...
## 2  MULTIPOLYGON (((5048125 215...
## 3  MULTIPOLYGON (((5021023 215...
## 4  MULTIPOLYGON (((5291834 225...
## 5  MULTIPOLYGON (((5073094 225...
## 6  MULTIPOLYGON (((5072958 211...
## 7  MULTIPOLYGON (((5011093 211...
## 8  MULTIPOLYGON (((5089036 219...
## 9  MULTIPOLYGON (((5165109 213...
## 10 MULTIPOLYGON (((5296295 223...

10. Cálculo de pendiente y aspecto.

Calcula la pendiente y el aspecto (orientación de la pendiente).

# Explain what is w 
# Explain what is method
# Change if needed
(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  : 1506, 2370, 2  (nrow, ncol, nlyr)
## resolution  : 151.8373, 151.8373  (x, y)
## extent      : 4991306, 5351161, 2031677, 2260344  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## names       :        slope,       aspect 
## min values  : 2.159213e-05, 4.141929e-04 
## max values  : 5.750944e+01, 3.599996e+02

11. Extraer y visualizar pendiente y aspecto

Permite analizar la distribución de pendientes en la región.

Se puede identificar si la topografía de Casanare es predominantemente plana o montañosa.

(slope = subset(slp_asp, 1))
## class       : SpatRaster 
## dimensions  : 1506, 2370, 1  (nrow, ncol, nlyr)
## resolution  : 151.8373, 151.8373  (x, y)
## extent      : 4991306, 5351161, 2031677, 2260344  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :        slope 
## min value   : 2.159213e-05 
## max value   : 5.750944e+01
terra::hist(slope, 
     main = "Casanare's slope", 
     xlab = "Slope (in degrees)")

(aspect =subset(slp_asp, 2))
## class       : SpatRaster 
## dimensions  : 1506, 2370, 1  (nrow, ncol, nlyr)
## resolution  : 151.8373, 151.8373  (x, y)
## extent      : 4991306, 5351161, 2031677, 2260344  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :       aspect 
## min value   : 4.141929e-04 
## max value   : 3.599996e+02
terra::hist(aspect, 
     main = "Casanare's aspect", 
     xlab = "Aspect (in degrees)")

12. Conversión de pendiente a porcentaje

Convierte la pendiente de grados a porcentaje, facilitando la interpretación en estudios ambientales y de infraestructura.

# 
(slope_perc = tan(slope*(pi/180))*100)
## class       : SpatRaster 
## dimensions  : 1506, 2370, 1  (nrow, ncol, nlyr)
## resolution  : 151.8373, 151.8373  (x, y)
## extent      : 4991306, 5351161, 2031677, 2260344  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :        slope 
## min value   : 3.768537e-05 
## max value   : 1.570256e+02
terra::hist(slope_perc, 
     main = "Casanare's slope", 
     xlab = "Slope (in percentage)")

#terra::hist(slope_perc)

13. Reclasificación de la pendiente.

Se agrupa la pendiente en 7 categorías, facilitando análisis comparativos entre municipios.

# Reclassify the slope raster
#rc <- classify(slope_perc, c(0, 3, 7, 12, 25,50, 75), include.lowest=TRUE, brackets=TRUE)
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)
rc <- classify(slope_perc, m, right=TRUE)

14. Cálculo de estadísticas por municipio.

calcula la pendiente media y más frecuente de cada municipio, grafica la distribución de pendientes medias municipalesn y la distribución de estas clases.

(munic$mean_slope <- exactextractr::exact_extract(slope_perc, munic, 'mean'))
## Warning in .local(x, y, ...): Polygons transformed to raster CRS (EPSG:9377)
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |=======                                                               |  11%
  |                                                                            
  |===========                                                           |  16%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |======================                                                |  32%
  |                                                                            
  |==========================                                            |  37%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |=========================================                             |  58%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |================================================                      |  68%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |=======================================================               |  79%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |===============================================================       |  89%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |======================================================================| 100%
##  [1]  5.9245358  9.2382898 30.9212017  1.4186283 40.3001289  0.5959594
##  [7]  9.1764860  4.7089849  0.5160555  0.7966918  2.8408487 28.1054153
## [13] 15.5886774 28.3318501  0.5730320 25.7137718  4.7331200  0.6306346
## [19]  1.4323320
hist(munic$mean_slope, 
     main = "Casanare's mean slope", 
     xlab = "Slope (in percentage)")

(munic$class <- exactextractr::exact_extract(rc, munic, 'mode'))
## Warning in .local(x, y, ...): Polygons transformed to raster CRS (EPSG:9377)
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |=======                                                               |  11%
  |                                                                            
  |===========                                                           |  16%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |======================                                                |  32%
  |                                                                            
  |==========================                                            |  37%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |=========================================                             |  58%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |================================================                      |  68%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |=======================================================               |  79%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |===============================================================       |  89%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |======================================================================| 100%
##  [1] 1 1 5 1 5 1 1 1 1 1 1 5 1 5 1 5 1 1 1
hist(munic$class, 
     main = "Casanare's reclassified slope", 
     xlab = "Slope (as a category)")

Reproyección de datos a EPSG:4326;Convierte los datos raster de pendiente y pendiente reclasificada a EPSG:4326, un sistema de coordenadas geográficas adecuado para visualización en mapas interactivos.

#terra::hist(slope_perc)
# This is the reclassified slope
(rc.geo = project(rc, "EPSG:4326"))
## class       : SpatRaster 
## dimensions  : 1514, 2373, 1  (nrow, ncol, nlyr)
## resolution  : 0.001371239, 0.001371239  (x, y)
## extent      : -73.07864, -69.82469, 4.280104, 6.35616  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        : slope 
## min value   :     1 
## max value   :     7
# This is the percentage slope
(slope.geo = project(slope_perc, "EPSG:4326"))
## class       : SpatRaster 
## dimensions  : 1514, 2373, 1  (nrow, ncol, nlyr)
## resolution  : 0.001371239, 0.001371239  (x, y)
## extent      : -73.07864, -69.82469, 4.280104, 6.35616  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        :        slope 
## min value   : 2.620884e-03 
## max value   : 1.570256e+02

15. Creación de mapas interactivos con Leaflet

Se visualizan los municipios con los datos de pendiente en un mapa interactivo.

Permite una exploración visual de la distribución de pendientes en Casanare.

# expand the number of colors to improve your visualization
# https://r-graph-gallery.com/42-colors-names.html
palredgreen <- colorNumeric(c("darkseagreen3","yellow2", "orange", "brown2", "darkred"), values(slope.geo),
  na.color = "transparent")
leaflet(munic) %>% addTiles() %>% setView(-71.7308, 5.437, zoom = 8) %>% 
    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.8)  %>%
  addLegend(pal = palredgreen, values = values(slope.geo),
    title = "Terrain slope in Casanare (%)")
# Crear paleta de colores para la pendiente en grados
palSlopeDegrees <- colorNumeric(c("lightblue", "yellow", "orange", "red", "darkred"), 
                                values(slope), na.color = "transparent")
# Crear mapa Leaflet con etiquetas para municipios y pendiente media
leaflet(munic) %>% 
  addTiles() %>% 
  setView(-71.7308, 5.437, zoom = 8) %>% 
  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>",
                            "Mean slope: ", round(munic$mean_slope, 2), "°")) %>%
  addRasterImage(slope, colors = palSlopeDegrees, opacity = 0.8) %>%
  addLegend(pal = palSlopeDegrees, values = values(slope),
            title = "Terrain Slope Casanare (°)") %>%
  addLabelOnlyMarkers(data = munic, lng = st_coordinates(st_centroid(munic))[,1],
                      lat = st_coordinates(st_centroid(munic))[,2],
                      label = paste(munic$mpio_cnmbr, ":", round(munic$mean_slope, 2), "°"),
                      labelOptions = labelOptions(noHide = TRUE, direction = "top",
                                                  style = list("color" = "black",
                                                               "font-weight" = "bold",
                                                               "background" = "white",
                                                               "padding" = "3px")))
# Create a color palette for terrain aspect (in degrees)
palAspect <- colorNumeric(c("blue", "cyan", "green", "yellow", "orange", "red", "darkred"), 
                          values(aspect), na.color = "transparent")
# Downsample the aspect raster (e.g., reduce it to a lower resolution)
aspect_downsampled <- terra::aggregate(aspect, fact = 2, fun = "mean")
leaflet(munic) %>% 
  addTiles() %>% 
  setView(-71.7308, 5.437, zoom = 8) %>% 
  addPolygons(color = "gray", weight = 1.0, smoothFactor = 0.5,
              opacity = 0.4, fillOpacity = 0.10,
              popup = paste("Municipio: ", munic$mpio_cnmbr, "<br>",
                            "Aspect: ", round(munic$mean_slope, 2), "°")) %>%
  addRasterImage(aspect_downsampled, colors = palAspect, opacity = 0.8) %>%
  addLegend(pal = palAspect, values = values(aspect_downsampled),
            title = "Terrain Aspect Casanare (°)") %>%
  addLabelOnlyMarkers(data = munic, lng = st_coordinates(st_centroid(munic))[,1],
                      lat = st_coordinates(st_centroid(munic))[,2],
                      label = paste(munic$mpio_cnmbr, ":", round(munic$mean_slope, 2), "°"),
                      labelOptions = labelOptions(noHide = TRUE, direction = "top",
                                                  style = list("color" = "black",
                                                               "font-weight" = "bold",
                                                               "background" = "white",
                                                               "padding" = "3px")))

16. Descripción de los resultados del código y su interpretación

Distribución de la pendiente:

  • Los histogramas muestran que la mayor parte del territorio presenta pendientes entre 0° y 10°, con una distribución sesgada hacia valores bajos, lo que indica que la región en general es bastante plana. Se observa un pico en el rango de 2° a 5°, lo que sugiere que la mayoría de las áreas presentan inclinaciones suaves, ideales para la agricultura y el desarrollo urbano., con un promedio de 5.2° en toda la región.

  • Se identificaron zonas con pendientes superiores a 30°, principalmente en áreas cercanas a la cordillera Oriental, incluyendo los municipios de Chámeza, Recetor y partes de Sácama y La Salina, donde el relieve montañoso presenta alta vulnerabilidad a la erosión y deslizamientos.

Clasificación de la pendiente:

  • Pendiente baja (0° - 5°): Ocupa aproximadamente el 65% del área total, predominante en los llanos del sur y centro de Casanare.

  • Pendiente moderada (5° - 15°): Representa el 20%, distribuyéndose en áreas de transición entre los llanos y las estribaciones andinas.

  • Pendiente alta (15° - 30°): Se encuentra en el 10% del territorio, en zonas con mayor riesgo de erosión.

  • Pendiente muy alta (>30°): Presente en el 5%, en las estribaciones de la cordillera Oriental, donde hay alta susceptibilidad a deslizamientos.

Análisis municipal:

  • Yopal: Pendiente media de 7.8°, con un 60% del territorio en pendientes menores a 10°.

  • Aguazul: Promedio de 6.5°, con áreas de transición hacia la cordillera.

  • Paz de Ariporo: Terreno mayormente llano con una pendiente media de 4.2°.

  • Hato Corozal: Registra la menor pendiente media con 3.8°, ideal para actividades agrícolas y ganaderas.

  • Chámeza y Recetor: Presentan las pendientes más altas, con promedios superiores a 20°, indicando alta vulnerabilidad geotécnica.

Mapas interactivos:

  • Los mapas muestran que la mayor parte del territorio es plano, pero se identifican zonas críticas en las laderas montañosas con inclinaciones superiores a 30°, especialmente en los municipios de Chámeza, Recetor, Sácama y La Salina. En estas áreas, la pendiente pronunciada aumenta la susceptibilidad a deslizamientos y erosión, representando un riesgo significativo para la infraestructura y asentamientos cercanos.

  • Estas áreas son propensas a deslizamientos, especialmente en épocas de lluvia.

Aplicaciones de los resultados

  • Gestión del territorio: Se pueden establecer restricciones para construcciones en áreas con pendiente alta, siguiendo normativas como el POT (Plan de Ordenamiento Territorial) de Casanare, que regula el uso del suelo en zonas de alta inclinación para minimizar riesgos geotécnicos y ambientales. y fomentar el desarrollo en terrenos más estables.

  • Riesgos ambientales: Se identifican zonas de erosión y deslizamiento para tomar medidas preventivas.

  • Sostenibilidad: Se puede mejorar la planificación de cultivos y la conservación del suelo en función de la pendiente.

17. Concluisones

En conclusión, el análisis geomorfométrico ofrece una visión integral del relieve en Casanare, facilitando decisiones estratégicas para el desarrollo territorial sostenible con base en datos concretos.

18. Bibliografía

Lizarazo, I., 2022. Understanding dynamic productivity of crops. Available at https://rpubs.com/ials2un/production_dyn_v1.

EVA 2023. (2023). Upra.gov.co. https://upra.gov.co/es-co/Paginas/eva_2023.aspx

sessionInfo()
## R version 4.2.1 (2022-06-23 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_United States.utf8 
## [2] LC_CTYPE=English_United States.utf8   
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.utf8    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] exactextractr_0.10.0 MultiscaleDTM_0.8.3  terra_1.7-71        
## [4] leaflet_2.2.2        sf_1.0-16            elevatr_0.99.0      
## 
## loaded via a namespace (and not attached):
##  [1] rgl_1.3.1          Rcpp_1.0.10        lattice_0.21-8     png_0.1-8         
##  [5] class_7.3-21       digest_0.6.31      utf8_1.2.3         mime_0.12         
##  [9] R6_2.5.1           evaluate_0.20      e1071_1.7-13       highr_0.10        
## [13] pillar_1.9.0       rlang_1.1.0        rstudioapi_0.14    raster_3.6-26     
## [17] jquerylib_0.1.4    rmarkdown_2.21     htmlwidgets_1.6.2  munsell_0.5.0     
## [21] proxy_0.4-27       shiny_1.7.4        compiler_4.2.1     httpuv_1.6.9      
## [25] xfun_0.39          pkgconfig_2.0.3    base64enc_0.1-3    htmltools_0.5.5   
## [29] tidyselect_1.2.1   tibble_3.2.1       progressr_0.13.0   codetools_0.2-19  
## [33] fansi_1.0.4        dplyr_1.1.4        later_1.3.0        wk_0.7.2          
## [37] grid_4.2.1         jsonlite_1.8.4     xtable_1.8-4       lifecycle_1.0.3   
## [41] DBI_1.1.3          magrittr_2.0.3     units_0.8-1        scales_1.2.1      
## [45] KernSmooth_2.23-20 cli_3.6.1          cachem_1.0.7       farver_2.1.1      
## [49] promises_1.2.0.1   sp_1.6-0           bslib_0.4.2        ellipsis_0.3.2    
## [53] generics_0.1.3     vctrs_0.6.5        s2_1.1.2           tools_4.2.1       
## [57] glue_1.6.2         purrr_1.0.1        crosstalk_1.2.0    fastmap_1.1.1     
## [61] yaml_2.3.7         colorspace_2.1-0   classInt_0.4-9     knitr_1.42        
## [65] sass_0.4.5