PyrOSM lavorare con i dati di Open Street Map

PyrOSM lavorare con i dati di Open Street Map

Efficienti manipolazioni geospaziali per i dati mappa OSM

Foto di Tabea Schimpf su Unsplash

Se hai già lavorato con i dati OSM, sai che non è facile estrarli. I dati OSM possono essere enormi e trovare soluzioni performanti per ciò che si desidera analizzare è spesso una sfida. PyrOSM è un pacchetto che rende il processo di lettura e lavoro con i dati OSM molto più efficiente. Come? Beh, PyrOSM è costruito su Cython (C Python) e utilizza librerie più veloci per la deserializzazione dei dati OSM, oltre a piccole ottimizzazioni come gli array numpy che consentono di elaborare i dati rapidamente. Specialmente se hai già usato OSMnx (per casi d’uso molto simili), sai che i set di dati di grandi dimensioni richiedono molto tempo per essere caricati in memoria, ed è qui che PyrOSM può aiutarti a lavorarci. Vediamo cosa può fare questa libreria!

🌎 Dati PBF

Parliamo un po’ del formato di file specifico in cui vengono forniti i dati OSM. PBF significa “Protocolbuffer Binary Format” ed è molto efficiente per lavorare con i dati OSM. I dati OSM sono organizzati in “gruppi di file” (fileblocks), che sono gruppi di dati che possono essere codificati o decodificati indipendentemente. I fileblocks contengono “PrimitiveGroups” (gruppi primitivi), che a loro volta includono migliaia di entità OSM, come nodi, vie e relazioni.

I dati possono essere scalati in base al livello di dettaglio desiderato dall’utente. Ad esempio, la risoluzione attuale del database OSM è di circa ~1 cm. Infatti, se volessi, potresti scaricare l’intero database di OpenStreetMap in un unico file, chiamato Planet (circa 1000 GB di dati)!

👩‍💻 Fondamenti di PyrOSM: lettura dei dataset

PyrOSM è un pacchetto che legge i dati PBF di OpenStreetMap basandosi su due principali distributori di dati: Geofabrik (dati mondiali e a livello di paese) e BBBike (dati a livello di città). Il pacchetto consente all’utente di accedere a molteplici tipi di elementi:

  • Edifici, POI (punti di interesse), Utilizzo del territorio
  • Reti stradali
  • Filtri personalizzati
  • esportazione come reti
  • e altro ancora!

Attualmente BBBike supporta 235 città in tutto il mondo e puoi ottenere l’accesso alla lista completa chiamando il metodo “sources.cities.available”. Iniziare è abbastanza semplice, basta inizializzare un oggetto lettore OSM e caricare i dati desiderati:

Da questo punto in poi, dovresti usare l’oggetto OSM per interagire con i dati di Berkeley. Ora vediamo come ottenere la rete stradale di Berkeley per la guida:

Dataframe per la rete stradale OSM di Berkeley

Stampando l’oggetto street_network reale, vediamo che è archiviato in un GeoPandas GeoDataFrame con tutti gli attributi OSM come lunghezza, tipo di strada, limite di velocità, ecc., che possono essere molto utili per ulteriori analisi.

Nota: BBBikes (il fornitore di origine di questi dati) ha molti altri formati di dati di dimensioni diverse, inclusi Organic Maps OSM, Garmin OSM o SVG Mapnik a seconda del caso d’uso.

🔍 Filtraggio migliore

I risultati del caricamento dei dati includono tutti i dati di Berkeley e, in effetti, anche i dati delle città limitrofe, il che non è ideale. Cosa fare se si desidera un’area molto più piccola o più specifica? È qui che entra in gioco l’utilizzo di un bounding box. Per creare un bounding box, puoi:

  • Specificare manualmente un elenco di 4 coordinate nel formato di [minx, miny, maxx, maxy]
  • passare geometrie Shapely (ad esempio una LineString o un Multipoligono)

Per trovare le coordinate della bounding box, di solito utilizzo il sito web bbox finder che consente di creare rettangoli e copiarne le coordinate. Ecco come delimitare l’area intorno al campus dell’UC Berkeley e ottenere la sua rete pedonale:

Rete stradale utilizzando una bounding box

🎯 Esportazione e lavoro con i grafi

Un’altra cosa positiva di PyrOSM è che consente l’elaborazione delle reti e la connessione ad altre librerie di analisi di rete. Oltre al salvataggio delle reti stradali come geodataframes, PyrOSM consente di estrarre nodi e archi memorizzandoli in 2 dataframe separati. Ecco il dataframe dei nodi:

Dataframe dei nodi dalla rete stradale

Se si dispone di queste rappresentazioni grafiche, è molto facile salvarle in vari formati: OSMnx, igraph e Pandana e lavorare su di esse.

💭 Pensieri finali

Questo è stato un breve riassunto di ciò che pyrosm può fare per te nel tuo lavoro geospaziale! Ho toccato alcuni metodi molto utili, come il download di dataset specifici da un’area, o delimitando l’area di interesse e come ciò si correla ad altre librerie. Penso che le migliori cose di pyrosm siano proprio queste: il fatto che colmi il divario tra enormi dataset OSM e le domande di ingegneria o analisi che è possibile rispondere con esso.

Grazie per la lettura!