title: “Cesar” output: Angelica Mrtinez Ariza
install.packages(c("tidyverse"))
install.packages(c("sf"))
Iniciamos instalando de librerias tidyverse y sf.
Posteriormente estas se deben ejecutar.
library(tidyverse)
library(sf)
La libreria sf describe cómo los objetos en el mundo real pueden representarse en computadoras, con énfasis en la geometría espacial de estos objetos. También describe cómo dichos objetos pueden almacenarse y recuperarse de las bases de datos, y qué operaciones geométricas deben definirse para ellos
- Lectura de datos vectoriales
Nos basamos en shapefiles bajados con antelacion de la pagina diva.gis .
deptos <- read_sf("./COL_adm1.shp")
El próximo paso es acceder a los datos mismos. Si los datos son muy numerosos,mostrarlos todos puede llevar un tiempo, por ello la función head() permite previsualizar los primeros 6 datos de la tabla. Cada fila tendrá un indice como etiqueta y cada columna un nombre de variable.
head(deptos)
st_crs(deptos)
- Visualizacion de datos espaciales usando ggplot
Se van a revisar algunas de las funciones de ggplot
Es posible utilizar cualquier sistema de referencia de coordenadas para trazar los datos. Se debe utilizar un sistema de referencia de coordenadas que se haya definido explícitamente para e país o región.
ggplot() + geom_sf(data = deptos)
Se usa CRS un sistema usado en Canada y este es el resultado.
ggplot() + geom_sf(data = deptos) + coord_sf(crs=st_crs(3978))
Si se necesita usar CRS es necesario convertir el objeto espacial de EPSG4326 a EPSG:32618.
deptos_utm <- st_transform(deptos, crs = st_crs(32618))
deptos_utm
ggplot() + geom_sf(data = deptos_utm)
4 Filtrar datos geoespaciales basados en atributos.
Como fue relatado al inicio, solo estamos interesadosen el peratamento del Cesar. Y se puede filtar solamente la información que nos es util.
cesar <- deptos %>% filter(NAME_1 == "Cesar")
Para ver la grafica tenemos que usar el siguiente código
ggplot() + geom_sf(data = cesar)
Tambien se puede visualizar el grafico con los municipios del departamento.
munic <- read_sf("./COL_adm2.shp")
mun_cesar <- munic %>% filter(NAME_1 == "Cesar")
ggplot() + geom_sf(data = mun_cesar)
Para ciertas actividades mas adelante , es necesario conocer el centroide del departamento,que puede no ser exacto con la latitud y longitud.
mun_cesar
cesar_points<- st_centroid(mun_cesar)
cesar_points <- cbind(mun_cesar, st_coordinates(st_centroid(mun_cesar$geometry)))
ggplot(cesar) +
geom_sf() +
geom_sf(data = cesar_points, fill = "antiquewhite") +
geom_text(data = cesar_points, aes(x=X, y=Y,label = ID_2), size = 2) +
coord_sf(xlim = c(-75, -72), ylim = c(7.6, 11), expand = FALSE)
Se adjunta la libreria scales
library(scales)
Y cada vez el mapa se puede mejorar mas.
ggplot(cesar) +
geom_sf(data=cesar_points, aes(x=X, y=Y, fill = ID_2), color = "black", size = 0.55) +geom_text(data = cesar_points, aes(x=X, y=Y,label = ID_2), size = 2) +
theme(aspect.ratio=2)+
scale_fill_distiller(name="ID_2", palette = "YlGn", breaks = pretty_breaks(n = 12))+
labs(title="Otro mapa del Cesar")
ggsave("cesar_municipios.pdf")
ggsave("map_cesar.png", width = 6, height = 6, dpi = "screen")
5.Visualizar datos usando leflet
Se instala el paquete leflet.
install.packages("leaflet")
library(leaflet)
Para usar la biblioteca, necesitamos convertir de características simples a puntos espaciales
ant_points <- as(cesar_points, 'Spatial')
head(ant_points)
Se puede hallar el area de los municipios, con el paquete lwgeom
install.packages("lwgeom")
library(lwgeom)
Se puede calcular el área de cada municipio en metros cuadrados.
mun_cesar$area <- st_area(mun_cesar)
Ahora se va a calcular en kilometros cuadarados
mun_cesar$km2 <- mun_cesar$area/(1000000)
Revisemos la informacion que tenemos de las areas de los municipios.
mun_cesar$km2
Se necesita de nuevo una conversión de características simples a polígonos espaciales:
ces_mun <- as(mun_cesar, 'Spatial')
head(ces_mun)
Vamos a alistar la imagen
bins <- c(0, 50, 100, 200, 300, 500, 1000, 2000, Inf)
pal <- colorBin("YlOrRd", domain = ces_mun$km2, bins = bins)
labels <- mun_cesar$NAME_2
labels
m <- leaflet(ces_mun) %>%
setView(-73.5, 10, 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")
m
Se puede mejorar el mapa ya que se cuentan con muchos codigos para hacerlo.
leaflet() %>%
addProviderTiles(providers$Esri.WorldImagery, options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(data = ces_mun, popup= ces_mun$NAME_2,
stroke = TRUE, fillOpacity = 0.25, smoothFactor = 0.25
)
Se subirá una foto panoramica de la ciudad de Valledupar,usando las utilidades addProvider
leaflet(amz_mun) %>%
setView(-73.25,10,46,15) %>%
addProviderTiles(providers$Esri.WorldImagery, options = providerTileOptions(opacity =
0.99))
addPolygons (data = amz_mun, popup = amz_mun$NAME_2,
stroke =TRUE, fillopacity = 0.25, smoothFactor = 0.25 )
LS0tCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdAotLS0KdGl0bGU6ICJDZXNhciIKb3V0cHV0OiBBbmdlbGljYSBNcnRpbmV6IEFyaXphCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKGMoInRpZHl2ZXJzZSIpKQpgYGAKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoYygic2YiKSkKYGBgCgpJbmljaWFtb3MgaW5zdGFsYW5kbyBkZSBsaWJyZXJpYXMgdGlkeXZlcnNlIHkgc2YuCgpQb3N0ZXJpb3JtZW50ZSBlc3RhcyBzZSBkZWJlbiBlamVjdXRhci4KYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKYGBge3J9CmxpYnJhcnkoc2YpCmBgYAogTGEgbGlicmVyaWEgc2YgZGVzY3JpYmUgY8OzbW8gbG9zIG9iamV0b3MgZW4gZWwgbXVuZG8gcmVhbCBwdWVkZW4gcmVwcmVzZW50YXJzZSBlbiBjb21wdXRhZG9yYXMsIGNvbiDDqW5mYXNpcyBlbiBsYSBnZW9tZXRyw61hIGVzcGFjaWFsIGRlIGVzdG9zIG9iamV0b3MuIFRhbWJpw6luIGRlc2NyaWJlIGPDs21vIGRpY2hvcyBvYmpldG9zIHB1ZWRlbiBhbG1hY2VuYXJzZSB5IHJlY3VwZXJhcnNlIGRlIGxhcyBiYXNlcyBkZSBkYXRvcywgeSBxdcOpIG9wZXJhY2lvbmVzIGdlb23DqXRyaWNhcyBkZWJlbiBkZWZpbmlyc2UgcGFyYSBlbGxvcwogCiAKMi4gTGVjdHVyYSBkZSBkYXRvcyB2ZWN0b3JpYWxlcwoKTm9zIGJhc2Ftb3MgZW4gc2hhcGVmaWxlcyBiYWphZG9zIGNvbiBhbnRlbGFjaW9uIGRlIGxhIHBhZ2luYSBkaXZhLmdpcyAuCgoKYGBge3J9CmRlcHRvcyA8LSByZWFkX3NmKCIuL0NPTF9hZG0xLnNocCIpCmBgYApFbCBwcsOzeGltbyBwYXNvIGVzIGFjY2VkZXIgYSBsb3MgZGF0b3MgbWlzbW9zLiBTaSBsb3MgZGF0b3Mgc29uIG11eSBudW1lcm9zb3MsbW9zdHJhcmxvcyB0b2RvcyBwdWVkZSBsbGV2YXIgdW4gdGllbXBvLCBwb3IgZWxsbyBsYSBmdW5jacOzbiBoZWFkKCkgcGVybWl0ZSBwcmV2aXN1YWxpemFyIGxvcyBwcmltZXJvcyA2IGRhdG9zIGRlIGxhIHRhYmxhLiBDYWRhIGZpbGEgdGVuZHLDoSB1biBpbmRpY2UgY29tbyBldGlxdWV0YSB5IGNhZGEgY29sdW1uYSB1biBub21icmUgZGUgdmFyaWFibGUuCmBgYHtyfQpoZWFkKGRlcHRvcykKYGBgCmBgYHtyfQpzdF9jcnMoZGVwdG9zKQpgYGAKCjMuIFZpc3VhbGl6YWNpb24gZGUgZGF0b3MgZXNwYWNpYWxlcyB1c2FuZG8gZ2dwbG90CgoKU2UgdmFuIGEgcmV2aXNhciBhbGd1bmFzIGRlIGxhcyBmdW5jaW9uZXMgZGUgZ2dwbG90CgpFcyBwb3NpYmxlIHV0aWxpemFyIGN1YWxxdWllciBzaXN0ZW1hIGRlIHJlZmVyZW5jaWEgZGUgY29vcmRlbmFkYXMgcGFyYSB0cmF6YXIgbG9zIGRhdG9zLiBTZSBkZWJlICB1dGlsaXphciB1biBzaXN0ZW1hIGRlIHJlZmVyZW5jaWEgZGUgY29vcmRlbmFkYXMgcXVlIHNlIGhheWEgZGVmaW5pZG8gZXhwbMOtY2l0YW1lbnRlIHBhcmEgZSBwYcOtcyBvIHJlZ2nDs24uCmBgYHtyfQpnZ3Bsb3QoKSArIGdlb21fc2YoZGF0YSA9IGRlcHRvcykgCmBgYAoKU2UgdXNhIENSUyB1biBzaXN0ZW1hIHVzYWRvIGVuIENhbmFkYSB5IGVzdGUgZXMgZWwgcmVzdWx0YWRvLgoKYGBge3J9CmdncGxvdCgpICsgZ2VvbV9zZihkYXRhID0gZGVwdG9zKSArIGNvb3JkX3NmKGNycz1zdF9jcnMoMzk3OCkpCmBgYApTaSBzZSBuZWNlc2l0YSB1c2FyIENSUyBlcyBuZWNlc2FyaW8gY29udmVydGlyIGVsIG9iamV0byBlc3BhY2lhbCBkZSBFUFNHNDMyNiBhIEVQU0c6MzI2MTguCgoKYGBge3J9CmRlcHRvc191dG0gPC0gc3RfdHJhbnNmb3JtKGRlcHRvcywgY3JzID0gc3RfY3JzKDMyNjE4KSkKYGBgCgpgYGB7cn0KZGVwdG9zX3V0bQpgYGAKCmBgYHtyfQpnZ3Bsb3QoKSArIGdlb21fc2YoZGF0YSA9IGRlcHRvc191dG0pCmBgYAo0IEZpbHRyYXIgZGF0b3MgZ2VvZXNwYWNpYWxlcyBiYXNhZG9zIGVuIGF0cmlidXRvcy4KCkNvbW8gZnVlIHJlbGF0YWRvIGFsIGluaWNpbywgc29sbyBlc3RhbW9zIGludGVyZXNhZG9zZW4gZWwgcGVyYXRhbWVudG8gZGVsIENlc2FyLgpZIHNlIHB1ZWRlIGZpbHRhciBzb2xhbWVudGUgbGEgaW5mb3JtYWNpw7NuIHF1ZSBub3MgZXMgdXRpbC4KYGBge3J9CmNlc2FyIDwtICBkZXB0b3MgJT4lICAgZmlsdGVyKE5BTUVfMSA9PSAiQ2VzYXIiKQpgYGAKClBhcmEgdmVyIGxhIGdyYWZpY2EgdGVuZW1vcyBxdWUgdXNhciBlbCBzaWd1aWVudGUgY8OzZGlnbwpgYGB7cn0KZ2dwbG90KCkgKyBnZW9tX3NmKGRhdGEgPSBjZXNhcikKYGBgCgpUYW1iaWVuIHNlIHB1ZWRlIHZpc3VhbGl6YXIgZWwgZ3JhZmljbyBjb24gbG9zIG11bmljaXBpb3MgZGVsIGRlcGFydGFtZW50by4KCmBgYHtyfQptdW5pYyA8LSAgcmVhZF9zZigiLi9DT0xfYWRtMi5zaHAiKQptdW5fY2VzYXIgPC0gbXVuaWMgJT4lIGZpbHRlcihOQU1FXzEgPT0gIkNlc2FyIikKZ2dwbG90KCkgKyBnZW9tX3NmKGRhdGEgPSBtdW5fY2VzYXIpIAoKYGBgCgpQYXJhIGNpZXJ0YXMgYWN0aXZpZGFkZXMgbWFzIGFkZWxhbnRlICwgZXMgbmVjZXNhcmlvIGNvbm9jZXIgIGVsIGNlbnRyb2lkZSBkZWwgZGVwYXJ0YW1lbnRvLHF1ZSBwdWVkZSBubyBzZXIgZXhhY3RvIGNvbiBsYSBsYXRpdHVkIHkgbG9uZ2l0dWQuCgpgYGB7cn0KbXVuX2Nlc2FyCmBgYApgYGB7cn0KY2VzYXJfcG9pbnRzPC0gc3RfY2VudHJvaWQobXVuX2Nlc2FyKQpgYGAKCmBgYHtyfQpjZXNhcl9wb2ludHMgPC0gY2JpbmQobXVuX2Nlc2FyLCBzdF9jb29yZGluYXRlcyhzdF9jZW50cm9pZChtdW5fY2VzYXIkZ2VvbWV0cnkpKSkKYGBgCgpgYGB7cn0KZ2dwbG90KGNlc2FyKSArCiAgICBnZW9tX3NmKCkgKwogICAgZ2VvbV9zZihkYXRhID0gY2VzYXJfcG9pbnRzLCBmaWxsID0gImFudGlxdWV3aGl0ZSIpICsgCiAgICBnZW9tX3RleHQoZGF0YSA9IGNlc2FyX3BvaW50cywgYWVzKHg9WCwgeT1ZLGxhYmVsID0gSURfMiksIHNpemUgPSAyKSArCiAgICBjb29yZF9zZih4bGltID0gYygtNzUsIC03MiksIHlsaW0gPSBjKDcuNiwgMTEpLCBleHBhbmQgPSBGQUxTRSkKYGBgCgoKU2UgYWRqdW50YSBsYSBsaWJyZXJpYSBzY2FsZXMgCgpgYGB7cn0KbGlicmFyeShzY2FsZXMpCmBgYAoKIFkgY2FkYSB2ZXogZWwgbWFwYSBzZSBwdWVkZSBtZWpvcmFyIG1hcy4KIApgYGB7cn0KZ2dwbG90KGNlc2FyKSArIAogIGdlb21fc2YoZGF0YT1jZXNhcl9wb2ludHMsIGFlcyh4PVgsIHk9WSwgZmlsbCA9ICAgICAgIElEXzIpLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjU1KSArZ2VvbV90ZXh0KGRhdGEgPSBjZXNhcl9wb2ludHMsIGFlcyh4PVgsIHk9WSxsYWJlbCA9IElEXzIpLCBzaXplID0gMikgKwogIHRoZW1lKGFzcGVjdC5yYXRpbz0yKSsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihuYW1lPSJJRF8yIiwgcGFsZXR0ZSA9ICJZbEduIiwgYnJlYWtzID0gcHJldHR5X2JyZWFrcyhuID0gMTIpKSsKICBsYWJzKHRpdGxlPSJPdHJvIG1hcGEgZGVsIENlc2FyIikKYGBgCmBgYHtyfQpnZ3NhdmUoImNlc2FyX211bmljaXBpb3MucGRmIikKYGBgCgoKYGBge3J9Cmdnc2F2ZSgibWFwX2Nlc2FyLnBuZyIsIHdpZHRoID0gNiwgaGVpZ2h0ID0gNiwgZHBpID0gInNjcmVlbiIpCmBgYAoKCjUuVmlzdWFsaXphciBkYXRvcyB1c2FuZG8gbGVmbGV0CgoKU2UgaW5zdGFsYSBlbCBwYXF1ZXRlIGxlZmxldC4KCgpgYGB7cn0KaW5zdGFsbC5wYWNrYWdlcygibGVhZmxldCIpCmBgYApgYGB7cn0KbGlicmFyeShsZWFmbGV0KQpgYGAKCgpQYXJhIHVzYXIgbGEgYmlibGlvdGVjYSwgbmVjZXNpdGFtb3MgY29udmVydGlyIGRlIGNhcmFjdGVyw61zdGljYXMgc2ltcGxlcyBhIHB1bnRvcyBlc3BhY2lhbGVzCgpgYGB7cn0KYW50X3BvaW50cyA8LSBhcyhjZXNhcl9wb2ludHMsICdTcGF0aWFsJykKCgpgYGAKCmBgYHtyfQpoZWFkKGFudF9wb2ludHMpCmBgYAoKU2UgcHVlZGUgaGFsbGFyIGVsIGFyZWEgZGUgbG9zIG11bmljaXBpb3MsIGNvbiBlbCBwYXF1ZXRlIGx3Z2VvbQoKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoImx3Z2VvbSIpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KGx3Z2VvbSkKYGBgCgpTZSBwdWVkZSBjYWxjdWxhciBlbCDDoXJlYSBkZSBjYWRhIG11bmljaXBpbyBlbiBtZXRyb3MgY3VhZHJhZG9zLgpgYGB7cn0KbXVuX2Nlc2FyJGFyZWEgPC0gc3RfYXJlYShtdW5fY2VzYXIpCmBgYAoKQWhvcmEgc2UgdmEgYSBjYWxjdWxhciBlbiBraWxvbWV0cm9zIGN1YWRhcmFkb3MKYGBge3J9Cm11bl9jZXNhciRrbTIgPC0gbXVuX2Nlc2FyJGFyZWEvKDEwMDAwMDApCmBgYAoKUmV2aXNlbW9zIGxhIGluZm9ybWFjaW9uIHF1ZSB0ZW5lbW9zIGRlIGxhcyBhcmVhcyBkZSBsb3MgbXVuaWNpcGlvcy4KCmBgYHtyfQptdW5fY2VzYXIka20yCmBgYApTZSBuZWNlc2l0YSBkZSBudWV2byAgdW5hIGNvbnZlcnNpw7NuIGRlIGNhcmFjdGVyw61zdGljYXMgc2ltcGxlcyBhIHBvbMOtZ29ub3MgZXNwYWNpYWxlczoKYGBge3J9CmNlc19tdW4gPC0gYXMobXVuX2Nlc2FyLCAnU3BhdGlhbCcpCmBgYAoKYGBge3J9CmhlYWQoY2VzX211bikKYGBgCgpWYW1vcyBhIGFsaXN0YXIgbGEgaW1hZ2VuCmBgYHtyfQpiaW5zIDwtIGMoMCwgNTAsIDEwMCwgMjAwLCAzMDAsIDUwMCwgMTAwMCwgMjAwMCwgSW5mKQpwYWwgPC0gY29sb3JCaW4oIllsT3JSZCIsIGRvbWFpbiA9IGNlc19tdW4ka20yLCBiaW5zID0gYmlucykKCgpsYWJlbHMgPC0gbXVuX2Nlc2FyJE5BTUVfMgoKbGFiZWxzCmBgYApgYGB7cn0KbSA8LSBsZWFmbGV0KGNlc19tdW4pICU+JQogIHNldFZpZXcoLTczLjUsIDEwLCA4KSAgJT4lIGFkZFBvbHlnb25zKAogIGZpbGxDb2xvciA9IH5wYWwoa20yKSwKICB3ZWlnaHQgPSAyLAogIG9wYWNpdHkgPSAxLAogIGNvbG9yID0gIndoaXRlIiwKICBkYXNoQXJyYXkgPSAiMyIsCiAgZmlsbE9wYWNpdHkgPSAwLjcsCiAgaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0T3B0aW9ucygKICAgIHdlaWdodCA9IDUsCiAgICBjb2xvciA9ICIjNjY2IiwKICAgIGRhc2hBcnJheSA9ICIiLAogICAgZmlsbE9wYWNpdHkgPSAwLjcsCiAgICBicmluZ1RvRnJvbnQgPSBUUlVFKSwKICBsYWJlbCA9IGxhYmVscykgJT4lCiAgYWRkTGVnZW5kKHBhbCA9IHBhbCwgdmFsdWVzID0gfmttMiwgb3BhY2l0eSA9IDAuNywgdGl0bGUgPSBOVUxMLAogICAgcG9zaXRpb24gPSAiYm90dG9tcmlnaHQiKQpgYGAKYGBge3J9Cm0KYGBgCgoKU2UgIHB1ZWRlIG1lam9yYXIgZWwgbWFwYSB5YSBxdWUgc2UgY3VlbnRhbiBjb24gbXVjaG9zIGNvZGlnb3MgcGFyYSBoYWNlcmxvLgoKYGBge3J9CmxlYWZsZXQoKSAlPiUKICBhZGRQcm92aWRlclRpbGVzKHByb3ZpZGVycyRFc3JpLldvcmxkSW1hZ2VyeSwgb3B0aW9ucz0gcHJvdmlkZXJUaWxlT3B0aW9ucyhvcGFjaXR5ID0gMC45OSkpICU+JQogIGFkZFBvbHlnb25zKGRhdGEgPSBjZXNfbXVuLCBwb3B1cD0gY2VzX211biROQU1FXzIsCiAgICBzdHJva2UgPSBUUlVFLCBmaWxsT3BhY2l0eSA9IDAuMjUsIHNtb290aEZhY3RvciA9IDAuMjUKICApCmBgYAoKU2UgIHN1Ymlyw6EgdW5hIGZvdG8gcGFub3JhbWljYSBkZSBsYSBjaXVkYWQgZGUgVmFsbGVkdXBhcix1c2FuZG8gIGxhcyB1dGlsaWRhZGVzIGFkZFByb3ZpZGVyCgoKYGBge3J9CmxlYWZsZXQoYW16X211bikgJT4lCiAgc2V0VmlldygtNzMuMjUsMTAsNDYsMTUpICU+JQogIGFkZFByb3ZpZGVyVGlsZXMocHJvdmlkZXJzJEVzcmkuV29ybGRJbWFnZXJ5LCBvcHRpb25zID0gcHJvdmlkZXJUaWxlT3B0aW9ucyhvcGFjaXR5ID0gCiAgMC45OSkpCiAgYWRkUG9seWdvbnMgKGRhdGEgPSBhbXpfbXVuLCBwb3B1cCA9IGFtel9tdW4kTkFNRV8yLAogICAgICAgICAgICAgIHN0cm9rZSA9VFJVRSwgZmlsbG9wYWNpdHkgPSAwLjI1LCBzbW9vdGhGYWN0b3IgPSAwLjI1ICAgICApCiAgCgoKCgoKCgo=