Distribución de tiendas Zara en España
Input
Obtenemos el conjunto de datos geoespaciales acerca de las tiendas Zara en España mediante OpenStreetMap (OSM), un proyecto colaborativo para crear un mapa libre y editable del mundo, el cual permite a los usuarios visualizar, editar y utilizar datos geográficos de cualquier parte del globo.Podemos ver toda la información accediendo a la wiki de OSM.
A continuación se muestran otras informaciones de interés:
· Licencia de uso:Los datos obtenidos de OSM están sujetos a la Open Database License (ODbL), que permite el uso y distribución de los datos con ciertas condiciones, como el reconocimiento de la fuente y la compartición de las modificaciones realizadas.
· Formatos: Los conjuntos de datos de OpenStreetMap (OSM) puenden estar disponibles en varios formatos, según el método que utilices para extraer los datos (GeoJSON, Shapefile, KML, CSV, etc…)
Descripcion
Cargamos las librerías necesarias
Utilizamos la librería osmdata para importar datos de OpenStreetMaps Leemos el conjunto de datos, construyendo nuestro propio cuadro delimitador de España.
bbox_spain <- c(-10, 30, 5, 46)
data <- bbox_spain %>%
osmdata::opq(timeout = 1000) %>%
osmdata::add_osm_feature("name", "Zara") %>%
osmdata::add_osm_feature("shop", "clothes")
zara <- osmdata_sf(data)
zara_sf <- zara$osm_points
Se trata de un objeto sf con 482 observaciones y 82 variables:
Lo representamos gráficamente con leaflet:
Tratamiento
Se ha detectado que observaciones (puntos), se encuentran fuera de los límites de España.Para ello realizamos una intersección con un conjunto de datos geoespaciales que representa las comunidades autónomas de España en el sistema de coordenadas EPSG:4326 (WGS84), que resuelve este problema:
spain_ccaa <- mapSpain::esp_get_ccaa(epsg="4326")
spain2 <- spain_ccaa %>% group_by(codauto) %>% summarise()
zara_sf2 <- st_intersection(zara_sf,spain2)
Lo representamos gráficamente con leaflet:
Sin embargo, como podemos observar si ampliamos el mapa (por ejemplo, en el centro de Madrid), debido a ciertos errores, en algunas zonas geográficas nos duplica o incluso triplica la existencia de una misma tienda Zara. Para paliar este error utilizamos el siguiente comando, realizando así un cluster.
library(dbscan)
coords <- sf::st_coordinates(zara_sf2)
res <- dbscan(coords, eps = 0.001, minPts = 1)
zara_sf2$cluster <- data.frame(res$cluster)
zara_final <- zara_sf2 %>%
group_by(cluster) %>%
summarise(geometry = st_centroid(st_combine(geometry)))
zara_final <- st_join(zara_sf2, zara_final)
Cabe recalcar utilizamos el epsilon (eps) = 0.001 ya que, equivale a una distancia de aproximadamente 110 metros, una distancia pequeña, lo que permite identificar grupos de tiendas Zara que están muy cerca unas de otras y, por lo tanto, duplicadas.
Output
Hemos obtenido un nuevo objeto sf, con 213 observaciones y 85 variables:
Observamos a continuación que ahora todos los puntos están dentro de los límites de España y, también, no existen duplicados.
El fichero generado con el procedimiento descrito anteriormente se puede descargar, en formato GeoPackage (gpkg), de aquí.
sf::st_write(zara_final, "Zara.gpkg", delete_dsn = TRUE)
Proyecto de Innovación Educativa Emergente (PIEE-2737007)