Trabajo Práctico N5: “Analizando y visualizando flujo de viajes urbanos”
La ciudad con la que vamos a continuar trabajando es la Ciudad Autónoma de Buenos Aires
a. 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 céntrico y uno periférico del shape de barrios y calcular ambos centroides. Los datos pueden ser descargados del portal open data de la ciudad o de OSM y deben tener ubicación geográfica.
library(tidyverse)
## -- 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
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library(osrm)
## Data: (c) OpenStreetMap contributors, ODbL 1.0 - http://www.openstreetmap.org/copyright
## Routing: OSRM - http://project-osrm.org/
library(leaflet)
Dataset:Establecimientos educativos
Barrio Céntrico: Balvanera
Barrio Periférico: Mataderos
educativos <- read.csv("D:/Documents/01-Ditella/Ciencia de datos2/Clase 5/establecimientos-educativos.csv", encoding="UTF-8")
head(educativos)
## long lat objectid cui cueanexo cue anexo sector
## 1 -58.51270 -34.60059 1 200794 20046500 200465 0 1
## 2 -58.40957 -34.62755 2 202368 20146700 201467 0 2
## 3 -58.47019 -34.56568 3 202343 20055900 200559 0 1
## 4 -58.40036 -34.58485 4 200063 20290700 202907 0 1
## 5 -58.42655 -34.60338 5 200084 20147803 201478 3 1
## 6 -58.46795 -34.62082 6 200588 20022003 200220 3 1
## dom_edific dom_establ
## 1 Mercedes 4002 Mercedes 4002
## 2 Constitución 3156 Constitución 3156
## 3 Blanco Encalada 3479 Blanco Encalada 3471
## 4 Avda. Gral. Las Heras 2670 Avda. Gral. Las Heras 2670
## 5 Obrero Roberto Núñez 4355 Obrero Roberto Núñez 4355
## 6 Gral. José Gervasio de Artigas 878 Gral. José Gervasio de Artigas 878
## nombre_estab nombre_abrev telefono
## 1 Centro Educativo de Nivel Secundario N° 65 CENS 65 4501-9054
## 2 Inst. 9 de Julio I 9 de Julio 4931-9299
## 3 Escuela Infantil N° 06/10° Madre Eufrasia Iaconis EI 06/10 4545-3354
## 4 Escuela Infantil N° 08/01° EI 08/01 4804-9003
## 5 Jardín de Infantes Nucleado C (EPCjc 11/02°) JIN C-03 (11) 4867-2749
## 6 Jardín de Infantes Nucleado A (EPCjc 05/12°) JIN A-03 (05) 4611-5436
## email codpost
## 1 deaa_cens65_de1@bue.edu.ar C1419
## 2 institutoprivado9dejulio@yahoo.com.ar C1254
## 3 ei6_10@yahoo.com.ar C1430
## 4 dei_ei8de1@bue.edu.ar / escuelainfantil8de1@gmail.com C1425
## 5 dei_jinc17_de2@bue.edu.ar C1429
## 6 jinade12@yahoo.com.ar C1404
## pagina_web
## 1 http://www.buenosaires.gob.ar/educacion/estudiantes/adultos/secundaria
## 2 http://www.buenosaires.gob.ar/areas/educacion/gestion_privada/index.php?menu_id=19676
## 3 http://www.buenosaires.gob.ar/educacion/estudiantes/inicial?menu_id=9759
## 4 http://www.buenosaires.gob.ar/educacion/estudiantes/inicial?menu_id=9759
## 5 http://www.buenosaires.gob.ar/educacion/estudiantes/inicial?menu_id=9759
## 6 http://www.buenosaires.gob.ar/educacion/estudiantes/inicial?menu_id=9759
## nivmod nivelmodal
## 1 SecAdu Nivel Secundario de Jóvenes y Adultos
## 2 SecCom Nivel Secundario Común
## 3 IniCom Nivel Inicial Común
## 4 IniCom Nivel Inicial Común
## 5 IniCom Nivel Inicial Común
## 6 IniCom Nivel Inicial Común
## depfun de
## 1 Dir de Educación del Adulto y del Adolescente 17
## 2 Dir Gral de Educación de Gestión Privada 6
## 3 Dir de Educación Inicial 10
## 4 Dir de Educación Inicial 1
## 5 Dir de Educación Inicial 2
## 6 Dir de Educación Inicial 12
## calle_nombre calle_altura comunas barrio
## 1 Mercedes 4002 11 VILLA DEVOTO
## 2 Constitución 3156 3 SAN CRISTOBAL
## 3 Blanco Encalada 3471 13 BELGRANO
## 4 Avda. Gral. Las Heras 2670 2 RECOLETA
## 5 Obrero Roberto Nú 4355 5 ALMAGRO
## 6 Gral. José Gervasio de Artigas 878 7 FLORES
## codigo_postal codigo_postal_argentino areaprogra estado point_x
## 1 1419 C1419BGJ 12 - HOSP ZUBIZARRETA 1 95468.38
## 2 1254 C1254ABB 08 - HOSP RAMOS MEJIA 1 104926.83
## 3 1430 C1430BNC 07 - HOSP PIROVANO 1 99367.47
## 4 1425 C1425ASQ 04 - HOSP FERNANDEZ 1 105774.80
## 5 1182 C1182AAA 03 - HOSP DURAND 1 103371.19
## 6 NA 01 - HOSP ALVAREZ 1 99573.20
## point_y tipest
## 1 103180.9 Centro Educativo de Nivel Secundario
## 2 100190.1 Instituto Educativo Incorporado a la Enseñanza Oficial
## 3 107054.7 Escuela Infantil
## 4 104926.2 Escuela Infantil
## 5 102871.6 Jardín de Infantes Nucleado
## 6 100937.8 Jardín de Infantes Nucleado
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
ggplot() +
geom_sf(data = barrios) +
geom_point(data = educativos,
aes(x = long, y = lat),
alpha = .3,
color = "orange")

b. Servicios esenciales: Estimar la distancia entre los centroides calculados en el punto I y los ítems que componen la capa descargada. Describir los resultados obtenidos y hacer los siguientes mapas:
- Mapa con los ruteos del centroide del barrio céntrico a los ítems de servicios esenciales elegido.
- Mapa con los ruteos del centroide del barrio periférico a los ítems de servicios esenciales elegido.
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="lightyellow")+
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=="BALVANERA" | barrio=="MATADEROS") %>%
mutate(ubicacion=if_else(barrio=="BALVANERA", "CENTRO", "PERIFERIA"))
barrios_centroides <- cbind(barrios_centroides, st_coordinates(barrios_centroides)) %>%
st_set_geometry(NULL)
ggplot()+
geom_sf(data=barrios, fill="gray80")+
geom_point(data=barrios_centroides, aes(x=X, y=Y, color=ubicacion), size=4)+
geom_point(data=educativos, aes(x=long, y=lat), color="darkblue")+
geom_point(data=barrios_centroides, aes(x=X, y=Y, color=ubicacion), size=4)+
labs(title = "Barrios de la Ciudad",
subtitle = "Ubicación de los centroides",
color="Barrios",
caption= "Fuente:https://data.buenosaires.gob.ar/")+
theme_void()

ruteo_a_educativos <- 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)
}
Hacemos los ruteos del centroide del barrio céntrico a los centros educativos
educativos_balvanera <- educativos %>%
mutate(ORIGEN="BALVANERA") %>%
left_join(barrios_centroides, by=c("ORIGEN"="barrio")) %>%
rename(NOMBRE_ORIGEN=ORIGEN,
LON_ORIGEN=X,
LAT_ORIGEN=Y,
NOMBRE_DESTINO=nombre_estab,
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
head(educativos_balvanera)
## NOMBRE_ORIGEN LON_ORIGEN LAT_ORIGEN
## 1 BALVANERA -58.40306 -34.6091
## 2 BALVANERA -58.40306 -34.6091
## 3 BALVANERA -58.40306 -34.6091
## 4 BALVANERA -58.40306 -34.6091
## 5 BALVANERA -58.40306 -34.6091
## 6 BALVANERA -58.40306 -34.6091
## NOMBRE_DESTINO LON_DESTINO LAT_DESTINO
## 1 Centro Educativo de Nivel Secundario N° 65 -58.51270 -34.60059
## 2 Inst. 9 de Julio -58.40957 -34.62755
## 3 Escuela Infantil N° 06/10° Madre Eufrasia Iaconis -58.47019 -34.56568
## 4 Escuela Infantil N° 08/01° -58.40036 -34.58485
## 5 Jardín de Infantes Nucleado C (EPCjc 11/02°) -58.42655 -34.60338
## 6 Jardín de Infantes Nucleado A (EPCjc 05/12°) -58.46795 -34.62082
ruteo_balvanera <- list(educativos_balvanera$NOMBRE_ORIGEN, educativos_balvanera$LON_ORIGEN,educativos_balvanera$LAT_ORIGEN,
educativos_balvanera$NOMBRE_DESTINO, educativos_balvanera$LON_DESTINO,educativos_balvanera$LAT_DESTINO)
ruteo_centrico <- pmap(ruteo_balvanera, ruteo_a_educativos ) %>%
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.40612 ymin: -34.60911 xmax: -58.40337 ymax: -34.60754
## CRS: EPSG:4326
## ORIGEN DESTINO src dst
## 1 BALVANERA Centro Educativo de Nivel Primario N° 58 - AMMAR BALVANERA 379
## duration distance geometry
## 1 3.638333 0.523 LINESTRING (-58.40337 -34.6...
## RUTA
## 1 BALVANERA a Centro Educativo de Nivel Primario N° 58 - AMMAR
El más cercano a Balvanera es el Centro Educativo de Nivel Primario N° 58, que se encuentra a 0,52km y la duración del viaje estimada es de 3,64 minutos.
leaflet(ruteo_centrico) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolylines(color = ~colorNumeric("BrBG", ruteo_centrico$distance)(distance),
label = ruteo_centrico$RUTA %>%
lapply(htmltools::HTML)) %>%
addLegend("bottomright", pal = colorNumeric("BrBG", ruteo_centrico$distance), values = ~distance,
title = "Distancia",
opacity = 0.55)
Hacemos los ruteos del centroide del barrio periférico a los centros educativos
educativos_mataderos <- educativos %>%
mutate(ORIGEN="MATADEROS") %>%
left_join(barrios_centroides, by=c("ORIGEN"="barrio")) %>%
rename(NOMBRE_ORIGEN=ORIGEN,
LON_ORIGEN=X,
LAT_ORIGEN=Y,
NOMBRE_DESTINO=nombre_estab,
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
head(educativos_mataderos)
## NOMBRE_ORIGEN LON_ORIGEN LAT_ORIGEN
## 1 MATADEROS -58.50174 -34.65837
## 2 MATADEROS -58.50174 -34.65837
## 3 MATADEROS -58.50174 -34.65837
## 4 MATADEROS -58.50174 -34.65837
## 5 MATADEROS -58.50174 -34.65837
## 6 MATADEROS -58.50174 -34.65837
## NOMBRE_DESTINO LON_DESTINO LAT_DESTINO
## 1 Centro Educativo de Nivel Secundario N° 65 -58.51270 -34.60059
## 2 Inst. 9 de Julio -58.40957 -34.62755
## 3 Escuela Infantil N° 06/10° Madre Eufrasia Iaconis -58.47019 -34.56568
## 4 Escuela Infantil N° 08/01° -58.40036 -34.58485
## 5 Jardín de Infantes Nucleado C (EPCjc 11/02°) -58.42655 -34.60338
## 6 Jardín de Infantes Nucleado A (EPCjc 05/12°) -58.46795 -34.62082
ruteo_mataderos<- list(educativos_mataderos$NOMBRE_ORIGEN, educativos_mataderos$LON_ORIGEN,educativos_mataderos$LAT_ORIGEN,
educativos_mataderos$NOMBRE_DESTINO, educativos_mataderos$LON_DESTINO,educativos_mataderos$LAT_DESTINO)
ruteo_periferico <- pmap(ruteo_mataderos, ruteo_a_educativos) %>%
reduce(rbind)
ruteo_periferico <-mutate(ruteo_periferico, RUTA = paste(ORIGEN,"a", DESTINO))
filter(ruteo_periferico, distance == min(distance))
## Simple feature collection with 2 features and 7 fields
## geometry type: LINESTRING
## dimension: XY
## bbox: xmin: -58.50088 ymin: -34.65909 xmax: -58.49938 ymax: -34.6582
## CRS: EPSG:4326
## ORIGEN DESTINO src dst
## 1 MATADEROS Esc. Técnica Nº 20 MATADEROS 1337
## 2 MATADEROS Centro de Formación Profesional N° 36 anexo2 MATADEROS 269
## duration distance geometry
## 1 0.6016667 0.1922 LINESTRING (-58.50088 -34.6...
## 2 0.6016667 0.1922 LINESTRING (-58.50088 -34.6...
## RUTA
## 1 MATADEROS a Esc. Técnica Nº 20
## 2 MATADEROS a Centro de Formación Profesional N° 36 anexo2