Andrea Valentina Galindo Rojas
23 de marzo-2020
Instalamos los paquetes “tidyverse” y “sf”
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.3
## -- Attaching packages ----------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.3
## v tibble 2.1.3 v dplyr 0.8.4
## v tidyr 1.0.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.6.3
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'purrr' was built under R version 3.6.3
## Warning: package 'dplyr' was built under R version 3.6.3
## -- Conflicts -------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(sf)
## Warning: package 'sf' was built under R version 3.6.3
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
deptos <- read_sf("D:/Mis documentos/RStudio_Works/COL_adm/COL_adm1.shp")
Ahora para saber cuál es el sistema de referencia de coordenadas de los datos vectoriales almacenados en el objeto deptos usamos la función st_crs()
st_crs(deptos)
## Coordinate Reference System:
## EPSG: 4326
## proj4string: "+proj=longlat +datum=WGS84 +no_defs"
Podemos conocer algunas de las funcionalidades de ggplot:
ggplot() + geom_sf(data = deptos)
Se puede cambiar el sistema de coordenadas:
deptos_utm <- st_transform(deptos, crs = st_crs(32618))
deptos_utm
Y volvemos a trazar:
ggplot() + geom_sf(data = deptos_utm)
En este caso como solo estamos interesados en un solo departamento (Nariño), podemos filtrar los datos.
nariño <- deptos %>% filter(NAME_1 == "Nariño")
Trazamos el nuevo objeto:
ggplot() + geom_sf(data = nariño)
Dela misma forma podemos filtrar los municipios de nuestro departamento, de forma que:
munic <- read_sf("D:/Mis documentos/RStudio_Works/COL_adm/COL_adm2.shp")
mun_nariño <- munic %>% filter(NAME_1 == "Nariño")
ggplot() + geom_sf(data = mun_nariño)
nariño_points<- st_centroid(mun_nariño)
## Warning in st_centroid.sf(mun_nariño): st_centroid assumes attributes are
## constant over geometries of x
## Warning in st_centroid.sfc(st_geometry(x), of_largest_polygon =
## of_largest_polygon): st_centroid does not give correct centroids for longitude/
## latitude data
nariño_points <- cbind(mun_nariño, st_coordinates(st_centroid(mun_nariño$geometry)))
## Warning in st_centroid.sfc(mun_nariño$geometry): st_centroid does not give
## correct centroids for longitude/latitude data
ggplot(nariño) +
geom_sf() +
geom_sf(data = nariño_points, fill = "antiquewhite") +
geom_text(data = nariño_points, aes(x=X, y=Y,label = ID_2), size = 2) +
coord_sf(xlim = c(-79.5, -76.5), ylim = c(0, 3), expand = FALSE)
Activamos la función scales y usamos algunas de sus usos:
library(scales)
## Warning: package 'scales' was built under R version 3.6.3
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
ggplot(nariño) +
geom_sf(data=nariño_points, aes(x=X, y=Y, fill =
ID_2), color = "black", size = 0.25) +
geom_text(data = nariño_points, aes(x=X, y=Y,label = ID_2), size = 2) +
theme(aspect.ratio=1)+
scale_fill_distiller(name="ID_2", palette = "YlGn", breaks = pretty_breaks(n = 5))+
labs(title="Another Map of Nariño")
## Warning: Ignoring unknown aesthetics: x, y
Para guardar esta representación como imagen png o pdf:
ggsave("nariño_municipios.pdf")
## Saving 7 x 5 in image
ggsave("map_nariño.png", width = 6, height = 6, dpi = "screen")
Ahora vamos a utilizar la librería leaflet para visualizar datos, primero la instalamos y la cargamos y para su uso necesitamos convertir las características simples en puntos espaciales:
library(leaflet)
## Warning: package 'leaflet' was built under R version 3.6.3
ant_points <- as(nariño_points, 'Spatial')
Obtenemos el área de los municipios; instalamos el paquete “lwgeom” y cargamos la librería “lwgeom” y luego
mun_nariño$area <- st_area(mun_nariño)
mun_nariño$km2 <- mun_nariño$area/(1000000)
Chequeamos los datos generados:
mun_nariño$km2
## Units: [m^2]
## [1] 71.98752 55.74518 65.22774 67.93262 2410.94555 26.93318
## [7] 526.61555 314.16324 83.44590 44.99987 102.15567 52.51039
## [13] 88.07873 777.95296 219.96056 1571.69749 255.02505 701.66570
## [19] 308.37704 695.28123 475.83185 121.89333 120.85226 47.31363
## [25] 96.66654 81.33575 1737.30988 318.32133 141.19872 184.00642
## [31] 402.25538 126.08877 565.71160 94.56624 458.64249 3581.55902
## [37] 544.56251 612.86369 1035.16288 78.56347 345.06495 353.55123
## [43] 77.33546 304.28491 153.69518 2267.78722 1190.68431 426.92008
## [49] 50.94761 1469.33941 247.95401 88.02883 47.69643 118.17829
## [55] 1538.54959 526.09790 137.07846 240.81800 155.83569 196.03407
## [61] 2648.87204 102.06098
Realizamos la conversión de características simples a polígonos espaciales:
ant_mun <- as(mun_nariño, 'Spatial')
Ahora, preparamos el trazo
bins <- c(0, 50, 100, 200, 300, 500, 1000, 2000, Inf)
pal <- colorBin("YlOrRd", domain = ant_mun$km2, bins = bins)
labels <- mun_nariño$NAME_2
labels
## [1] "Albán" "Aldana" "Ancuyá"
## [4] "Arboleda" "Barbacoas" "Belén"
## [7] "Buesaco" "Córdoba" "Chachagüí"
## [10] "Colón" "Consacá" "Contadero"
## [13] "Cuaspud" "Cumbal" "Cumbitara"
## [16] "El Charco" "El Rosario" "El Tablón de Gomez"
## [19] "El Tambo" "Francisco Pizarro" "Funes"
## [22] "Guachucal" "Guaitarilla" "Gualmatán"
## [25] "Iles" "Imués" "Ipiales"
## [28] "La Cruz" "La Florida" "La Llanada"
## [31] "La Tola" "La Unión de Sucre" "Leiva"
## [34] "Linares" "Los Andes" "Magüí"
## [37] "Mallama" "Mosquera" "Olaya Herrera"
## [40] "Ospina" "Policarpa" "Potosí"
## [43] "Providencia" "Puerres" "Pupiales"
## [46] "Ricaurte" "Roberto Payán" "Samaniego"
## [49] "San Bernardo" "San Juan de Pasto" "San Lorenzo"
## [52] "San Pablo" "San Pedro de Cartago" "Sandoná"
## [55] "Santa Bárbara" "Santa Cruz" "Sapuyes"
## [58] "Taminango" "Tangua" "Túquerres"
## [61] "Tumaco" "Yacuanquer"
Y lo creamos:
m <- leaflet(ant_mun) %>%
setView(-77.5, 1.5, 8) %>% addPolygons(
fillColor = ~pal(km2),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels) %>%
addLegend(pal = pal, values = ~km2, opacity = 0.7, title = NULL,
position = "bottomright")
lo visualizamos
m
Otra manera de trazarlo podría ser:
leaflet() %>%
addProviderTiles(providers$Esri.WorldImagery, options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(data = ant_mun, popup= ant_mun$NAME_2,
stroke = TRUE, fillOpacity = 0.25, smoothFactor = 0.25
)
Visualización de la capital del departamento de Nariño:
capi <- mun_nariño %>% filter(mun_nariño$NAME_2 == "San Juan de Pasto")
leaflet() %>%
addProviderTiles(providers$OpenTopoMap,options = providerTileOptions(opacity =0.60)) %>%
addPolygons(data = capi,stroke = TRUE,fillOpacity = 0.25,smoothFactor = 0.25)