1. Elegir UNA SOLA de las siguientes opciones:
1.a. Un dataset que contenga viajes origen-destino (por ejemplo bicicletas públicas) de la Ciudad con la que están trabajando.
1.b. Un dataset que contenga servicios esenciales (hospitales, escuelas, comisarías, etc) de la Ciudad con la que están trabajando. En este caso deberán elegir un barrio cualquiera y calcular el centroide con st_centroid(). Los datos pueden ser descargados del portal open data de la ciudad y deben tener ubicación geográfica.
Siguiendo con temas vinculados al abordaje sanitario en el contexto de pandemia, optamos por la opción 1.b. Vamos a utilizar un dataset de los hospitales de la Ciudad Autónoma de Buenos Aires
Cargamos las librerías a utilizar:
library(tidyverse)
library(sf)
library(ggmap)
library(leaflet)
library(osrm)
library(osmdata)
library(Rcpp)
Traemos los datasets de barrios y hospitales de la Ciudad de Buenos Aires:
barrios <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/barrios/barrios.geojson", stringsAsFactors = TRUE)
## 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
## Bounding box: xmin: -58.53152 ymin: -34.70529 xmax: -58.33515 ymax: -34.52649
## Geodetic CRS: WGS 84
hospitales <- read.csv("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/hospitales/hospitales.csv",
stringsAsFactors = TRUE,
encoding="UTF-8") %>%
mutate(nombre=as.character(nombre))
Observamos el resumen de ambos datasets:
summary(barrios)
## barrio comuna perimetro area
## AGRONOMIA: 1 Min. : 1.000 Min. : 4531 Min. : 1232270
## ALMAGRO : 1 1st Qu.: 4.000 1st Qu.: 6554 1st Qu.: 2222027
## BALVANERA: 1 Median : 9.500 Median : 8254 Median : 3679709
## BARRACAS : 1 Mean : 8.458 Mean : 9863 Mean : 4242703
## BELGRANO : 1 3rd Qu.:12.000 3rd Qu.:11127 3rd Qu.: 5142993
## BOCA : 1 Max. :15.000 Max. :22127 Max. :15845871
## (Other) :42
## geometry
## POLYGON :48
## epsg:4326 : 0
## +proj=long...: 0
##
##
##
##
La Ciudad de Buenos Aires cuenta con 48 barrios y 15 comunas.
summary(hospitales)
## long lat id nombre
## Min. :-58.52 Min. :-34.67 Min. : 1.00 Length:36
## 1st Qu.:-58.46 1st Qu.:-34.64 1st Qu.: 9.75 Class :character
## Median :-58.41 Median :-34.62 Median :18.50 Mode :character
## Mean :-58.43 Mean :-34.62 Mean :18.50
## 3rd Qu.:-58.39 3rd Qu.:-34.60 3rd Qu.:27.25
## Max. :-58.36 Max. :-34.55 Max. :36.00
##
## nom_map objeto calle_nombre
## HOSP. ALVAREZ : 1 HOSPITAL:36 DIAZ VELEZ : 2
## HOSP. ARGERICH : 1 DOCTOR RAMON CARRILLO: 2
## HOSP. BORDA : 1 BRANDSEN : 1
## HOSP. CURIE : 1 CASEROS : 1
## HOSP. DE ELIZALDE : 1 CERVIÑO : 1
## HOSP. DE QUEMADOS A. U. ILLIA: 1 COMBATE DE LOS POZOS : 1
## (Other) :30 (Other) :28
## calle_altura calle_altura.1
## Min. : 15.0 BRANDSEN 2570 : 1
## 1st Qu.: 924.8 CASEROS 2061 : 1
## Median :2041.0 CERVIÑO 3356 : 1
## Mean :2074.1 COMBATE DE LOS POZOS 1881 : 1
## 3rd Qu.:2776.2 COMBATIENTES DE MALVINAS 3002: 1
## Max. :5044.0 CORBETA PI Y MARGAL 750 : 1
## (Other) :30
## dom_geo telefono
## 1301 VARELA AV. : 1 4121-0700 / 0800 : 1
## 1330 GALLO : 1 4123-3100 : 1
## 15 MUÑIZ : 1 4127-0200 / 300 : 1
## 150 PATRICIAS ARGENTINAS AV. : 1 4127-3100 / 4941-5555: 1
## 1550 CALDERON DE LA BARCA, PEDRO: 1 4301-3655 / 3659 : 1
## 1795 DON PEDRO DE MENDOZA AV. : 1 4301-3961 : 1
## (Other) :30 (Other) :30
## guardia fax
## : 2 : 1
## 4121-0683 : 1 4301-4870 : 1
## 4127-0400 : 1 4302-7400 : 1
## 4301-4522 : 1 4302-9160 : 1
## 4301-4870 : 1 4303-3655/59: 1
## 4304-5555 / 4304-3380 / 2946 (int. 213): 1 4304-1200 : 1
## (Other) :29 (Other) :30
## web
## :23
## www.buenosaires.gov.ar/areas/salud/hospital_quemados/?menu_id=24263: 1
## www.buenosaires.gov.ar/areas/salud/rivadavia : 1
## www.elizalde.gov.ar : 1
## www.garrahan.gov.ar : 1
## www.guti.gov.ar : 1
## (Other) : 8
## tipo tipo_espec
## Hospital de agudos :13 GRAL: BAS/CRIT/OTR :13
## Hospital de niños : 3 SALUD MENTAL : 5
## Hospital especializado:20 ODONTOLOGIA : 3
## PEDIATRIA : 3
## MED. FISICA/REHABILITACION: 2
## OFTALMOLOGIA : 2
## (Other) : 8
## mod_at_1 mod_at_2 depend_adm
## : 1 : 1 Ministerio de Salud GCBA:36
## AT. AMB./INTERNACION:30 DIAG./TRATAM.:32
## AT. AMBULATORIA : 5 DIAGNOSTICO : 3
##
##
##
##
## director dom_norma
## Dr. Alejandro Fernández : 1 ARANGUREN, JUAN F., DR. 2701 : 1
## Dr. Armando Escobar : 1 BRANDSEN 2570 : 1
## Dr. Bolla Horacio Alberto : 1 CALDERON DE LA BARCA, PEDRO 1550: 1
## Dr. Cichero Carlos : 1 CARRILLO, RAMON, DR. 315 : 1
## Dr. Daniel Cichello : 1 CARRILLO, RAMON, DR. 375 : 1
## Dr. Eduardo Fernández Rostello: 1 CASEROS AV. 2061 : 1
## (Other) :30 (Other) :30
## calle_altura.2 calle_altura.3 barrio
## Min. : 15.0 BRANDSEN 2570 : 1 Barracas : 6
## 1st Qu.: 924.8 CASEROS 2061 : 1 Parque Patricios: 5
## Median :2041.0 CERVIÑO 3356 : 1 Caballito : 4
## Mean :2074.1 COMBATE DE LOS POZOS 1881 : 1 Recoleta : 3
## 3rd Qu.:2776.2 COMBATIENTES DE MALVINAS 3002: 1 Boca : 2
## Max. :5044.0 CORBETA PI Y MARGAL 750 : 1 Flores : 2
## (Other) :30 (Other) :14
## comuna codigo_postal codigo_postal_argentino
## Comuna 4 :13 Min. :1155 C1275AHG: 2
## Comuna 6 : 4 1st Qu.:1271 : 1
## Comuna 2 : 3 Median :1406 C1155AHD: 1
## Comuna 10: 2 Mean :1349 C1169AAB: 1
## Comuna 11: 2 3rd Qu.:1425 C1212AAA: 1
## Comuna 15: 2 Max. :1439 C1221ADC: 1
## (Other) :10 NA's :1 (Other) :29
La Ciudad de Buenos Aires cuenta con 36 hospitales.
Armamos el mapa correspondiente a la ciudad elegida:
bbox_CABA <- getbb("Ciudad Autónoma de Buenos Aires, Buenos Aires, Argentina")
mapa_CABA <- get_stamenmap(bbox = bbox_CABA,
zoom=12)
ggmap(mapa_CABA)+
labs(title="Ciudad Autónoma de Buenos Aires",
caption="Fuente: Open Street Map")+
theme_void()
Ubicamos los hospitales y barrios sobre el mapa de CABA y visualizamos:
ggmap(mapa_CABA)+
geom_sf(data = barrios, inherit.aes = FALSE)+
geom_point(data = hospitales, aes(x=long, y=lat), inherit.aes = FALSE)+
labs(title="Ciudad Autónoma de Buenos Aires", subtitle = "Hospitales y Barrios",
caption="Fuente: Open Street Map")+
theme_void()
Elegimos para trabajar el barrio de Caballito. calculamos su centroide:
CABALLITO_centroide <- barrios %>%
st_centroid() %>%
filter(barrio=="CABALLITO")
Transformamos la geometría en coordenadas X e Y para poder realizar, posteriormente, el ruteo:
CABALLITO_centroide <- cbind(CABALLITO_centroide, st_coordinates(CABALLITO_centroide)) %>%
st_set_geometry(NULL) %>%
rename(LON_ORIGEN=X,
LAT_ORIGEN=Y)
hospitales %>%
group_by(barrio) %>%
summarise(cantidad=n()) %>%
mutate(barrio=toupper(barrio)) %>%
left_join(barrios, by="barrio") %>%
ungroup()
## # A tibble: 19 x 6
## barrio cantidad comuna perimetro area geometry
## <chr> <int> <int> <dbl> <dbl> <POLYGON [°]>
## 1 ALMAGRO 1 5 8538. 4.05e6 ((-58.41287 -34.61412, -58.41282 ~
## 2 BALVANE~ 1 3 8376. 4.34e6 ((-58.41192 -34.598, -58.41029 -3~
## 3 BARRACAS 6 4 12790. 7.95e6 ((-58.37034 -34.63293, -58.37028 ~
## 4 BELGRANO 1 13 20610. 8.00e6 ((-58.45057 -34.53561, -58.45066 ~
## 5 BOCA 2 4 20060. 5.04e6 ((-58.35429 -34.62977, -58.35427 ~
## 6 CABALLI~ 4 6 10991. 6.85e6 ((-58.43061 -34.60705, -58.43056 ~
## 7 COGHLAN 1 12 4628. 1.28e6 ((-58.47242 -34.5661, -58.47296 -~
## 8 FLORES 2 7 15772. 8.59e6 ((-58.46041 -34.6568, -58.4609 -3~
## 9 LINIERS 1 9 9257. 4.37e6 ((-58.51925 -34.63301, -58.51908 ~
## 10 MONTE C~ 2 10 7361. 2.63e6 ((-58.50349 -34.62403, -58.50467 ~
## 11 PALERMO 1 14 22127. 1.58e7 ((-58.42676 -34.55202, -58.42676 ~
## 12 PARQUE ~ 1 15 4531. 1.39e6 ((-58.47082 -34.58745, -58.47082 ~
## 13 PARQUE ~ 5 4 7878. 3.74e6 ((-58.41037 -34.6483, -58.4121 -3~
## 14 PATERNAL 1 15 7088. 2.23e6 ((-58.46558 -34.59656, -58.46562 ~
## 15 RECOLETA 3 2 21453. 6.32e6 ((-58.38 -34.57002, -58.38002 -34~
## 16 SAN CRI~ 1 3 5987. 2.04e6 ((-58.39155 -34.62156, -58.39149 ~
## 17 VILLA D~ 1 11 11562. 6.40e6 ((-58.50831 -34.61392, -58.50847 ~
## 18 VILLA G~ 1 11 6290. 2.16e6 ((-58.4714 -34.61904, -58.47162 -~
## 19 VILLA S~ 1 8 12442. 8.69e6 ((-58.44913 -34.65117, -58.44883 ~
Mapeamos el centroide de Caballito y los 36 hospitales de la Ciudad:
ggplot()+
geom_sf(data=barrios, fill="gray90", color="white")+
geom_point(data=CABALLITO_centroide, aes(x=LON_ORIGEN, y=LAT_ORIGEN, color=barrio), shape=4, stroke=2, size=2)+
geom_point(data=hospitales, aes(x=long, y=lat), size=1.5)+
scale_fill_gradient(low="gold", high= "deeppink4")+
scale_color_manual(values = c("turquoise4", "magenta4"))+
labs(title = "Ciudad Autónoma de Buenos Aires",
subtitle = "Hospitales y Barrios",
caption= "Fuente: Elaboración propia en base a datos de BAData",
color="Barrio")+
theme_void()
2. Según la opción elegida en el punto 1, deberán:
2.a. Viajes origen-destino: Calcular los 10 recorridos más realizados, describir los resultados obtenidos y hacer un mapa con los ruteos.
2.b. Servicios esenciales: Estimar la distancia entre el centroide calculado en el punto 1 y los ítems que componen la capa descargada. Describir los resultados obtenidos y hacer un mapa con los ruteos.
Continuando con la opción 2.b, generamos los pasos necesarios para calcular la distancia entre el centroide del barrio Caballito y los hospitales.
Comenzamos armando la función:
ruteo_hospitales <- 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)
}
Generamos un nuevo dataset que establece las coordenadas del centroide de Caballito como punto de origen y las coordenadas de los hospitales como puntos de destino:
h_caballito <- hospitales %>%
mutate(NOMBRE_ORIGEN="CABALLITO") %>%
left_join(CABALLITO_centroide, by=c("NOMBRE_ORIGEN"="barrio")) %>%
rename(NOMBRE_DESTINO=nombre,
LON_DESTINO=long,
LAT_DESTINO=lat) %>%
select(NOMBRE_ORIGEN, LON_ORIGEN, LAT_ORIGEN, NOMBRE_DESTINO, LON_DESTINO, LAT_DESTINO)
Observamos el nuevo dataset:
head(h_caballito)
## NOMBRE_ORIGEN LON_ORIGEN LAT_ORIGEN
## 1 CABALLITO -58.4436 -34.61683
## 2 CABALLITO -58.4436 -34.61683
## 3 CABALLITO -58.4436 -34.61683
## 4 CABALLITO -58.4436 -34.61683
## 5 CABALLITO -58.4436 -34.61683
## 6 CABALLITO -58.4436 -34.61683
## NOMBRE_DESTINO LON_DESTINO
## 1 HOSPITAL GENERAL DE NIÑOS PEDRO DE ELIZALDE -58.37755
## 2 HOSPITAL GENERAL DE NIÑOS RICARDO GUTIERREZ -58.41207
## 3 HOSPITAL DE ODONTOLOGIA DR. RAMON CARRILLO (EX NACIONAL) -58.40273
## 4 HOSPITAL DE SALUD MENTAL BRAULIO MOYANO -58.38516
## 5 HOSPITAL DE GASTROENTEROLOGIA B. UDAONDO -58.39131
## 6 INSTITUTO DE ZOONOSIS L. PASTEUR -58.43494
## LAT_DESTINO
## 1 -34.62885
## 2 -34.59419
## 3 -34.58453
## 4 -34.63940
## 5 -34.63415
## 6 -34.60847
Armamos la lista para aplicar el correspondiente ruteo:
ruteo_caballito <- list(h_caballito$NOMBRE_ORIGEN, h_caballito$LON_ORIGEN,h_caballito$LAT_ORIGEN,
h_caballito$NOMBRE_DESTINO, h_caballito$LON_DESTINO,h_caballito$LAT_DESTINO)
Unimos la función creada y la lista:
ruteo <- pmap(ruteo_caballito, ruteo_hospitales) %>%
reduce(rbind)
Observamos los resultados para obtener conclusiones:
ruteo %>%
summary()
## ORIGEN DESTINO src dst
## Length:36 Length:36 Length:36 Length:36
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## duration distance geometry
## Min. : 2.810 Min. : 1.466 LINESTRING :36
## 1st Qu.: 7.784 1st Qu.: 4.566 epsg:4326 : 0
## Median :11.617 Median : 6.984 +proj=long...: 0
## Mean :10.648 Mean : 6.366
## 3rd Qu.:13.719 3rd Qu.: 8.313
## Max. :17.160 Max. :11.258
Mapeamos las geometrías:
ggmap(mapa_CABA)+
geom_sf(data=ruteo, color="darkgreen", size=1.2, inherit.aes = FALSE)+
labs(title="Ciudad Autónoma de Buenos Aires",
subtitle="Ruteo a Hospitales desde el centro de Caballito",
caption="Fuente: Elaboración propia en base a datos de BAData")+
scale_color_viridis_c(direction=-1)+
theme_void()
¿Cuál es el Hospital más cercano al centro de Caballito?
filter(ruteo, distance == min(distance))$DESTINO
## [1] "HOSPITAL GENERAL DE AGUDOS DR. C. DURAND"
La respuesta es el Hospital Durand.
¿Cuáles son los 5 hospitales que tienen menor distancia al centro de Caballito?
ruteo5 <- ruteo %>%
arrange(distance) %>%
head(5) %>%
left_join(h_caballito, by=c("DESTINO"="NOMBRE_DESTINO")) %>%
mutate(RUTA = paste("Desde", ORIGEN,"hasta", DESTINO))
ruteo5$DESTINO
## [1] "HOSPITAL GENERAL DE AGUDOS DR. C. DURAND"
## [2] "HOSPITAL DE QUEMADOS DR. ARTURO UMBERTO ILLIA"
## [3] "INSTITUTO DE ZOONOSIS L. PASTEUR"
## [4] "HOSPITAL MUNICIPAL DE ONCOLOGIA MARIE CURIE"
## [5] "HOSPITAL DE ODONTOLOGIA JOSE DUEÑAS"
En la lista anterior se pueden ver los 5 hospitales más cercanos al centro de Caballito, siendo el Hospital Durand el más cercano y el Hospital Dueñas el más alejado dentro de este corte.
Creamos los mapas con los ruteos.
En primer lugar, mapeamos los 5 ruteos a los hospitales más cercanos desde el centro de Caballito:
paleta <- c(low="gold", high= "deeppink4")
icons_d <- awesomeIcons(icon = "hospital-o",
iconColor = "black",
library = "fa",
markerColor = "red")
icons_o <- awesomeIcons(icon = "whatever",
iconColor = "black",
library = "fa",
markerColor = "gray")
labels <- sprintf(
"<strong>%s</strong><br/>%g km <br/>%g min",
ruteo5$RUTA, round(ruteo5$distance, 2), round(ruteo5$duration, 0)
) %>% lapply(htmltools::HTML)
leaflet(ruteo5) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB) %>%
addPolylines(color = ~colorNumeric(paleta, ruteo5$distance)(distance),
weight = 6,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "2px 5px"),
textsize = "10px",
direction = "top"),
highlight = highlightOptions(weight = 8,
bringToFront = TRUE)) %>%
addLegend("bottomright", pal = colorNumeric(paleta, ruteo5$distance), values = ~distance,
title = "Distancia",
labFormat = labelFormat(suffix = "km"),
opacity = 0.75) %>%
addAwesomeMarkers(~LON_DESTINO, ~LAT_DESTINO, popup = ~DESTINO, icon=icons_d)%>%
addAwesomeMarkers(~LON_ORIGEN, ~LAT_ORIGEN, popup = ~ORIGEN, icon=icons_o)
En segundo lugar, mapeamos los ruteos desde el centro de Caballito a la totalidad de 36 hospitales de la Ciudad:
ruteo36 <- ruteo %>%
arrange(distance) %>%
head(36) %>%
left_join(h_caballito, by=c("DESTINO"="NOMBRE_DESTINO")) %>%
mutate(RUTA = paste("Desde", ORIGEN,"hasta", DESTINO))
leaflet(ruteo36) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB) %>%
addPolylines(color = ~colorNumeric(paleta, ruteo36$distance)(distance),
weight = 6,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "2px 5px"),
textsize = "10px",
direction = "top"),
highlight = highlightOptions(weight = 8,
bringToFront = TRUE)) %>%
addLegend("bottomright", pal = colorNumeric(paleta, ruteo36$distance), values = ~distance,
title = "Distancia",
labFormat = labelFormat(suffix = "km"),
opacity = 0.75) %>%
addAwesomeMarkers(~LON_DESTINO, ~LAT_DESTINO, popup = ~DESTINO, icon=icons_d)%>%
addAwesomeMarkers(~LON_ORIGEN, ~LAT_ORIGEN, popup = ~ORIGEN, icon=icons_o)
Hasta aquí, calculamos el tiempo y la distancia de los ruteos desde el centro de Caballito hasta los hospitales de la Ciudad, considerando que el trayecto se realiza en automóvil.
Primero, realizamos el mismo procedimiento aplicado a la posibilidad de trasladarse en bicicleta.
Armamos una nueva función:
ruteo_hospitales_bike <- 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",
osrm.profile = "bike")
cbind(ORIGEN = o_nombre, DESTINO = d_nombre, ruta)
}
Unimos la función creada y la lista original:
ruteo_bike <- pmap(ruteo_caballito, ruteo_hospitales_bike) %>%
reduce(rbind)
Observamos los resultados para obtener conclusiones:
ruteo_bike %>%
summary()
## ORIGEN DESTINO src dst
## Length:36 Length:36 Length:36 Length:36
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## duration distance geometry
## Min. : 6.63 Min. : 1.466 LINESTRING :36
## 1st Qu.:19.38 1st Qu.: 4.481 epsg:4326 : 0
## Median :27.21 Median : 6.368 +proj=long...: 0
## Mean :25.95 Mean : 5.974
## 3rd Qu.:34.78 3rd Qu.: 8.024
## Max. :44.73 Max. :10.351
Mapeamos el ruteo en bicicleta a los 10 hospitales más cercanos al centro de Caballito:
ruteo_bike_10 <- ruteo_bike %>%
arrange(distance) %>%
head(10) %>%
left_join(h_caballito, by=c("DESTINO"="NOMBRE_DESTINO")) %>%
mutate(RUTA = paste("Desde", ORIGEN,"hasta", DESTINO))
leaflet(ruteo_bike_10) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB) %>%
addPolylines(color = ~colorNumeric(paleta, ruteo_bike_10$distance)(distance),
weight = 6,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "2px 5px"),
textsize = "10px",
direction = "top"),
highlight = highlightOptions(weight = 8,
bringToFront = TRUE)) %>%
addLegend("bottomright", pal = colorNumeric(paleta, ruteo_bike_10$distance), values = ~distance,
title = "Distancia",
labFormat = labelFormat(suffix = "km"),
opacity = 0.75) %>%
addAwesomeMarkers(~LON_DESTINO, ~LAT_DESTINO, popup = ~DESTINO, icon=icons_d)%>%
addAwesomeMarkers(~LON_ORIGEN, ~LAT_ORIGEN, popup = ~ORIGEN, icon=icons_o)
A continuación, realizamos el mismo procedimiento aplicado a la posibilidad de trasladarse a pie.
ruteo_hospitales_foot <- 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",
osrm.profile = "foot")
cbind(ORIGEN = o_nombre, DESTINO = d_nombre, ruta)
}
ruteo_foot <- pmap(ruteo_caballito, ruteo_hospitales_foot) %>%
reduce(rbind)
Observamos los resultados para obtener conclusiones:
ruteo_foot %>%
summary()
## ORIGEN DESTINO src dst
## Length:36 Length:36 Length:36 Length:36
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## duration distance geometry
## Min. : 17.91 Min. :1.328 LINESTRING :36
## 1st Qu.: 55.74 1st Qu.:4.155 epsg:4326 : 0
## Median : 83.06 Median :6.144 +proj=long...: 0
## Mean : 76.69 Mean :5.694
## 3rd Qu.:101.58 3rd Qu.:7.523
## Max. :134.65 Max. :9.995
Mapeamos el ruteo ¨a pie a los 10 hospitales más cercanos al centro de Caballito:
ruteo_foot_10 <- ruteo_foot %>%
arrange(distance) %>%
head(10) %>%
left_join(h_caballito, by=c("DESTINO"="NOMBRE_DESTINO")) %>%
mutate(RUTA = paste("Desde", ORIGEN,"hasta", DESTINO))
leaflet(ruteo_foot_10) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB) %>%
addPolylines(color = ~colorNumeric(paleta, ruteo_foot_10$distance)(distance),
weight = 6,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "2px 5px"),
textsize = "10px",
direction = "top"),
highlight = highlightOptions(weight = 8,
bringToFront = TRUE)) %>%
addLegend("bottomright", pal = colorNumeric(paleta, ruteo_foot_10$distance), values = ~distance,
title = "Distancia",
labFormat = labelFormat(suffix = "km"),
opacity = 0.75) %>%
addAwesomeMarkers(~LON_DESTINO, ~LAT_DESTINO, popup = ~DESTINO, icon=icons_d)%>%
addAwesomeMarkers(~LON_ORIGEN, ~LAT_ORIGEN, popup = ~ORIGEN, icon=icons_o)
Si comparamos lás 2 últimas visualizaciones, se pueden ver las diferencias entre las rutas propuestas para movilizarse en bicicleta y las rutas sugeridas para realizar a pie.