library(knitr)
knitr::opts_chunk$set(warning=FALSE, message=FALSE)
library(tidyverse)
library(sf)
library(osmdata)
library(ggmap)



Descarga de datos de OpenStreetMap

En el presente trabajo se utilizará la librería de R ‘osmdata’ para descargar información correspondiente a la Ciudad Autónoma de Buenos Aires. Particularmente, interesa la ubicación de los puestos de control policial dentro de la ciudad. OSM es una plataforma creada por una gran comunidad de colaboradores que aportan datos de muchas ciudades del mundo y los mantienen actualizados. En primer lugar se realiza un bbox de la ciudad en cuestión para tomar la caja geográfica en la cual se encuentra inserta, por medio de su latitud mínima y máxima, y de su longitud mínima y máxima.

bbox_caba <- getbb("Ciudad Autónoma de Buenos Aires, Buenos Aires, Argentina")
bbox_caba
##         min       max
## x -58.53145 -58.33514
## y -34.70564 -34.52655

Mapa base CABA

A partir de las coordenadas obtenidas en el paso anterior, se descarga el stamenmap de la ciudad de Buenos Aires solicitando un mapa que solo contenga las líneas de tierra en escala de grises. Este mapa será utilizado posteriormente como base para los gráficos a producir.

basemap_caba <- get_stamenmap(bbox=bbox_caba,
                              maptype="terrain-lines",
                              zoom=12)
ggmap(basemap_caba) +
  theme_void()

Polígono CABA

En este caso, se obtiene la geometría del contorno de la ciudad de Buenos Aires. La obtención de este polígono contribuye a realizar una gráfica mucho más clara y representativa, aplicandolo sobre el mapa base obtenido en el punto anterior permite reconocer con mayor precisión el perímetro dentro del cual se produce nuestro análisis. En caso de obtener más de un polígono se evaluarán las diferencias entre ellos, conservando el que resulte más pertinente para el presente análisis.

polygon_caba <- getbb("Ciudad Autónoma de Buenos Aires, Argentina",
                      format_out="sf_polygon")
polygon_caba
## $polygon
## NULL
## 
## $multipolygon
## Simple feature collection with 2 features and 0 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.53145 ymin: -34.70564 xmax: -58.33514 ymax: -34.52655
## Geodetic CRS:  WGS 84
##                         geometry
## 1 MULTIPOLYGON (((-58.53145 -...
## 2 MULTIPOLYGON (((-58.53145 -...
polygon_caba <- polygon_caba[2][[1]]
polygon_caba
## Simple feature collection with 2 features and 0 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.53145 ymin: -34.70564 xmax: -58.33514 ymax: -34.52655
## Geodetic CRS:  WGS 84
##                         geometry
## 1 MULTIPOLYGON (((-58.53145 -...
## 2 MULTIPOLYGON (((-58.53145 -...
polygon_caba <- polygon_caba %>% 
  mutate(ID=row.names(polygon_caba))
ggplot() +
  geom_sf(data=polygon_caba) +
  facet_wrap(~ID) +
  theme_void()

polygon_caba <- polygon_caba[1,]
ggmap(basemap_caba) +
  geom_sf(data=polygon_caba, fill=NA, color="#80708C", size=0.65, inherit.aes=FALSE) +
  theme_void()


Ubicación de los puestos de control en CABA

A partir de la misma plataforma utilizada hasta ahora, Open Street Map, se obtienen las ubicaciones de elementos relacionados con las fuerzas policiales.

pcheckpoints_caba <- opq(bbox=bbox_caba) %>% 
  add_osm_feature(key="amenity", value="police")
pcheckpoints_caba <- osmdata_sf(pcheckpoints_caba)
pcheckpoints_caba <- pcheckpoints_caba$osm_points
ggmap(basemap_caba) +
  geom_sf(data=polygon_caba, fill=NA, color="#80708C", size=0.5, inherit.aes=FALSE) +
  geom_sf(data=pcheckpoints_caba, color="#542788", shape=16, size=1, inherit.aes=FALSE) +
  theme_light() +
  labs(title = "Distribución de los elementos policiales en CABA",
       x = NULL,
       y = NULL,
       caption = ("Fuente: OpenStreetMap")) +
  theme(plot.margin = margin(15, 5, 15, 5),
        aspect.ratio = 1,
        panel.grid.major = element_line(color = "gray80",
                                        linetype = "dashed"),
        panel.background = element_rect(fill = "white",
                                        colour = "gray100",
                                        size = 2,
                                        linetype = "solid"),
        plot.title = element_text(size = 10,
                                  face = "bold",
                                  hjust = .5,
                                  vjust = 2.5,
                                  colour = "gray20"),
        plot.caption = element_text(size = 5,
                                    colour = "gray20"),
        axis.text.x = element_text(size = 5,
                                    colour = "gray20"),
        axis.text.y = element_text(size = 5,
                                    colour = "gray20"),
        legend.position = "right",
        legend.title = element_text(size = 10,
                                    colour = "gray20"),
        legend.text  = element_text(size = 7.5,
                                    colour = "gray20")
        )

Se procede a filtrar solo la ubicación de los puestos de control policial dentro de CABA para analizar si existe algun patrón que amerite la realización de comentarios.

pcheckpoints_caba <- pcheckpoints_caba %>% 
  #filter(grepl("puesto", name, ignore.case=TRUE))
  filter(name %in% c('Puesto de control policial','Puesto de Control Policial', 'Puesto de control', 'Puesto de Control', 'Puesto de vigilancia '))
ggmap(basemap_caba) +
  geom_sf(data=polygon_caba, fill=NA, color="#80708C", size=0.5, inherit.aes=FALSE) +
  geom_sf(data=pcheckpoints_caba, color="#542788", shape=20, size=3, inherit.aes=FALSE) +
  theme_light() +
  labs(title = "Distribución de los puestos de control en CABA",
       x = NULL,
       y = NULL,
       caption = ("Fuente: OpenStreetMap")) +
  theme(plot.margin = margin(15, 5, 15, 5),
        aspect.ratio = 1,
        panel.grid.major = element_line(color = "gray80",
                                        linetype = "dashed"),
        panel.background = element_rect(fill = "white",
                                        colour = "gray100",
                                        size = 2,
                                        linetype = "solid"),
        plot.title = element_text(size = 10,
                                  face = "bold",
                                  hjust = .5,
                                  vjust = 2.5,
                                  colour = "gray20"),
        plot.caption = element_text(size = 5,
                                    colour = "gray20"),
        axis.text.x = element_text(size = 5,
                                    colour = "gray20"),
        axis.text.y = element_text(size = 5,
                                    colour = "gray20"),
        legend.position = "right",
        legend.title = element_text(size = 10,
                                    colour = "gray20"),
        legend.text  = element_text(size = 7.5,
                                    colour = "gray20")
        )

El mapa de la ubicación de puestos de control permite entender que estos se ubican, practicamente en su totalidad, en ols límites terrestres de la ciudad de Buenos Aires. Esta situación resulta sumamente razonable en cuanto la posición de los puestos en el territorio permiten mantener el control de los accesos principales a CABA.