1. Introducción

Este notebook busca ilustrar los atributos geomorfológicos del departamento del Chocó, Colombia, usando modelos de elevación digital DEM. Se utiliza el paquete Multiscale DTM de R para el procesamiento y análisis de los datos a fin de obtener variables que describan el terreno para comprender de mejor manera la variabilidad topográfica del departamento.

Modelos de Elevación Digital DEMs

Puede definirse como la representación digital del relieve de la tierra, donde a cada punto (Vectorial) o cuadrícula (Raster) le corresponde un valor de elevación. Estos modelos se utilizan para visualizar y analizar la topografía de un terreno, puede usarse en distintas disciplinas, entre ellas la agronomía, ya que permite tomar decisiones informadas según las necesidades del usuario.

2. Configuración del cuaderno

2.1 Limpieza de memoria

Se debe limpiar la memoria para mejorar el rendimiento del código, evitando la confusión de variables o archivos dentro del notebook

rm(list=ls())

2.2 Instalación y configuración de paquetes

Inicialmente, se deben instalar los siguientes paquetes, que serán usados a lo largo del código para el análisis de datos geomorfológicos

#install.packages("MultiscaleDTM")
#install.packages("exactextractr")

Adicionalmente se requiere del uso de las siguientes librerías:

# Librería que permite el procesamiento de datos de elevación
library(elevatr)
## 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.
# Manejo de datos espaciales
library(sf)
## Linking to GEOS 3.13.1, GDAL 3.11.0, PROJ 9.6.0; sf_use_s2() is TRUE
# Visualización interactiva de los datos
library(leaflet)

# Librería para la manipulación de datos ráster
library(terra)
## terra 1.8.54
# Cálculo de atributos geomorfométricos del terreno
library(MultiscaleDTM)
## Warning: package 'MultiscaleDTM' was built under R version 4.5.1
# Extracción de valores de ráster dentro de áreas específicas
library(exactextractr)

3. Datos de elevación del Chocó

A continuación, se usará la base de datos trabajada a lo largo del curso de Geomática Básica.

Inicialmente, se carga el DEM raster del Chocó obtenido de un documento anteriormente trabajado. Se lee DEM usando la librería Terra, este archivo se llamará “dem”

(dem = terra::rast("~/UNAL Valentina/GB2/p1/datos/elev_choco_z10.tif"))
## class       : SpatRaster 
## size        : 7161, 3089, 1  (nrow, ncol, nlyr)
## resolution  : 0.0006829542, 0.0006829542  (x, y)
## extent      : -78.04687, -75.93723, 3.86416, 8.754795  (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +ellps=GRS80 +no_defs 
## source      : elev_choco_z10.tif 
## name        : elev_choco_z10 
## min value   :          -4485 
## max value   :           4684

Propiedades del documento “dem”: Tiene clase SpatRaster, ideal para trabajar con datos de tipo espacial raster. Posee una tabla con un total de 7161 filas, 3089 columnas y una sola capa. Cada celda tiene una resolución de aproximadamente 0,00068 grados en (x,y), es decir, se tiene un nivel de detalle bastante alto.

El sistema de referencia espacial es geográfico, con un elipsoide GRS80.

Reducir la resolución del DEM, para evitar problemáticas en la memoria, ya que se agrupan las celdas del archivo DEM original en bloques de 2*2, promediando valores, así, se reduce la resolución y por lo tanto, la carga de la memoria del sistema:

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

Se incluye el geopackage del departamento con las limitaciones del departamento. Se usa la librería sf para esta acción

(munic <- sf::st_read("~/UNAL Valentina/GB2/p1/datos/MGN2023_MPIO_POLITICO/choco.gpkg"))
## Reading layer `choco' from data source 
##   `C:\Users\RAUL TORRES MOYA\Documents\UNAL Valentina\GB2\p1\datos\MGN2023_MPIO_POLITICO\choco.gpkg' 
##   using driver `GPKG'
## Simple feature collection with 30 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -77.88378 ymin: 3.964883 xmax: -76.00185 ymax: 8.67773
## Geodetic CRS:  MAGNA-SIRGAS

Preguardado de los archivos en un nuevo atributo

dem3 = terra::crop(dem2, munic, mask=TRUE)
## Warning: [crop] CRS do not match

#3.1 Transformación de coordenadas para calcular correctamente la geomorgfología del departamento el DEM debe tener coordenadas planas. Para el año 2020, el Instituto Geográfico Agustin Codazzi (IGAC) adopta el sistema de coordenadas plana con origen único nacional en Colombia, con código EPSG 9377. Se usa el siguiente código para la transformación de coordenadas:

(dem_plane = project(dem3, "EPSG:9377"))
## class       : SpatRaster 
## size        : 3462, 1404, 1  (nrow, ncol, nlyr)
## resolution  : 151.2992, 151.2992  (x, y)
## extent      : 4457349, 4669773, 1996619, 2520417  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        : elev_choco_z10 
## min value   :      -1084.250 
## max value   :       4306.362

Como se observa anteriormente, la transformación de coordenadas fue exitosa.

Se transforma el objeto a un vectorial, con el siguiente código:

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

4.Cálculo de los atributos geomorfométricos.

Para calcular el aspecto y la pendiente, se debe usar la función SlpAsp de la librería MultiscaleDTM. Inicialmente, se define el parámetro w como el tamaño de la ventana usada para calcular los atributos. Para este caso, w=c(3,3), es decir, una ventana con celdas de 3*3. Continuando con e código, el parámetro method define eñ tipo de vecindad utilizado para los cálculos, donde “queen” es un tipo de vecindad que incluye aquellos datos que pueden llamarse vecinos directos o intermedios.

(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 
## size        : 3462, 1404, 2  (nrow, ncol, nlyr)
## resolution  : 151.2992, 151.2992  (x, y)
## extent      : 4457349, 4669773, 1996619, 2520417  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## names       :    slope, aspect 
## min values  :  0.00000,      0 
## max values  : 84.12251,    360

Se deben separar los resultados del código anterior en dos capas: Capa 1: Capa de la pendiente.

(slope = subset(slp_asp,1))
## class       : SpatRaster 
## size        : 3462, 1404, 1  (nrow, ncol, nlyr)
## resolution  : 151.2992, 151.2992  (x, y)
## extent      : 4457349, 4669773, 1996619, 2520417  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :    slope 
## min value   :  0.00000 
## max value   : 84.12251

La capa de pendiente, puede visualizarse a continuación:

terra::hist(slope, main= "Pendiente del Chocó", xlab = "Pendiente (en grados)")
## Warning: [hist] a sample of 21% of the cells was used (of which 56% was NA)

Capa 2: Orientación

(aspect = subset(slp_asp,2))
## class       : SpatRaster 
## size        : 3462, 1404, 1  (nrow, ncol, nlyr)
## resolution  : 151.2992, 151.2992  (x, y)
## extent      : 4457349, 4669773, 1996619, 2520417  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        : aspect 
## min value   :      0 
## max value   :    360

La capa orientación, puede visualizarse a continuación:

terra::hist(aspect, main= "Aspecto del Chocó", xlab= "Aspecto(en grados)")
## Warning: [hist] a sample of 21% of the cells was used (of which 56% was NA)

Se debe convertir la pendiente de grados a porcentaje:

(slope_perc = tan(slope* (pi/180))*100)
## class       : SpatRaster 
## size        : 3462, 1404, 1  (nrow, ncol, nlyr)
## resolution  : 151.2992, 151.2992  (x, y)
## extent      : 4457349, 4669773, 1996619, 2520417  (xmin, xmax, ymin, ymax)
## coord. ref. : MAGNA-SIRGAS 2018 / Origen-Nacional (EPSG:9377) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 971.4124
#gráfica con la nueva conversión

terra:: hist(slope_perc, main= "Pendiente del Chocó", xlab= "% Pendiente")
## Warning: [hist] a sample of 21% of the cells was used (of which 56% was NA)

5.Cálculo de estadísticas zonales en el Chocó

Inicialmente, para analizar las pendientes en el departamento, se utiliza la clasificación diseñada por el IGAC con fines agrológicos, que puede observarse a continuación:

Esta clasificación divide los valores de pendiente en diferentes rangos, representando la dificultad del manejo del terreno Para realizar la computación de zonas estáticas parala transformación de los porcentajes continuos de la pendiente a intervalos categorizados se utiliza la siguiente matriz, a fin de obtener un nuevo ráster reclasificado que permite identificar las áreas con pendientes similares y categorizarlas según su inclinación.

#Reclasificación de la pendiente 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)

Cálculo de las estadísticas zonales usando exactextractr

(munic$mean_slope <- exactextractr::exact_extract(slope_perc, munic, 'mean'))
## Warning in .local(x, y, ...): Polygons transformed to raster CRS (EPSG:9377)
##   |                                                                              |                                                                      |   0%  |                                                                              |==                                                                    |   3%  |                                                                              |=====                                                                 |   7%  |                                                                              |=======                                                               |  10%  |                                                                              |=========                                                             |  13%  |                                                                              |============                                                          |  17%  |                                                                              |==============                                                        |  20%  |                                                                              |================                                                      |  23%  |                                                                              |===================                                                   |  27%  |                                                                              |=====================                                                 |  30%  |                                                                              |=======================                                               |  33%  |                                                                              |==========================                                            |  37%  |                                                                              |============================                                          |  40%  |                                                                              |==============================                                        |  43%  |                                                                              |=================================                                     |  47%  |                                                                              |===================================                                   |  50%  |                                                                              |=====================================                                 |  53%  |                                                                              |========================================                              |  57%  |                                                                              |==========================================                            |  60%  |                                                                              |============================================                          |  63%  |                                                                              |===============================================                       |  67%  |                                                                              |=================================================                     |  70%  |                                                                              |===================================================                   |  73%  |                                                                              |======================================================                |  77%  |                                                                              |========================================================              |  80%  |                                                                              |==========================================================            |  83%  |                                                                              |=============================================================         |  87%  |                                                                              |===============================================================       |  90%  |                                                                              |=================================================================     |  93%  |                                                                              |====================================================================  |  97%  |                                                                              |======================================================================| 100%
##  [1] 15.020624 12.928195  2.764322 30.254103 11.365789 33.327873 15.111613
##  [8]  8.296690 14.929053  5.924431 15.434294 10.987267 19.116861  8.273375
## [15]  4.182716  6.839398  4.598071  2.769994 22.241301  5.588526 13.625473
## [22]  6.729395 11.251538  4.060682  3.106334 16.478111 13.420687 12.449834
## [29] 38.972328 25.426815

Visualización gráfica mediante histograma de la pendiente media en el Chocó

hist(munic$mean_slope, main= "Pendiente media del Chocó", xlab="% Pendiente")

Pendiente predominante de los municipios en el Chocó

(munic$class <- exactextractr::exact_extract(rc, munic, 'mode'))
## Warning in .local(x, y, ...): Polygons transformed to raster CRS (EPSG:9377)
##   |                                                                              |                                                                      |   0%  |                                                                              |==                                                                    |   3%  |                                                                              |=====                                                                 |   7%  |                                                                              |=======                                                               |  10%  |                                                                              |=========                                                             |  13%  |                                                                              |============                                                          |  17%  |                                                                              |==============                                                        |  20%  |                                                                              |================                                                      |  23%  |                                                                              |===================                                                   |  27%  |                                                                              |=====================                                                 |  30%  |                                                                              |=======================                                               |  33%  |                                                                              |==========================                                            |  37%  |                                                                              |============================                                          |  40%  |                                                                              |==============================                                        |  43%  |                                                                              |=================================                                     |  47%  |                                                                              |===================================                                   |  50%  |                                                                              |=====================================                                 |  53%  |                                                                              |========================================                              |  57%  |                                                                              |==========================================                            |  60%  |                                                                              |============================================                          |  63%  |                                                                              |===============================================                       |  67%  |                                                                              |=================================================                     |  70%  |                                                                              |===================================================                   |  73%  |                                                                              |======================================================                |  77%  |                                                                              |========================================================              |  80%  |                                                                              |==========================================================            |  83%  |                                                                              |=============================================================         |  87%  |                                                                              |===============================================================       |  90%  |                                                                              |=================================================================     |  93%  |                                                                              |====================================================================  |  97%  |                                                                              |======================================================================| 100%
##  [1] 4 4 1 5 4 5 4 1 4 1 4 1 4 1 1 2 2 1 4 1 4 1 1 1 1 4 4 1 5 5
hist(munic$class, main = "Pendiente reclasificada del Chocó", xlab="Pendiente (Y su categoría)")

Transformación de la pendiente a coordenadas geográficas

(rc.geo= project(rc,"EPSG:4326"))
## class       : SpatRaster 
## size        : 3472, 1431, 1  (nrow, ncol, nlyr)
## resolution  : 0.001365887, 0.001365887  (x, y)
## extent      : -77.92888, -75.9743, 3.95545, 8.697809  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 918.6257

Luego de obtener las coordenadas geográficas, estas se convierten a porcentaje de pendiente

(slope.geo = project(slope_perc, "EPSG:4326"))
## class       : SpatRaster 
## size        : 3472, 1431, 1  (nrow, ncol, nlyr)
## resolution  : 0.001365887, 0.001365887  (x, y)
## extent      : -77.92888, -75.9743, 3.95545, 8.697809  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source(s)   : memory
## name        :    slope 
## min value   :   0.0000 
## max value   : 918.6257

6.Representación gráfica de la pendiente del terreno

Al querer graficar los procedimientos hechos anteriormente, se genera un “mapa” interactivo, con la intención de visualizar la pendiente de los municipios en el Chocó. Es bastante útil ya que permite comprender las características topográficas de mejor manera y generar un material esencial para tomar decisiones relacionadas con el uso de los suelos y la planificación de actividades en el territorio.

Para la configuración del mapa interactivo, inicialmente se definen los colores para los diferentes niveles de la pendiente, usando el más bajo como aguamarina, y el más alto como rojo oscuro. Se identifican los límites municipales con un borde de coor gris, y la opacidad del relleno es de un 40%, además, al interactuar el mapa haciendo clic en algún municipio, se desplegará el cuadro emergente con el nombre del municipio y la clase de pendiente más frecuente.

palredgreen <- colorNumeric(c("aquamarine","chartreuse","darkseagreen3","yellow2", "orange", "brown2","chocolate", "darkred"), values(slope.geo),
  na.color = "transparent")
#Mapa interactivo del Chocó 
leaflet(munic) %>% addTiles() %>% setView( -75.9743,8.697809 , 9) %>% 
    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 = "Pendiente del terreno en el Chocó (%)")
## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'

7. Visualización alternativa de la pendiente en grados.

Se propone visualizar la pendiente del terreno en grados, junto con las etiquetas de cada municipio con el siguiente código, manteniendo las ventanas emergentes así: Incialmente se cambia de nuevo el sistema de coordenadas para que no se generen errores en la geometría

library(sf)
library(terra)
library(leaflet)
print(st_crs(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]]
if (st_crs(munic)$epsg != 4326) {
  munic <- st_transform(munic, crs = 4326)
}
print(terra::crs(slope.geo))
## [1] "GEOGCRS[\"WGS 84\",\n    ENSEMBLE[\"World Geodetic System 1984 ensemble\",\n        MEMBER[\"World Geodetic System 1984 (Transit)\"],\n        MEMBER[\"World Geodetic System 1984 (G730)\"],\n        MEMBER[\"World Geodetic System 1984 (G873)\"],\n        MEMBER[\"World Geodetic System 1984 (G1150)\"],\n        MEMBER[\"World Geodetic System 1984 (G1674)\"],\n        MEMBER[\"World Geodetic System 1984 (G1762)\"],\n        MEMBER[\"World Geodetic System 1984 (G2139)\"],\n        MEMBER[\"World Geodetic System 1984 (G2296)\"],\n        ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n            LENGTHUNIT[\"metre\",1]],\n        ENSEMBLEACCURACY[2.0]],\n    PRIMEM[\"Greenwich\",0,\n        ANGLEUNIT[\"degree\",0.0174532925199433]],\n    CS[ellipsoidal,2],\n        AXIS[\"geodetic latitude (Lat)\",north,\n            ORDER[1],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n        AXIS[\"geodetic longitude (Lon)\",east,\n            ORDER[2],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n    USAGE[\n        SCOPE[\"Horizontal component of 3D system.\"],\n        AREA[\"World.\"],\n        BBOX[-90,-180,90,180]],\n    ID[\"EPSG\",4326]]"
if (terra::crs(slope.geo, describe = TRUE)$code != 4326) { names(slope.geo) <- "slope"
 slope.geo <- terra::project(slope.geo, "EPSG:4326")
}

Calcular los centroides de los municipios luego de la transformación de las coordenadas:

centers <- st_centroid(munic)
## Warning: st_centroid assumes attributes are constant over geometries

Representación de la visualización alternativa de la pendiente en grados.

palredgreen <- colorNumeric(palette = c("aquamarine","chartreuse","darkseagreen3","yellow2", "orange", "brown2","chocolate", "darkred"),
domain = values(slope.geo, na.rm = TRUE))
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 del chocó (grados): ", round(munic$class, 2), "<br>")) %>%
  addLabelOnlyMarkers(data = centers,
                      lng = ~st_coordinates(centers)[,1], lat = ~st_coordinates(centers)[,2],
                      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, project = FALSE) %>%
  addLegend(pal = palredgreen, values = values(slope.geo),
            title = "Pendiente del Chocó (grados)")

Visualizing terrain aspect

Bibliografía

sessionInfo()
## R version 4.5.0 (2025-04-11 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26100)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8  LC_CTYPE=Spanish_Colombia.utf8   
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C                     
## [5] LC_TIME=Spanish_Colombia.utf8    
## 
## time zone: America/Bogota
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] exactextractr_0.10.0 MultiscaleDTM_1.0    terra_1.8-54        
## [4] leaflet_2.2.2        sf_1.0-21            elevatr_0.99.0      
## 
## loaded via a namespace (and not attached):
##  [1] s2_1.1.9           sass_0.4.10        generics_0.1.4     class_7.3-23      
##  [5] KernSmooth_2.23-26 lattice_0.22-6     digest_0.6.37      magrittr_2.0.3    
##  [9] rgl_1.3.18         RColorBrewer_1.1-3 evaluate_1.0.3     grid_4.5.0        
## [13] fastmap_1.2.0      jsonlite_2.0.0     e1071_1.7-16       DBI_1.2.3         
## [17] promises_1.3.3     purrr_1.0.4        scales_1.4.0       crosstalk_1.2.1   
## [21] codetools_0.2-20   jquerylib_0.1.4    cli_3.6.5          shiny_1.10.0      
## [25] rlang_1.1.6        units_0.8-7        base64enc_0.1-3    cachem_1.1.0      
## [29] yaml_2.3.10        raster_3.6-32      tools_4.5.0        dplyr_1.1.4       
## [33] httpuv_1.6.16      png_0.1-8          vctrs_0.6.5        R6_2.6.1          
## [37] mime_0.13          proxy_0.4-27       lifecycle_1.0.4    classInt_0.4-11   
## [41] htmlwidgets_1.6.4  pkgconfig_2.0.3    progressr_0.15.1   bslib_0.9.0       
## [45] pillar_1.10.2      later_1.4.2        glue_1.8.0         Rcpp_1.0.14       
## [49] tidyselect_1.2.1   xfun_0.52          tibble_3.2.1       rstudioapi_0.17.1 
## [53] knitr_1.50         farver_2.1.2       xtable_1.8-4       htmltools_0.5.8.1 
## [57] rmarkdown_2.29     wk_0.9.4           compiler_4.5.0     sp_2.2-0