PyrOSM trabajando con datos de Open Street Map
PyrOSM Transformando datos de Open Street Map en acción
Manipulaciones geoespaciales eficientes para datos de mapas OSM
Si has trabajado con datos de OSM antes, sabrás que no es fácil extraerlos. Los datos de OSM pueden ser enormes y encontrar soluciones efectivas para lo que quieres analizar a menudo es un desafío. PyrOSM es un paquete que permite leer y trabajar con los datos de OSM de manera más eficiente. ¿Cómo? Bueno, PyrOSM se basa en Cython (C Python) y utiliza bibliotecas más rápidas para deserializar los datos de OSM, así como optimizaciones más pequeñas como matrices numpy, lo que le permite procesar los datos rápidamente. Especialmente si has usado OSMnx antes (para casos de uso muy similares), sabrás que los conjuntos de datos grandes tardan mucho tiempo en cargarse en la memoria, y ahí es donde PyrOSM puede ayudarte a trabajar con ellos. ¡Veamos qué puede hacer esta biblioteca!
🌎 Datos PBF
Hablemos un poco sobre el formato de archivo específico en el que vienen los datos de OSM. PBF significa “Protocolbuffer Binary Format” y es muy eficiente para trabajar con los datos de OSM almacenados. Los datos de OSM se organizan en “bloques de archivo”, que son grupos de datos que se pueden codificar o decodificar de forma independiente. Los bloques de archivo contienen “GruposPrimitivos”, que a su vez incluyen miles de entidades de OSM, como nodos, caminos y relaciones.
Los datos se pueden escalar de acuerdo con el nivel de granularidad deseado por el usuario. Por ejemplo, la resolución actual de la base de datos de OSM es de alrededor de ~1 cm. De hecho, si quisieras, podrías descargar todos los datos de Open Street Maps en un solo archivo, conocido como Planet (¡alrededor de 1000 GB de datos)!
👩💻 Conceptos básicos de PyrOSM: lectura de conjuntos de datos
PyrOSM es un paquete que lee los datos PBF de Open Street Map basados en dos principales distribuidores de datos: Geofabrik (datos a nivel mundial y por país) y BBBike (datos a nivel de ciudad). El paquete permite al usuario acceder a muchos tipos de características:
- Python para Ingenieros de Datos
- CountVectorizer para extraer características de textos en Python, en detalle
- Nueve reglas para validar formalmente algoritmos de Rust con Dafny (Parte 2)
- Edificios, puntos de interés (POI), uso del suelo
- Redes de calles
- Filtros personalizados
- exportación como redes
- y más!
Actualmente, BBBike admite 235 ciudades en todo el mundo, y puedes acceder fácilmente a la lista completa llamando al método “sources.cities.available”. Comenzar es bastante fácil, simplemente inicializas un objeto lector de OSM y cargas los datos que deseas:
A partir de este punto, necesitarías utilizar el objeto OSM para interactuar con los datos de Berkeley. Ahora veamos la red de calles de Berkeley para conducir:
![Dataframe para la red de calles de Berkeley en OSM](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*xcttob2S_NCemcm9CeLGLA.png)
Imprimir el objeto “street_network” muestra que se almacena en un GeoDataFrame de GeoPandas con todos los atributos de OSM, como longitud, highway, maxspeed, etc., lo cual puede ser muy útil para un análisis más detallado.
Nota adicional: BBBike (el proveedor de datos) tiene muchos otros formatos de datos de diferentes tamaños, incluidos Organic Maps OSM, Garmin OSM o SVG Mapnik, dependiendo de tu caso de uso.
🔍 Mejor filtrado
Los resultados de la carga de datos anteriores incluyen todos los datos de Berkeley e incluso datos de las ciudades vecinas, lo cual no es ideal. ¿Qué pasa si deseas un área mucho más pequeña o más específica? Ahí es donde se utiliza una caja delimitadora. Para hacer una caja delimitadora, puedes:
- Especificar manualmente una lista de 4 coordenadas en el formato de [minx, miny, maxx, maxy]
- Pasar geometrías de Shapely (por ejemplo, una LineString o Multipolygon)
Para encontrar las coordenadas del cuadro delimitador, suelo utilizar este sitio web bbox finder que te permite crear rectángulos y luego copiar las coordenadas. Aquí te explico cómo delimitar el área alrededor del campus de UC Berkeley y obtener su red de caminatas:
![Red de calles utilizando un cuadro delimitador](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*ruxeakHzioCwoUvd_bIHwA.png)
🎯 Exportando y Trabajando con Gráficos
Otra ventaja de PyrOSM es que permite el procesamiento de redes y la conexión con otras bibliotecas de análisis de redes. Además de guardar redes de calles como geodataframes, PyrOSM te permite extraer nodos y bordes almacenándolos en 2 dataframes separados. Aquí tienes el de los nodos:
![Dataframe de nodos de la red de calles](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*OgD2FfBt0Ih7AglINcg5LA.png)
Si tienes estas representaciones de gráficos, es muy fácil guardarlas en varios formatos: OSMnx, igraph y Pandana y trabajar con ellos allí.
💭 Pensamientos Finales
Esto fue un breve resumen de lo que pyrosm puede hacer por ti en tu trabajo geoespacial. Mencioné algunos métodos que pueden ser muy útiles, como descargar conjuntos de datos específicos de un área, o delimitando el área de interés y también cómo se relaciona esto con otras bibliotecas. Creo que lo mejor de pyrosm es precisamente esto: el hecho de que une la brecha entre enormes conjuntos de datos de OSM y las preguntas de ingeniería o análisis que puedes responder con él.
¡Gracias por leer!
We will continue to update Zepes; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- ¡Oh, ¿Querías decir Gestionar el cambio?
- El Lado No Contado de RAG Abordando sus Desafíos en Búsquedas Específicas de Dominio
- Comprendiendo la retención con Gradio
- Reformando la memoria del modelo sin necesidad de volver a entrenarlo
- QLoRA Entrenando un Modelo de Lenguaje Grande en una GPU de 16GB.
- Objetivo De la pesadilla de Metaverso al éxito de la IA
- Integrando la IA generativa y el aprendizaje por refuerzo para el auto-mejoramiento