Este es un cuaderno de R en el cual se ilustra como leer un archivo de texto con coordenadas geográficas, convertirlas en objetos con características espaciales, y crear un mapa. Está realizado por un estudiante de geomática básica de la Universidad Nacional de Colombia, como actividad introductoria a los cuadernos de . Es fundamental instalar las librerías “c(”tidyverse“,”sf“)”, y llamarlas
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(tidyverse)
## -- Attaching packages ------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.2 v dplyr 1.0.0
## v tidyr 1.1.0 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts ---------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## seleccionar y observar el directorio de trabajo
departamentos <- read_sf("C:/Users/JUAN PABLO/Documents/geo maps/COL_adm1.shp")
###
## Observar los primeros datos presnetes en el archivo
head(departamentos)
###
## La función st_crs permite observar l¿el sistema de referencias de coordenadas de los datos utilizados
st_crs(departamentos)
## Coordinate Reference System:
## User input: WGS 84
## wkt:
## GEOGCRS["WGS 84",
## DATUM["World Geodetic System 1984",
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["latitude",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["longitude",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## ID["EPSG",4326]]
###
De esta forma, podemos representar los datos coordenados en un mapa de la región a estudiar, además del sistema de coordenadas de referencia (para Colombia, el 32618)
###
ggplot() + geom_sf(data = departamentos) + coord_sf(crs=st_crs(32618))
##
Es posible filtrar el departamento requerido en el estudio. Para el presnete caso, se trabajará con el departamento de Casanare
###
casanare <- departamentos %>% filter(NAME_1 == "Casanare")
##
Ahora es posible determinar el mapa exclusivamente para el departamento de Casanare
###
munic <- read_sf("C:/Users/JUAN PABLO/Documents/geo maps/COL_adm2.shp")
mun_casanare <- munic %>% filter(NAME_1 == "Casanare")
casanare_points <- cbind(mun_casanare, st_coordinates(st_centroid(mun_casanare$geometry)))
## Warning in st_centroid.sfc(mun_casanare$geometry): st_centroid does not give
## correct centroids for longitude/latitude data
ggplot(casanare) +
geom_sf() +
geom_sf(data = casanare_points, fill = "antiquewhite") +
geom_text(data = casanare_points, aes(x=X, y=Y,label = ID_2), size = 2) +
coord_sf(xlim = c(-73.5, -69.6), ylim = c(4, 6.5), expand = FALSE)
##
Lo obtenido anteriormente es una representación del municipio de cordoba; sin embargo, siempre es conveniente representar la zona de estudio sobre un mapa que presneta características como la geomorfología, es decir, observar sobre una vista real de la tierra, como se distribuyen los datos analizados
Para esto, es neceasio carbar la slibrerías necesarias, como lo es “leaflet”
Posterior a esto, para el manejo de los datos es necesarios implementarlos como puntos espaciales
Por otra parte, la librería “lwgeom” permite obtener el área de los municipios presentes en la base de datos
NOTA: Es necesario cersiorarse de que los datos se presenten en las unidades deseadas, siendo en este caso, kilómetros cuadrados (km2) (en la salida de R se menciona que son m^2, pero la convrsión de unidades ya se ha realizado)
###
cas_points <- as(casanare_points, 'Spatial')
mun_casanare$area <- st_area(mun_casanare)
mun_casanare$km2 <- mun_casanare$area/(1000000)
mun_casanare$km2
## Units: [m^2]
## [1] 1433.3676 328.6694 5063.0322 152.3924 3862.1055 720.9689
## [7] 1046.8378 4742.7239 12435.9210 784.1395 179.3627 278.6638
## [13] 495.2043 3238.2907 1105.4737 2441.8742 3037.4892 755.1099
## [19] 2520.3069
##
Para realizar el gráfico deseado, es necesario especificar los datos con los cuales se pretende realizar
###
cas_mun <- as(mun_casanare, 'Spatial')
##
Es posiuble utilizar diferntes proveedores para la información espacial:
###
library(leaflet)
leaflet() %>%
addProviderTiles(providers$Esri.WorldImagery, options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(data = cas_mun, popup= cas_mun$NAME_2,
stroke = TRUE, fillOpacity = 0.25, smoothFactor = 0.25)
##
###
leaflet() %>%
addProviderTiles(providers$Esri.WorldPhysical, options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(data = cas_mun, popup= cas_mun$NAME_2,
stroke = TRUE, fillOpacity = 0.25, smoothFactor = 0.25)
##
###
leaflet() %>%
addProviderTiles(providers$Esri.NatGeoWorldMap, options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(data = cas_mun, popup= cas_mun$NAME_2,
stroke = TRUE, fillOpacity = 0.25, smoothFactor = 0.25)
##