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.5.0
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'readr' 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
## Warning: package 'stringr' was built under R version 3.6.3
## Warning: package 'forcats' 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
library(osrm)
## Warning: package 'osrm' was built under R version 3.6.3
## Data: (c) OpenStreetMap contributors, ODbL 1.0 - http://www.openstreetmap.org/copyright
## Routing: OSRM - http://project-osrm.org/
library(leaflet)
## Warning: package 'leaflet' was built under R version 3.6.3
barrios <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/barrios/barrios.geojson")
## Reading layer `barrios_badata' from data source `http://cdn.buenosaires.gob.ar/datosabiertos/datasets/barrios/barrios.geojson' using driver `GeoJSON'
## Simple feature collection with 48 features and 4 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -58.53152 ymin: -34.70529 xmax: -58.33515 ymax: -34.52649
## CRS: 4326
comisarias <- read.csv("comisarias-policia-de-la-ciudad.csv",
encoding="UTF-8") %>%
mutate(nombre=as.character(nombre))
barrios$barrio
## [1] CHACARITA PATERNAL VILLA CRESPO VILLA DEL PARQUE
## [5] ALMAGRO CABALLITO VILLA SANTA RITA MONTE CASTRO
## [9] VILLA REAL FLORES FLORESTA CONSTITUCION
## [13] SAN CRISTOBAL BOEDO VELEZ SARSFIELD VILLA LURO
## [17] PARQUE PATRICIOS MATADEROS VILLA LUGANO SAN TELMO
## [21] SAAVEDRA COGHLAN VILLA URQUIZA COLEGIALES
## [25] BALVANERA VILLA GRAL. MITRE PARQUE CHAS AGRONOMIA
## [29] VILLA ORTUZAR BARRACAS PARQUE AVELLANEDA PARQUE CHACABUCO
## [33] NUEVA POMPEYA PALERMO VILLA RIACHUELO VILLA SOLDATI
## [37] VILLA PUEYRREDON VILLA DEVOTO LINIERS VERSALLES
## [41] PUERTO MADERO MONSERRAT SAN NICOLAS BELGRANO
## [45] RECOLETA RETIRO NUÑEZ BOCA
## 48 Levels: AGRONOMIA ALMAGRO BALVANERA BARRACAS BELGRANO BOCA ... VILLA URQUIZA
barrios_centroides <- barrios %>%
st_centroid()
## Warning in st_centroid.sf(.): 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
ggplot()+
geom_sf(data=barrios, fill="grey",color="white")+
geom_sf(data=barrios_centroides, size=2)+
labs(title = "Barrios de la Ciudad",
subtitle = "Ubicación de los centroides",
fill="Barrios",
caption= "Fuente:https://data.buenosaires.gob.ar/")+
theme_void()
barrios_centroides <- barrios_centroides %>%
filter(barrio=="VILLA CRESPO" | barrio=="SAAVEDRA") %>%
mutate(ubicacion=if_else(barrio=="VILLA CRESPO", "CENTRO", "PERIFERIA"))
barrios_centroides <- cbind(barrios_centroides, st_coordinates(barrios_centroides)) %>%
st_set_geometry(NULL)
ggplot()+
geom_sf(data=barrios, fill="grey",color="white")+
geom_point(data=barrios_centroides, aes(x=X, y=Y, color=ubicacion), size=6)+
geom_point(data=comisarias, aes(x=long, y=lat), shape=20, size=3)+
labs(title = "Barrios de la Ciudad",
subtitle = "Ubicación de las comisarias y centroides elegidos Centro | Periferia",
color="Barrios",
caption= "Fuente:https://data.buenosaires.gob.ar/")+
theme_void()
ruteo_a_comisarias <- function(o_nombre, o_x, o_y, d_nombre, d_x, d_y) {
ruta <- osrmRoute(src = c(o_nombre, o_x, o_y),
dst = c(d_nombre, d_x, d_y),
returnclass = "sf",
overview = "full")
cbind(ORIGEN = o_nombre, DESTINO = d_nombre, ruta)
}
comisarias_VC <- comisarias %>%
mutate(ORIGEN="VILLA CRESPO") %>%
left_join(barrios_centroides, by=c("ORIGEN"="barrio")) %>%
rename(NOMBRE_ORIGEN=ORIGEN,
LON_ORIGEN=X,
LAT_ORIGEN=Y,
NOMBRE_DESTINO=nombre,
LON_DESTINO=long,
LAT_DESTINO=lat) %>%
select(NOMBRE_ORIGEN, LON_ORIGEN, LAT_ORIGEN, NOMBRE_DESTINO, LON_DESTINO, LAT_DESTINO)
## Warning: Column `ORIGEN`/`barrio` joining character vector and factor, coercing
## into character vector
ruteo_VC <- list(comisarias_VC$NOMBRE_ORIGEN, comisarias_VC$LON_ORIGEN,comisarias_VC$LAT_ORIGEN,
comisarias_VC$NOMBRE_DESTINO, comisarias_VC$LON_DESTINO,comisarias_VC$LAT_DESTINO)
ruteo_centrico <- pmap(ruteo_VC, ruteo_a_comisarias) %>%
reduce(rbind)
ruteo_centrico <-mutate(ruteo_centrico, RUTA = paste(ORIGEN,"a", DESTINO))
filter(ruteo_centrico, distance == min(distance))
## Simple feature collection with 1 feature and 7 fields
## geometry type: LINESTRING
## dimension: XY
## bbox: xmin: -58.44367 ymin: -34.59982 xmax: -58.43972 ymax: -34.59635
## CRS: EPSG:4326
## ORIGEN DESTINO src dst
## 1 VILLA CRESPO Comisaria Vecinal 15-B VILLA CRESPO Comisaria Vecinal 15-B
## duration distance geometry
## 1 3.413333 0.9174 LINESTRING (-58.44228 -34.5...
## RUTA
## 1 VILLA CRESPO a Comisaria Vecinal 15-B
La comisaria mas cerca de VILLA CRESPO es la Comisaria vecinal 15-B, ubicada a 0.9km con 3.5 minutos de viaje en auto.
leaflet(ruteo_centrico) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolylines(color = ~colorNumeric("RdBu", ruteo_centrico$distance)(distance),
label = ruteo_centrico$RUTA %>%
lapply(htmltools::HTML)) %>%
addLegend("bottomright", pal = colorNumeric("RdBu", ruteo_centrico$distance), values = ~distance,
title = "Distancia",
opacity = 0.55)
comisarias_SAA <- comisarias %>%
mutate(ORIGEN="SAAVEDRA") %>%
left_join(barrios_centroides, by=c("ORIGEN"="barrio")) %>%
rename(NOMBRE_ORIGEN=ORIGEN,
LON_ORIGEN=X,
LAT_ORIGEN=Y,
NOMBRE_DESTINO=nombre,
LON_DESTINO=long,
LAT_DESTINO=lat) %>%
select(NOMBRE_ORIGEN, LON_ORIGEN, LAT_ORIGEN, NOMBRE_DESTINO, LON_DESTINO, LAT_DESTINO)
## Warning: Column `ORIGEN`/`barrio` joining character vector and factor, coercing
## into character vector
ruteo_SAA <- list(comisarias_SAA$NOMBRE_ORIGEN, comisarias_SAA$LON_ORIGEN,comisarias_SAA$LAT_ORIGEN,
comisarias_SAA$NOMBRE_DESTINO, comisarias_SAA$LON_DESTINO,comisarias_SAA$LAT_DESTINO)
ruteo_periferico <- pmap(ruteo_SAA, ruteo_a_comisarias) %>%
reduce(rbind)
ruteo_periferico <-mutate(ruteo_periferico, RUTA = paste(ORIGEN,"a", DESTINO))
filter(ruteo_periferico, distance == min(distance))
## Simple feature collection with 1 feature and 7 fields
## geometry type: LINESTRING
## dimension: XY
## bbox: xmin: -58.49094 ymin: -34.5531 xmax: -58.48874 ymax: -34.55079
## CRS: EPSG:4326
## ORIGEN DESTINO src dst duration distance
## 1 SAAVEDRA Comisaria Comunal 12 SAAVEDRA Comisaria Comunal 12 1.556667 0.3594
## geometry RUTA
## 1 LINESTRING (-58.48874 -34.5... SAAVEDRA a Comisaria Comunal 12
La comisaria mas cerca de SAAVEDRA en la Comisaria vecinal 12, ubicada a 0,3 km con 1.5 minutos de viaje en auto.
leaflet(ruteo_periferico) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolylines(color = ~colorNumeric("RdBu", ruteo_periferico$distance)(distance),
label = ruteo_periferico$RUTA %>%
lapply(htmltools::HTML)) %>%
addLegend("bottomright", pal = colorNumeric("RdBu", ruteo_periferico$distance), values = ~distance,
title = "Distancia",
opacity = 0.55)