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.
La siguiente instrucción limpia la memoria:
rm(list=ls())
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
})
El paquete elevatr permite obtener datos de elevación desde diferentes servicios, generando resultados en formato RasterLayer.
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.
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)
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
(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
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:
El resultado se guarda como archivo:
writeRaster(elevation, "Narino/Elevación_Nariño.tif", overwrite=TRUE)
(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
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")
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
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)")