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)