El objetivo del presente trabajo es la estimación de poligonos voronoi e identificación de zonas de priorización de creación de nuevos espacios verdes en la Ciudad de Buenos Aires.
espacios_verdes <- st_read('../Modulo_5_Estadistica_Espacial/espacio-verde-publico.shp')%>%
st_transform(3857)
## Reading layer `espacio-verde-publico' from data source `C:\Users\danie\Documents\Big Data e Inteligencia Territorial 2020\Modulo_5_Estadistica_Espacial\espacio-verde-publico.shp' using driver `ESRI Shapefile'
## Warning in CPL_read_ogr(dsn, layer, query, as.character(options), quiet, : GDAL
## Message 1: One or several characters couldn't be converted correctly from CP1252
## to UTF-8. This warning will not be emitted anymore
## Simple feature collection with 1736 features and 36 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -58.53175 ymin: -34.70557 xmax: -58.33983 ymax: -34.52657
## geographic CRS: WGS 84
barrios <- st_read('../Modulo_5_Estadistica_Espacial/barrios_badata.shp') %>%
st_transform(4326)
## Reading layer `barrios_badata' from data source `C:\Users\danie\Documents\Big Data e Inteligencia Territorial 2020\Modulo_5_Estadistica_Espacial\barrios_badata.shp' using driver `ESRI Shapefile'
## Simple feature collection with 48 features and 5 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: 93743.42 ymin: 91566.42 xmax: 111751.4 ymax: 111401.7
## projected CRS: Argentina_GKBsAs
radios_caba <- st_read('../TP/Nacional_Radios_wgs84.shp') %>%
filter(Provincia=='CABA')%>%
st_transform(3857)
## Reading layer `Nacional_Radios_wgs84' from data source `C:\Users\danie\Documents\Big Data e Inteligencia Territorial 2020\TP\Nacional_Radios_wgs84.shp' using driver `ESRI Shapefile'
## Simple feature collection with 52408 features and 14 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -73.5708 ymin: -55.05562 xmax: -53.6372 ymax: -21.78078
## geographic CRS: WGS 84
str(espacios_verdes)
## Classes 'sf' and 'data.frame': 1736 obs. of 37 variables:
## $ nombre : chr "Escuela Scalabrini Ortiz" NA "Polideportivo Colegiales" NA ...
## $ nombre_ev : chr "ESCUELA Nº 13 D.E. 09 SCALABRINI ORTIZ" "SIN NOMBRE" "POLIDEPORTIVO COLEGIALES" "SIN NOMBRE" ...
## $ clasificac: chr "PLAZOLETA" "PLAZOLETA" "PARQUE" "PLAZOLETA" ...
## $ patio_de_j: chr "NO" "NO" "NO" "NO" ...
## $ apadrinada: chr NA NA NA NA ...
## $ observacio: chr "Redigitalización en Agosto de 2017. Unión de sectores y asignación de nombre" "ESPACIOS VERDES" "Redigitalización por USIG en Agosto de 2017. Unión de sectores y asignación de nombre. Categoría de parque toma"| __truncated__ "ESPACIOS VERDES" ...
## $ fuente_geo: chr "USIG" "USIG" "USIG" "USIG" ...
## $ fuente_ins: chr "USIG" "USIG" "USIG" "USIG" ...
## $ ubicacion : chr "CONDE - MATIENZO, BENJAMIN, TTE. - FREIRE, RAMON, CAP. GRAL." "CONDE - MATIENZO, BENJAMIN, TTE. - FREIRE, RAMON, CAP. GRAL." "CONDE - MATIENZO, BENJAMIN, TTE. - FREIRE, RAMON, CAP. GRAL." "GUIRALDES, INTENDENTE - ESTACIONAMIENTO - PARQUE BALNEARIO NORTE - ESTACIONAMIENTO" ...
## $ decreto : chr NA NA NA NA ...
## $ fecha_decr: chr NA NA NA NA ...
## $ ordenanza_: chr NA NA NA NA ...
## $ fecha_orde: chr NA NA NA NA ...
## $ boletin_of: chr NA NA NA NA ...
## $ fecha_bole: chr NA NA NA NA ...
## $ BARRIO : chr "COLEGIALES" "COLEGIALES" "COLEGIALES" "BELGRANO" ...
## $ COMUNA : num 13 13 13 13 13 13 14 14 14 12 ...
## $ Fech_padri: chr NA NA NA NA ...
## $ Vig_padri : chr NA NA NA NA ...
## $ Alc_conven: chr NA NA NA NA ...
## $ nom_mapa : chr "Esc. Scalabrini Ortiz" NA "Polidep. Colegiales" NA ...
## $ id_ev_pub : int 2 5 6 8 9 10 11 12 13 15 ...
## $ area : num 1658.27 3.98 4686.06 3746.97 558.99 ...
## $ perimeter : num 0 0 0 100 9990 ...
## $ DGEV_Padri: chr NA NA NA NA ...
## $ Mant_2017 : chr NA NA NA NA ...
## $ TAREAS : chr NA NA NA NA ...
## $ ESTADO : chr NA NA NA NA ...
## $ SUP_TOTAL : num 0 0 0 0 0 ...
## $ Canil : chr NA NA NA NA ...
## $ Posta_aero: chr NA NA NA NA ...
## $ Etiqueta : chr NA NA "NO" NA ...
## $ REJA : chr NA NA NA NA ...
## $ Hor_invier: chr NA NA NA NA ...
## $ Hor_verano: chr NA NA NA NA ...
## $ Obs_reja : chr NA NA NA NA ...
## $ geometry :sfc_MULTIPOLYGON of length 1736; first list element: List of 3
## ..$ :List of 1
## .. ..$ : num [1:9, 1:2] -6506107 -6506055 -6506076 -6506083 -6506065 ...
## ..$ :List of 1
## .. ..$ : num [1:81, 1:2] -6506085 -6506032 -6506038 -6506039 -6506039 ...
## ..$ :List of 1
## .. ..$ : num [1:79, 1:2] -6506117 -6506099 -6506100 -6506100 -6506100 ...
## ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
## - attr(*, "sf_column")= chr "geometry"
## - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
## ..- attr(*, "names")= chr [1:36] "nombre" "nombre_ev" "clasificac" "patio_de_j" ...
clasificacion <- espacios_verdes %>%
group_by(clasificac) %>%
summarise(total=n())
## Clasificación de Espacios Verdes para análisis
EV_analisis <- c('PARQUE',
'PLAZA')
espacios_verdes_uso <- espacios_verdes %>%
filter(clasificac %in% EV_analisis)
espacios_verdes_uso_centroides <- st_centroid(espacios_verdes_uso)
## Warning in st_centroid.sf(espacios_verdes_uso): st_centroid assumes attributes
## are constant over geometries of x
tmap_mode("view")
## tmap mode set to interactive viewing
qtm(barrios,fill = NULL, borders="blue")+
qtm(espacios_verdes_uso,fill = 'clasificac')
tmap_mode("view")
## tmap mode set to interactive viewing
qtm(barrios,fill = NULL, borders="blue")+
qtm(espacios_verdes_uso_centroides,fill = 'clasificac')
Cración de áreas de interés (aoi) con el objetivo de definir la extensión de un análisis espacial.
Bounding box del dataset
bb <- st_as_sfc(st_bbox(espacios_verdes_uso_centroides))
bb
## Geometry set for 1 feature
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -6515415 ymin: -4122837 xmax: -6495682 ymax: -4100329
## projected CRS: WGS 84 / Pseudo-Mercator
## POLYGON ((-6515415 -4122837, -6495682 -4122837,...
Buffer de 2000 metros alrededor de todos los puntos
caba <- st_union(radios_caba) %>%
st_transform(., crs = st_crs(espacios_verdes_uso_centroides))
qtm(caba, fill = NULL, borders="blue")
Polígono máximo convexo (convex hull)
ch <- espacios_verdes_uso_centroides %>% st_union()%>% st_convex_hull()
ch
## Geometry set for 1 feature
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -6515415 ymin: -4122837 xmax: -6495682 ymax: -4100329
## projected CRS: WGS 84 / Pseudo-Mercator
## POLYGON ((-6508831 -4122837, -6514421 -4117397,...
Visualización de las áreas de interés
tmap_mode("view")
## tmap mode set to interactive viewing
qtm(espacios_verdes_uso_centroides)+
qtm(bb, fill = NULL, borders="red")+
qtm(caba, fill = NULL, borders = "blue")+
qtm(ch, fill = NULL, borders = "black")
La función sf::st_voronoi requiere que esté instalado GEOS >3.5.0. Geos se instala con el paquete rgeos que es una dependencia de casi todos los paquetes que se usan menos tidyverse.
sf_extSoftVersion()["GEOS"] >= "3.5.0"
## GEOS
## TRUE
Cálculo de polígonos de voronoi con la funcion sf::st_voronoi
** Voronoi1** con codigo basado basado en el post de Gabo Gaona aqui , sin usar envolvente.
voronoi1 <- st_voronoi(do.call(c, st_geometry(espacios_verdes_uso_centroides))) %>%
st_collection_extract() %>%
st_sfc(crs = st_crs(espacios_verdes_uso_centroides)) %>%
st_sf() %>%
st_join(espacios_verdes_uso_centroides)
qtm(voronoi1, fill = NULL)+
qtm(espacios_verdes_uso_centroides)
voronoi2 Recorte de los polígonos voronoi a partir del límite de la Ciudad de Buenos Aires:
voronoi2 <- espacios_verdes_uso_centroides %>%
st_geometry() %>%
st_union() %>%
st_voronoi() %>%
st_collection_extract()%>%
st_sfc(crs = st_crs(espacios_verdes_uso_centroides)) %>%
st_sf() %>%
st_join(espacios_verdes_uso_centroides) %>%
st_intersection(caba)
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
qtm(voronoi2, fill=NULL)+
qtm(caba, fill=NULL)
Visualización de los valores “interpolados”, cada poligono toma el valor del atributo correspondiente.
Estimación de áres con déficir de EV y priorización:
voronoi2$area_voronoi <- as.numeric(st_area(voronoi2))
voronoi2 <-voronoi2 %>%
mutate(area_voronoi_Ha=(area_voronoi/10000)) %>%
mutate(area_Ha=(area/10000))
tm_shape(voronoi2) +
tm_fill(col = "area_Ha",
style = "quantile") +
tm_polygons(alpha = 0.8)+
tm_shape(barrios) +
tm_borders(col = "blue", alpha = 0.5)+
tm_text("BARRIO",scale=0.8)
## Warning: One tm layer group has duplicated layer types, which are omitted. To
## draw multiple layers of the same type, use multiple layer groups (i.e. specify
## tm_shape prior to each of them).
Conclusiones:
Teniendo en cuenta el análisis por medio de polígonos Voronoi y la superficie de cada espacio verde se presentan áreas de baja cobertura de EV en donde se debería priorizar la creación de nuevos espacios.
barrios_deficit_EV <- voronoi2 %>%
filter(area_Ha<=0.12 ) %>%
as.data.frame() %>%
group_by(BARRIO) %>%
summarise(total=n()) %>%
arrange(., desc(total)) %>%
slice(1:5)
knitr::kable(
barrios_deficit_EV, caption = 'Barrios y cantidad de áreas con déficit de EV'
)
| BARRIO | total |
|---|---|
| RETIRO | 18 |
| BELGRANO | 9 |
| BARRACAS | 7 |
| NUEVA POMPEYA | 4 |
| RECOLETA | 4 |