Trabajo práctico 3

Unir datos espaciales

Cargamos las librerías que vamos a utilizar

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.4     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(sf)
## Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1

Cargamos el dataset espacial de comunas de la ciudad de Montevideo

mvd_comunales <- st_read("sig_comunales.shp", stringsAsFactors=TRUE)
## Reading layer `sig_comunales' from data source 
##   `C:\Users\Daniel\Desktop\Respaldo Daniel\Desktop\Daniel\_Diplomatura PU\Ciencia de Datos para Ciudades\CDC-DIPLOMATURA\sig_comunales.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 18 features and 2 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 551994.3 ymin: 6133494 xmax: 589199.4 ymax: 6159799
## Projected CRS: WGS 84 / UTM zone 21S

Observamos la información

summary(mvd_comunales)
##       GID            ZONA_LEGAL          geometry 
##  Min.   :8647694   CCZ01  : 1   POLYGON      :18  
##  1st Qu.:8647698   CCZ02  : 1   epsg:32721   : 0  
##  Median :8647702   CCZ03  : 1   +proj=utm ...: 0  
##  Mean   :8647702   CCZ04  : 1                     
##  3rd Qu.:8647707   CCZ05  : 1                     
##  Max.   :8647711   CCZ06  : 1                     
##                    (Other):12

Visualizamos rápidamente en un mapa los datos del shape

ggplot(mvd_comunales)+
  geom_sf()

Le damos un poco de expresión a la cartografía para representar sobre ella la información de espacios públicos de la ciudad

ggplot(mvd_comunales)+
  geom_sf(fill="gray50", color="white")+
  labs(title="Ciudad de Montevideo")+
  theme_light()

Cargamos el dataset de espacios públicos de Montevideo, en este caso la información también es del tipo espacial

mvd_esp_publicos <- st_read("v_sig_espacios_publicos.shp", stringsAsFactors=TRUE)
## Reading layer `v_sig_espacios_publicos' from data source 
##   `C:\Users\Daniel\Desktop\Respaldo Daniel\Desktop\Daniel\_Diplomatura PU\Ciencia de Datos para Ciudades\CDC-DIPLOMATURA\v_sig_espacios_publicos.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 2607 features and 9 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 551994.3 ymin: 6133525 xmax: 588550.1 ymax: 6156784
## Projected CRS: WGS 84 / UTM zone 21S

Observamos la información obtenida

summary(mvd_esp_publicos)
##       GID             COD_NOM_ES                           NOMBRE_ESP  
##  Min.   : 3196193   Min.   :2761   DR JULIO CESAR GRAUERT       :   8  
##  1st Qu.: 3197312   1st Qu.:2884   GENERAL  RONDEAU             :   4  
##  Median : 3198221   Median :3079   GONZALO RAMIREZ              :   4  
##  Mean   :18060220   Mean   :3571   DE CAGANCHA                  :   3  
##  3rd Qu.:37772688   3rd Qu.:4292   GRAL. FRUCTUOSO RIVERA (GRAL):   3  
##  Max.   :57888639   Max.   :6101   (Other)                      : 465  
##                     NA's   :2120   NA's                         :2120  
##    NRO_ESPACI             NOM_TIPO_E     COD_NOM_PA    
##  Min.   :   1.0   PLAZA        : 170   Min.   :  4.00  
##  1st Qu.: 979.5   ESPACIO LIBRE: 150   1st Qu.: 18.00  
##  Median :1708.0   PLAZUELA     :  95   Median : 24.00  
##  Mean   :1890.2   PLAZOLETA    :  30   Mean   : 54.03  
##  3rd Qu.:2652.5   PARQUE       :  19   3rd Qu.: 32.00  
##  Max.   :5318.0   (Other)      :  23   Max.   :206.00  
##                   NA's         :2120   NA's   :2533    
##                          NOM_PARQUE     TIPO_ESPAC              DESC_TIPO_  
##  PRADO                        :  14   Min.   :1.000   Area parquizada: 109  
##  JOSE BATLLE Y ORDOÃ<U+0091>EZ:  11   1st Qu.:3.000   Cantero        :1133  
##  CARLOS VAZ FERREIRA          :   9   Median :3.000   Espacio libre  : 310  
##  JOSE ENRIQUE RODO            :   8   Mean   :3.225   Plaza/Plazoleta: 435  
##  DR JULIO CESAR GRAUERT       :   7   3rd Qu.:4.000   Separador vial : 620  
##  (Other)                      :  25   Max.   :5.000                         
##  NA's                         :2533                                         
##           geometry   
##  POLYGON      :2607  
##  epsg:32721   :   0  
##  +proj=utm ...:   0  
##                      
##                      
##                      
## 

Vemos que las categorías NOM_TIPO_E y DESC_TIPO_ nos aportan información sobre la tipología de espacio público que representa cada polígono del shape.

Vamos a representar ambos dataset en un mapa compuesto

ggplot(mvd_comunales)+
  geom_sf(fill="gray70", color="white")+
  theme_light()+
geom_sf(data=mvd_esp_publicos, fill= "darkgreen", color = "NA", alpha=0.5)+
  labs(title="Ciudad de Montevideo")

Al dataset de espacios públicos, vamos a realizarle un join espacial con la información de zona comunal para cada elemento

mvd_esp_pub_geo <- st_join(mvd_esp_publicos, mvd_comunales)
summary(mvd_esp_pub_geo)
##      GID.x            COD_NOM_ES                           NOMBRE_ESP  
##  Min.   : 3196193   Min.   :2761   DR JULIO CESAR GRAUERT       :   8  
##  1st Qu.: 3197314   1st Qu.:2883   GENERAL  RONDEAU             :   4  
##  Median : 3198189   Median :3078   GONZALO RAMIREZ              :   4  
##  Mean   :17642263   Mean   :3566   DE CAGANCHA                  :   3  
##  3rd Qu.:37772660   3rd Qu.:4266   GRAL. FRUCTUOSO RIVERA (GRAL):   3  
##  Max.   :57888639   Max.   :6101   (Other)                      : 474  
##                     NA's   :2319   NA's                         :2319  
##    NRO_ESPACI             NOM_TIPO_E     COD_NOM_PA    
##  Min.   :   1.0   PLAZA        : 174   Min.   :  4.00  
##  1st Qu.: 982.5   ESPACIO LIBRE: 152   1st Qu.: 18.00  
##  Median :1735.0   PLAZUELA     :  97   Median : 24.00  
##  Mean   :1878.7   PLAZOLETA    :  30   Mean   : 54.03  
##  3rd Qu.:2601.5   PARQUE       :  19   3rd Qu.: 32.00  
##  Max.   :5318.0   (Other)      :  24   Max.   :206.00  
##                   NA's         :2319   NA's   :2741    
##                          NOM_PARQUE     TIPO_ESPAC              DESC_TIPO_  
##  PRADO                        :  14   Min.   :1.000   Area parquizada: 114  
##  JOSE BATLLE Y ORDOÃ<U+0091>EZ:  11   1st Qu.:3.000   Cantero        :1289  
##  CARLOS VAZ FERREIRA          :   9   Median :3.000   Espacio libre  : 315  
##  JOSE ENRIQUE RODO            :   8   Mean   :3.218   Plaza/Plazoleta: 443  
##  DR JULIO CESAR GRAUERT       :   7   3rd Qu.:4.000   Separador vial : 654  
##  (Other)                      :  25   Max.   :5.000                         
##  NA's                         :2741                                         
##      GID.y           ZONA_LEGAL            geometry   
##  Min.   :8647694   CCZ05  : 295   POLYGON      :2815  
##  1st Qu.:8647699   CCZ09  : 252   epsg:32721   :   0  
##  Median :8647702   CCZ11  : 248   +proj=utm ...:   0  
##  Mean   :8647703   CCZ02  : 231                       
##  3rd Qu.:8647707   CCZ08  : 221                       
##  Max.   :8647711   (Other):1567                       
##  NA's   :1         NA's   :   1

Vemos que en mvd_esp_pub_geo, al shp de espacios públicos se le agregan dos columnas de información; una de gid y otra denominada ZONA_LEGAL que indica los valores de zona comunal para cada elemento del dataset resultado.

Vamos a representar en un mapa por color el dato de Zona Comunal para espacio público

ggplot()+
  geom_sf(data=mvd_comunales)+
  geom_sf(data=mvd_esp_pub_geo, aes(color=ZONA_LEGAL), alpha=0.75, show.legend = FALSE)

Identificamos rapidamente por color los espacios publicos abiertos de acuerdo a la Zona Coumnal correspondiente.

Vamos a eliminar los registros nulos del dataset que generamos

mvd_esp_pub_geo <- mvd_esp_pub_geo %>%
  st_set_geometry(NULL)

Realizamos una gráfica de barras para obtener un conteo de la cantidad de espacios públicos por Zona Comunal

ggplot(mvd_esp_pub_geo)+
  geom_bar(aes(x=ZONA_LEGAL))

No se expresan claramente los resultados. Deberíamos probar girando los ejes.

Vamos a generar un nuevo dataset para obtener la cantidad de registros (espacios públicos) por Comuna, cualquiera sea el tipo de espacio del que se trate

mvd_esp_pub_geo_sum <- mvd_esp_pub_geo %>%
  group_by(ZONA_LEGAL) %>%
  summarise(cantidad=n())

Realizamos una nueva gráfica clasificando las Zonas comunales de acuerdo a la cantidad de espacios públicos que contienen.

Agregamos etiquetas e invertimos la información de los ejes de coordenadas

ggplot(mvd_esp_pub_geo_sum)+
  geom_bar(aes(x=reorder(ZONA_LEGAL, cantidad), weight=cantidad, fill=ZONA_LEGAL))+
  coord_flip()+
  labs(title="Espacios públicos por Zona Comunal",
       subtitle="Censo 2011 - INE",
       x="Zona Comunal",
       y="Cantidad",
       fill="Zona Comunal")

Al dataset de Zonas Comunales le realizamos un join espacial para incorporarle el dato obtenido de cantidad de espacios públicos

mvd_comunales <- left_join(mvd_comunales, mvd_esp_pub_geo_sum, by="ZONA_LEGAL")

Realizamos un mapa coroplético con la cantidad de espacios públicos por Zona

ggplot()+
  geom_sf(data=mvd_comunales, aes(fill=cantidad))

Vamos a incorporar una columna de cálculo de superficies de las geometrías para obtener información de cantidad por área

mvd_comunales <- mvd_comunales %>%
  mutate(superficie=st_area(mvd_comunales))

Expresamos el resultado en km2

mvd_comunales <- mvd_comunales %>%
  mutate(superficie_km2=round(as.numeric(superficie)/1000000, 2))
ggplot()+
  geom_sf(data=mvd_comunales, aes(fill=cantidad/superficie_km2))+
    labs(title = "Espacios pùblicos por km2",
         subtitle = "Zonas Comunales",
         fill = "Cantidad/km2",
         caption= "Fuente: SIG Intendecia de Montevideo") +
  scale_fill_distiller(palette = "YlOrRd", direction = 1) +
  theme_light()

Las asimetrias del tipo económico entre las Zonas Comunales también se verifican en cuanto a la disponibilidad de espacios públicos por km2, siendo las areas centrales y costeras de la ciudad las que cuentan con mayor cantidad de equipamientos pubilcos abiertos en relación a su superficie.