#Obtengo "marco" de la ciudad:
bbox<-getbb("Córdoba, Municipio de Córdoba, Pedanía Capital, Departamento Capital, Córdoba, X5000, Argentina")

#Obtengo perimetro de la ciudad:
bbox_poly<-getbb("Córdoba, Municipio de Córdoba, Pedanía Capital, Departamento Capital, Córdoba, X5000, Argentina", format_out = "sf_polygon")

#Grafico resultado para comprobar:
leaflet(bbox_poly)%>%
  addTiles()%>%
  addPolygons()
#Obtengo vialidades de open street map:
cordoba<-opq(bbox)%>%
  add_osm_feature(key="highway")

#Redefino el dataset como espacial y descarga toda la informacion de osm:
cordoba<-cordoba%>%
  osmdata_sf()
cordoba
#Genero el dataframe "calles" que contendra todas las lineas del mapa descargado:
calles<-cordoba$osm_lines

#Visualizo los resultados:
ggplot()+
  geom_sf(data=calles,size=.1)+
  labs(title="Ciudad de Cordoba",
       subtitle="Vialidades OSM",
       caption="Fuente: Open Street Maps")

#Recorto los poligonos que sobresalen del bounding box:
calles<-st_intersection(calles,bbox_poly)

#Verifico resultados:
ggplot()+
  geom_sf(data=calles,size=.1)+
  labs(title="Ciudad de Cordoba",
       subtitle="Vialidades OSM",
       caption="Fuente: Open Street Map")

#Grafico los atributos disponibles de calles (Tipo de calle):
ggplot()+
  geom_sf(data=filter(calles,!highway=="unclassified"),aes(color=highway),size=.1)+
  scale_color_viridis_d()+
  labs(title="Ciudad de Cordoba",
       subtitle="Vialidades OSM",
       color="Categorias",
       caption="Fuente: Open Street Map")

#Grafico los atributos disponibles de calles (Tipo de calle):
ggplot()+
  geom_sf(data=calles,size=.04,color="gray36")+
  geom_sf(data=filter(calles,highway=="secondary"|highway=="secondary_link"),color="orange",size=.2)+
  geom_sf(data=filter(calles,highway=="primary"|highway=="primary_link"),color="red",size=.2)+
  geom_sf(data=filter(calles,highway=="motorway"|highway=="motorway_link"|highway=="trunk"|highway=="trunk_link"),color="blue",size=.2)+
  labs(title="Ciudad de Cordoba",
       subtitle="Vialidades segun importancia",
       caption="Fuente: Open Street Map")

#Descargo establecimientos educativos:
cordoba_osm_school<-opq(bbox_poly,timeout = 60)%>%
  add_osm_feature(key="amenity",value="school")%>%
  osmdata_sf()
cordoba_osm_college<-opq(bbox_poly,timeout = 60)%>%
  add_osm_feature(key="amenity",value="college")%>%
  osmdata_sf()
cordoba_osm_university<-opq(bbox_poly,timeout = 60)%>%
  add_osm_feature(key="amenity",value="university")%>%
  osmdata_sf()

#Refino los resultados a puntos dentro del area de la ciudad:
cordoba_osm_school<-st_intersection(cordoba_osm_school$osm_points,bbox_poly)
cordoba_osm_college<-st_intersection(cordoba_osm_college$osm_points,bbox_poly)
cordoba_osm_university<-st_intersection(cordoba_osm_university$osm_points,bbox_poly)
#Ploteo los resultados para verificar:
ggplot()+
  geom_sf(data=calles,size=.07)+
  geom_sf(data=cordoba_osm_school,color="red")+
  geom_sf(data=cordoba_osm_college,color="orange")+
  geom_sf(data=cordoba_osm_university,color="blue")+
  labs(title="Ciudad de Cordoba",
       subtitle="Establecimientos Educativos OSM",
       caption="Fuente: Open Street Map")

#Analizo categoria school por barrios

barrios<-st_read("Barrio.shp")
## Reading layer `Barrio' from data source `/Users/santiago/Google Drive/DRIVE MEU/- CIENCIA DE DATOS 2/Barrio.shp' using driver `ESRI Shapefile'
## replacing null geometries with empty geometries
## Simple feature collection with 503 features and 4 fields (with 1 geometry empty)
## geometry type:  GEOMETRY
## dimension:      XY
## bbox:           xmin: 4375309 ymin: 6512169 xmax: 4399439 ymax: 6536199
## proj4string:    +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +datum=WGS84 +units=m +no_defs
barrios<-st_transform(barrios,crs=4326)
school_barrio<-st_join(cordoba_osm_school,barrios)
school_barrio_agrup<-school_barrio %>% 
  filter(!is.na(Nombre)) %>% 
  group_by(Nombre) %>% 
  summarise(schools=n())
school_barrio_agrup_nogeo<-school_barrio_agrup %>% 
  st_set_geometry(NULL)
barrios_school<-barrios %>% 
  left_join(school_barrio_agrup_nogeo,by="Nombre")
ggplot()+
  geom_sf(data=calles,size=.02,color="gray36")+
  geom_sf(data=barrios_school,aes(fill=schools),color=NA,alpha=.7)+
  scale_fill_viridis_c()+
  labs(title="Ciudad de Cordoba",
       subtitle="Categoria School por barrio",
       fill="Cantidad de establecimientos School",
       caption="Fuente: Open Street Map")

#Analizo categoria college por barrios

barrios<-st_read("Barrio.shp")
## Reading layer `Barrio' from data source `/Users/santiago/Google Drive/DRIVE MEU/- CIENCIA DE DATOS 2/Barrio.shp' using driver `ESRI Shapefile'
## replacing null geometries with empty geometries
## Simple feature collection with 503 features and 4 fields (with 1 geometry empty)
## geometry type:  GEOMETRY
## dimension:      XY
## bbox:           xmin: 4375309 ymin: 6512169 xmax: 4399439 ymax: 6536199
## proj4string:    +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +datum=WGS84 +units=m +no_defs
barrios<-st_transform(barrios,crs=4326)
college_barrio<-st_join(cordoba_osm_college,barrios)
college_barrio_agrup<-college_barrio %>% 
  filter(!is.na(Nombre)) %>% 
  group_by(Nombre) %>% 
  summarise(colleges=n())
college_barrio_agrup_nogeo<-college_barrio_agrup %>% 
  st_set_geometry(NULL)
barrios_college<-barrios %>% 
  left_join(college_barrio_agrup_nogeo,by="Nombre")
ggplot()+
  geom_sf(data=calles,size=.02,color="gray36")+
  geom_sf(data=barrios_college,aes(fill=colleges),color=NA,alpha=.7)+
  scale_fill_viridis_c()+
  labs(title="Ciudad de Cordoba",
       subtitle="Categoria College por barrio",
       fill="Cantidad de establecimientos College",
       caption="Fuente: Open Street Map")

#Analizo categoria University por barrios

barrios<-st_read("Barrio.shp")
## Reading layer `Barrio' from data source `/Users/santiago/Google Drive/DRIVE MEU/- CIENCIA DE DATOS 2/Barrio.shp' using driver `ESRI Shapefile'
## replacing null geometries with empty geometries
## Simple feature collection with 503 features and 4 fields (with 1 geometry empty)
## geometry type:  GEOMETRY
## dimension:      XY
## bbox:           xmin: 4375309 ymin: 6512169 xmax: 4399439 ymax: 6536199
## proj4string:    +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +datum=WGS84 +units=m +no_defs
barrios<-st_transform(barrios,crs=4326)
university_barrio<-st_join(cordoba_osm_university,barrios)
university_barrio_agrup<-university_barrio %>% 
  filter(!is.na(Nombre)) %>% 
  group_by(Nombre) %>% 
  summarise(universities=n())
university_barrio_agrup_nogeo<-university_barrio_agrup %>% 
  st_set_geometry(NULL)
barrios_university<-barrios %>% 
  left_join(university_barrio_agrup_nogeo,by="Nombre")
ggplot()+
  geom_sf(data=calles,size=.02,color="gray36")+
  geom_sf(data=barrios_university,aes(fill=universities),color=NA,alpha=.7)+
  scale_fill_viridis_c()+
  labs(title="Ciudad de Cordoba",
       subtitle="Categoria University por barrio",
       fill="Cantidad de establecimientos University",
       caption="Fuente: Open Street Map")

#CONCLUSIONES

Comparando los datos analizados de Open Street Maps con los descargados del Instituto Geografico Nacional, se observa que en el primero existen observaciones duplicadas y errores en la interpretacion de las categorias de establecimiento: