La visualización de datos geográficos con OpenStreetMap es una forma poderosa de representar y comprender información espacial utilizando la base de datos abierta y colaborativa más grande del mundo. OpenStreetMap (OSM) proporciona datos geográficos detallados y actualizados, incluyendo carreteras, edificios, puntos de interés y más, que pueden ser utilizados para una amplia gama de aplicaciones de visualización.
Aquí hay algunos aspectos importantes sobre la visualización de datos geográficos con OpenStreetMap:
Datos Abiertos y Colaborativos: OpenStreetMap se basa en la contribución de miles de usuarios de todo el mundo que aportan y actualizan datos geográficos de manera colaborativa. Esto significa que los datos son libres y están disponibles para su uso por cualquier persona.
Flexibilidad y Personalización: La flexibilidad de OpenStreetMap permite a los usuarios personalizar la visualización según sus necesidades específicas. Esto incluye la capacidad de agregar capas de datos adicionales, como puntos de interés, límites administrativos, información topográfica, entre otros.
Herramientas de Visualización: Existen varias herramientas y librerías de software que facilitan la visualización de datos geográficos con OpenStreetMap. Algunas de las más populares incluyen Leaflet, Mapbox, osmdata en R, y varias bibliotecas de Python como Folium y Geopandas.
Interactividad: La visualización de datos geográficos con OpenStreetMap permite la creación de mapas interactivos que permiten a los usuarios explorar y analizar los datos de manera dinámica. Esto puede incluir la capacidad de hacer zoom, desplazarse, buscar ubicaciones específicas y activar/desactivar capas de datos.
Aplicaciones Diversas: Los datos de OpenStreetMap y las herramientas de visualización asociadas se utilizan en una amplia variedad de aplicaciones, que van desde la planificación urbana y la gestión de recursos naturales hasta la navegación, el turismo, la logística y más.
En resumen, la visualización de datos geográficos con OpenStreetMap proporciona una plataforma versátil y accesible para explorar y comunicar información espacial de manera efectiva.
library(osmdata)
library(tidyverse)
library(sf) # para procesar info espacial
library(leaflet) # Para generar mapas interactivos
La función getbb() en R, cuando se utiliza con el nombre de
una ubicación como “Localidad Bosa, Bogotá”, obtiene las coordenadas
geográficas del cuadro delimitador (bounding box) que rodea a esa
ubicación. Estas coordenadas definen la extensión espacial de la
ubicación en términos de longitud y latitud. Al ejecutar bbox <-
getbb(“Localidad Bosa, Bogotá”), se podrá delimitar el área de interés
en un mapa o recuperar datos geográficos específicos que se encuentren
dentro de ese cuadro delimitador.
Por lo tanto, bbox contendrá las coordenadas de la caja delimitadora que rodea la “Localidad Bosa, Bogotá”, y puedes usar este objeto para trabajar con datos espaciales relacionados con esa área específica.
bbox <- getbb("Localidad Bosa, Bogotá")
bbox
## min max
## x -74.223514 -74.15214
## y 4.595715 4.65501
La función getbb() con el parámetro format_out = “sf_polygon” devuelve el cuadro delimitador (bounding box) como un polígono simple en formato sf (simple feature) en lugar de simplemente como un conjunto de coordenadas. Este objeto contendrá información espacial sobre el polígono que representa el cuadro delimitador de la “Localidad Bosa, Bogotá”, lo que te permite realizar análisis y visualizaciones espaciales más detalladas con él.
bbox_poly <- getbb("Localidad Bosa, Bogotá", format_out = "sf_polygon")
bbox_poly
## Simple feature collection with 2 features and 0 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -74.22351 ymin: 4.595715 xmax: -74.15214 ymax: 4.65501
## Geodetic CRS: WGS 84
## geometry
## 1 POLYGON ((-74.22351 4.62523...
## 2 POLYGON ((-74.18505 4.61076...
Observese el mapa de la localidad Bogotana “Bosa”.
leaflet(bbox_poly) %>%
addTiles() %>%
addPolygons()
la función opq() de la librería osmdata en R define una consulta a OpenStreetMap (OSM) dentro del cuadro delimitador especificado por bbox. Luego, se utiliza la función add_osm_feature() para agregar la característica de “highway” a la consulta, lo que significa que se están buscando elementos de carreteras en el área especificada por bbox.
bosa <- opq(bbox) %>%
add_osm_feature(key = "highway")
bosa
## $bbox
## [1] "4.5957151,-74.2235137,4.65501,-74.152139"
##
## $prefix
## [1] "[out:xml][timeout:25];\n(\n"
##
## $suffix
## [1] ");\n(._;>;);\nout body;"
##
## $features
## [1] "[\"highway\"]"
##
## $osm_types
## [1] "node" "way" "relation"
##
## attr(,"class")
## [1] "list" "overpass_query"
## attr(,"nodes_only")
## [1] FALSE
Las siguientes lineas de código convierten el objeto osmdata en un objeto sf (simple feature) de la librería sf, que es un tipo de dato especialmente diseñado para almacenar datos geoespaciales en R.
bosa <- bosa %>%
osmdata_sf()
bosa
calles <- bosa$osm_lines
library(ggplot2)
# Crear el gráfico ggplot
ggplot() +
geom_sf(data = calles) +
labs(x = "Longitud", y = "Latitud") + # Establecer etiquetas de los ejes
scale_x_continuous(labels = function(x) paste0(x, "°W")) + # Personalizar etiquetas del eje x
scale_y_continuous(labels = function(y) paste0(y, "°N")) + # Personalizar etiquetas del eje y
ggtitle("Mapa de Calles en Bosa") +
theme(plot.title = element_text(hjust = 0.5))
Delimitando mapa con respecto a fronteras de la localidad.
#bbox_poly es el objeto que limita las localidades erfectmente
calles <- st_intersection(calles, bbox_poly)
ggplot() +
geom_sf(data = calles) +
labs(x = "Longitud", y = "Latitud") + # Establecer etiquetas de los ejes
scale_x_continuous(labels = function(x) paste0(x, "°W")) + # Personalizar etiquetas del eje x
scale_y_continuous(labels = function(y) paste0(y, "°N")) + # Personalizar etiquetas del eje y
ggtitle("Mapa de Calles en Bosa") +
theme(plot.title = element_text(hjust = 0.5))
Accediendo a la variable 10 que hace referencia a división política del continente:
calles <- calles %>%
mutate(maxspeed = as.numeric(maxspeed),
lanes = ifelse(is.na(lanes), 1, as.numeric(lanes)))
ggplot() +
geom_sf(data = calles,
color = "gray40", alpha = .5) +
geom_sf(data = filter(calles, str_detect(name, "Avenida")),
color = "salmon") +
theme_void() +
labs(title = "Bosa - Bogotá",
subtitle = "Avenidas Importantes",
caption = "fuente: OpenStreetMap")
Se quiere analizar los establecimientos del barrio o cercanías de este,
específicamente identificar los bares que tienen Wifi. Se usa la función
getbb() con el parámetro format_out = “sf_polygon” el cual
devuelve el cuadro delimitador (bounding box) como un polígono simple en
formato sf (simple feature) en lugar de simplemente como un conjunto de
coordenadas. Este objeto contendrá información espacial sobre el
polígono que representa el cuadro delimitador de la “Localidad Bosa,
Bogotá”, lo que te permite realizar análisis y visualizaciones
espaciales más detalladas con él. Se identifica por medio de
OpenStreetMap el lugar Salitre en Bogotá:
bbox_st <- getbb('salitre, localidad Fontibon Bogotá');bbox_st
## min max
## x -74.12080 -74.103423
## y 4.64516 4.666457
bbox_st_poly = getbb("salitre, localidad Fontibon Bogotá", format_out = "sf_polygon") ;bbox_st_poly
## Simple feature collection with 9 features and 0 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -74.1208 ymin: 4.64516 xmax: -74.10342 ymax: 4.673337
## Geodetic CRS: WGS 84
## geometry
## 1 POLYGON ((-74.1208 4.655896...
## 2 POLYGON ((-74.11755 4.67291...
## 3 POLYGON ((-74.1124 4.649899...
## 4 POLYGON ((-74.10964 4.65896...
## 5 POLYGON ((-74.1105 4.649187...
## 6 POLYGON ((-74.11181 4.66007...
## 7 POLYGON ((-74.10772 4.65592...
## 8 POLYGON ((-74.10847 4.65237...
## 9 POLYGON ((-74.10972 4.64853...
La anterior salida indica la extensión espacial del polígono representado en las coordenadas mínimas y máximas tanto en el eje x como en el eje y. Aquí está el significado de cada parte:
Obsérvese el gráfico de la búsqueda de OpenStreetMap sobre “Salitre”:
leaflet(bbox_st_poly) %>%
addTiles() %>%
addPolygons()
Se busca las calles y los bares ubicados en este recuadro espacial:
elcorzo_calles <- opq(bbox_st) %>%
add_osm_feature(key = "highway") %>%
osmdata_sf()
elcorzo_bares <- opq(bbox_st) %>%
add_osm_feature(key = "amenity", value = "bar") %>%
osmdata_sf()
Una gráfica que permite observar los establecimientos tipo Bar que tienen o no tienen servicio de Wifi:
elcorzo_calles2 <- st_intersection(elcorzo_calles$osm_lines, bbox_st_poly)
elcorzo_bares2 <- st_intersection(elcorzo_bares$osm_points, bbox_st_poly)
ggplot() +
geom_sf(data = elcorzo_calles2,
color = "darkslateblue") +
geom_sf(data = elcorzo_bares2,
aes(color = wifi)) +
theme_void() +
labs(title = "Salitre Bogotá",
subtitle = "Bares",
caption = "fuente: OpenStreetMap",
color = "Ofrecen wifi")
Una forma de colocar etiquetas de los Bares adjuntos al conjunto de puntos espaciales es por medio de:
ggplot() +
geom_sf(data = elcorzo_calles2,
color = "darkslateblue") +
geom_sf_label(data = elcorzo_bares2,
aes(label = name), size = 2) +
theme_void() +
labs(title = "Salitre Bogotá",
subtitle = "Bares",
caption = "fuente: OpenStreetMap",
color = "Ofrecen wifi")
Consderando lo anterior, se procede a visualizar todos los datos en una sola visualización
library(ggsflabel)
ggplot() +
geom_sf(data = elcorzo_calles2,
color = "darkslateblue") +
geom_sf(data = elcorzo_bares2,
aes(color = wifi)) +
geom_sf_label_repel(data = elcorzo_bares2,
aes(label = name), size = 2) +
theme_void() +
labs(title = "Salitre Bogotá",
subtitle = "Bares",
caption = "fuente: OpenStreetMap",
color = "Ofrecen wifi")
El uso y el desarrollo de visualizaciones tipo mapa para identificar establecimientos mediante OpenStreetMap ofrecen una poderosa herramienta para la exploración y comprensión de la geografía humana y los patrones de distribución espacial de diferentes tipos de lugares de interés. Algunas conclusiones generales sobre este enfoque incluyen:
Acceso a datos geoespaciales detallados: OpenStreetMap proporciona una fuente de datos geográficos de código abierto y globalmente accesible, lo que permite a los usuarios acceder a información detallada sobre carreteras, edificios, puntos de interés y otras características geográficas.
Flexibilidad y personalización: Las visualizaciones basadas en OpenStreetMap ofrecen flexibilidad y capacidad de personalización, lo que permite a los desarrolladores adaptar las visualizaciones a sus necesidades específicas. Esto incluye la capacidad de agregar capas adicionales de datos, como información sobre establecimientos específicos, límites administrativos, datos demográficos, entre otros.
Exploración interactiva: Las herramientas de visualización basadas en OpenStreetMap suelen ser interactivas, lo que permite a los usuarios explorar y analizar los datos geográficos de manera dinámica. Esto facilita la identificación de patrones espaciales, la realización de análisis de proximidad y la toma de decisiones informadas.
Aplicaciones prácticas: Estas visualizaciones tienen numerosas aplicaciones prácticas en una variedad de campos, como la planificación urbana, el análisis de mercado, la gestión de recursos naturales, la logística y el turismo. Por ejemplo, los comerciantes pueden utilizar estas herramientas para identificar ubicaciones estratégicas para sus negocios, mientras que los planificadores urbanos pueden emplearlas para evaluar la accesibilidad a servicios públicos.