Come usare i dati di OSM – 1^parte

OpenStreetMap (OSM) è sicuramente la più nota ed importante fonte di geodati liberi (open geodata) del mondo. Nata e cresciuta come progetto collaborativo in cui tutti possono contribuire per registrare ed aggiornare i dati in essa presenti, in molti casi è l’unica risorsa disponibile per ottenere gratuitamente informazioni geografiche sulle entità (strade, edifici, monumenti, stazioni, sorgenti, … etc) presenti in una determinata area geografica. Ma per poter utilizzare al meglio questi dati, è auspicabile sapere come sono strutturati ed è di questo che vi voglio parlare in questo articolo.

Per chi ancora non lo sapesse (… credo pochi!) OSM è mantenuta da un esercito di mapper volontari sparsi in tutto il mondo che aggiornano i suoi dati partendo principalmente da rilevazioni sul campo (rilevazioni tracce e punti con il GPS) oppure da immagini aeree e satellitari. Esiste poi un numero residuo di dati che provengono da cosiddette donazioni da parte di fonti governative (per es. alcune nostre Regioni hanno permesso il travaso di geodati presenti nei loro web SIT) e di organizzazioni commerciali (per es. Bing consente l’uso delle ortofoto aeree per l’editing degli elementi di mappa). In questa pagina Potenziali fonti di dati sono elencate le possibili fonti utilizzabili per l’Italia.

Qualità dei dati

Naturalmente volendo usare i dati estratti da OSM, bisogna avere consapevolezza di qual’è la loro affidabilità e la loro precisione. Diciamo che pur non essendo “dati ufficiali” garantiti da un ente pubblico che li certifica, come hanno dimostrato anche alcuni studi (per certe aree sono stati confrontati i dati OSM con quelli della cartografia ufficiale) la loro affidabilità è buona.

E’ la stessa comunità di OSM che grazie al meccanismo della condivisione e del controllo reciproco, convalida i dati registrati dai mapper. Per fare questo esistono tutta una serie di strumenti che aiutano ad effettuare i controlli; uno di questi è incluso in uno dei più usati editor di OSM ed interviene quindi già in fase di registrazione (JOSM Validator). Altri possibili strumenti di controllo li trovate indicati in questa pagina: Quality Assurance.

Capite bene che, essendo un progetto gestito da volontari, non tutte le aree geografiche sono coperte con lo stesso livello di qualità, sia perchè varia il numero di mappers sià perchè varia la loro capacità/esperienza di mappare.

In definitiva, la scelta di usare o meno i dati di OSM dipende esclusivamente dall’uso che ne dovete fare e quindi dalla precisione che vi serve, anche se in diverse situazioni può capitarvi di non avere alternative e che, buoni o meno-buoni che siano, OSM sia l’unica possibilità per ricavare dati di una certa zona geografica. Per fare un esempio, se vi serve di conoscere quali siano i “bar” presenti in una​ data area metropolitana, credo che a parte Google Maps (tra l’altro non è open data), l’unica possibilità sia appunto OSM.

La licenza

Proprio il fatto di essere dati totalmente liberi è uno dei principali punti di forza di OSM. E’ possibile usare i dati OpenStreetMap per qualsiasi scopo, anche quelli commerciali, con il solo vincolo di citare il progetto (OSM attribution) e usare la stessa licenza per eventuali dati derivati.

Inizialmente le condizioni d’uso di OSM erano dettate dalla CC-BY-SA 2.0; dal 2012 per i dati si è passati alla licenza ODbL (Open Database License 1.0). La CC-BY-SA continua a valere per la cartografia.

Senza scendere nei dettagli di cosa dice la ODbL, sei libero di copiare, distribuire, trasmettere e adattare i dati, finché li attribuisci a OpenStreetMap e ai suoi contributori: attribuzione a “© OpenStreetMap contributors”. Se li alteri o nei crei di nuovi basandoti su di essi, può rendere disponibili i risultati solo sotto la stessa licenza. Poi ovviamente, come tutti i progetti “aperti” sostenuti con il contributo volontario, una donazione è sempre gradita!

Per ulteriori informazioni e delle FAQ sulla licenza di OSM, potete guardare in questa pagina: OSM License.

La struttura dei dati

I dati geografici di OSM sono mantenuti in un database PostgreSQL che risulta accessibile all’esterno (lettura e scrittura) tramite le apposite API di OSM. La sua organizzazione è abbastanza complessa ma qui non ci interessa; ci interessa invece sapere quali sono gli elementi topologici usati per memorizzare i dati e come vengono salvate le informazioni ad essi associate (i cosiddetti attributi).

In OSM gli elementi base adoperati per modellizzare gli oggetti e le entità reali presenti nel territorio sono i seguenti:

il nodo (node) è un singolo punto geografico individuato da una coppia di coordinate (lat, lng) ;

(node) è un singolo punto geografico individuato da una coppia di coordinate (lat, lng) ; il percorso (way) è una interconnessione ordinata di almeno 2 ed al massimo 2000 nodi, cioè quello che con altra terminologia viene anche chiamato poli-linea; quindi è individuato dalla sequenza ordinata (o array) delle coordinate dei suoi nodi;

(way) è una interconnessione ordinata di almeno 2 ed al massimo 2000 nodi, cioè quello che con altra terminologia viene anche chiamato poli-linea; quindi è individuato dalla sequenza ordinata (o array) delle coordinate dei suoi nodi; la relazione (relation) è un raggruppamento di diversi elementi, nodi, percorsi e in alcuni casi anche di altre relazioni, che insieme definiscono una entità geografica più o meno articolata sul terreno.

Notate che non abbiamo menzionato l’elemento area o poligono, infatti in OSM l’area è considerato come un caso particolare di percorso, ovvero un percorso chiuso. Fatta questa precisazione, l’area può comunque essere considerata come un quarto tipo di elemento (elemento derivato). Tuttavia, poichè non è detto che tutti i percorsi chiusi siano delle aree, le “vere” aree vengono specificate con appositi tag (… li vediamo tra un attimo) che le caratterizzano come tali; solitamente viene usato il tag: area=yes.

Diciamo che a parte le relazioni, si tratta degli elementi topologici caratteristici per modellare geodati vettoriali in tutti i sistemi geografici.

Le relazioni

Le relazioni servono per descrivere elementi complessi o articolati che sono composti da più membri tra loro correlati; per capirci meglio con qualche esempio, si può rappresentare con una relazione

un edificio composto da più elementi (multi-poligono) e magari con delle strade di collegamento;

una linea bus, fatta dal percorso più le fermate;

un ponte, o meglio i diversi elementi che lo compongono;

i limiti amministrativi

Ogni membro può avere opzionalmente un ruolo (testo descrittivo) che spiega qual’è la sua funzione all’interno della relazione. Per esempio, la figura seguente mostra una relazione che modella due edifici con cortili (è di tipo multipoligono) i cui membri sono delle linee (way) alcune esterne (role=outer) ed altre interne (role=inner):

Esistono diversi tipi di relazioni e nella pagina Types of Relation sono indicati tutti, sia quelli già riconosciuti che i proposti; questi probabilmente sono tra i tipi più usati:

associatedStreet serve per mettere in relazione le vie con i numeri civici;

serve per mettere in relazione le vie con i numeri civici; multipolygon serve per creare poligoni complessi che si compongono di più di una way (per esempio un’area conun buco come un lago con un’isola in mezzo);

serve per creare poligoni complessi che si compongono di più di una way (per esempio un’area conun buco come un lago con un’isola in mezzo); restriction serve per vietare le svolte;

serve per vietare le svolte; boundary serve per raggruppare aree e creare enclavi ed exclavi;

serve per raggruppare aree e creare enclavi ed exclavi; route serve per creare dei percorsi, possono essere pedonali, ciclabili,

linee di trasporti pubblici … etc;

serve per creare dei percorsi, possono essere pedonali, ciclabili, linee di trasporti pubblici … etc; enforcement serve per inserire elementi per misurare e documentare le violazioni veicolari;

serve per inserire elementi per misurare e documentare le violazioni veicolari; destination sign serve per dare informazioni sulle destinazioni agli incroci e alle svolte (molto utile per i programmi di routing).

E’ chiaro che quando un mapper deve decidere se una certa entità nel territorio deve essere registrata come relazione oppure no, non esistendo una regola rigorosa, il dubbio può sempre esserci. In questi casi gioca molto l’esperienza e l’esempio di come sono stati risolti altri casi simili.

Il sistema dei Tag

Le informazioni associate ai singoli elementi topologici sono espresse in OSM con i cosiddetti tag che in pratica sono delle coppie chiave=valore (key=value); solitamente la chiave descrive una famiglia di caratteristiche, che poi viene specificata dal valore. Se volete, i tag sono assimilabili ai tipici attributi dei dati vettoriali.

Non esiste un numero fissato di tag da usare per descrivere un dato elemento (nodo, linea, area o relazione); se ne possono scegliere quanti se ne ritiene opportuno, anche se esistono delle pratiche consigliate. Qui di seguito vediamo per esempio i tag usati per descrivere una strada cittadina ed una scuola:

La guida fondamentale per scegliere i tag più appropriati la trovate in questa pagina: Map features. In pratica essa contiene un elenco dei principali tag di OSM raggruppati per categorie, dove per ciascuno tag sono indicati, oltre alla descrizione, i tipi di oggetto con cui può essere usato, l’icona (se c’è) con cui viene rappresentato sulla mappa, un immagine-esempio dell’entità reale che rappresenta e in alcuni casi anche il conteggio degli elementi già presenti in OSM con quel tag.

Da questo elenco poi si può accedere alle schede dettagliate dei tag, precisamente:

cliccando sulla key si accede su una pagina dedicata ad essa (key con tutti i possibili value);

si accede su una pagina dedicata ad essa (key con tutti i possibili value); cliccando sul value, si accede alla scheda (monografia) del tag vero e proprio (coppia key=value ).

entrambi le schede/pagine sono molto utili (specialmente ai mapper) per avere informazioni più approfondite su cosa rappresentano i tag, statistiche d’uso e quando adoperarli.

Tra le categorie con cui sono classificati i tag, ci sono quelle indicate come “altre proprietà” che sono di carattere generale, ovvero relative a tag usabili con qualunque tipo di entità/oggetto e tra queste abbiamo in particolare:

il gruppo name che contiene tutti i possibili nomi con cui può essere identificato un elemento;

che contiene tutti i possibili nomi con cui può essere identificato un elemento; il gruppo properties che contiene delle generiche proprietà che possono essere utili per caratterizzare un elemento.

Le key ‘area’ ed ‘ele’

Tra le properties troviamo per esempio il tag area=yes che abbiamo visto prima e che serve per specificare quando un percorso chiuso rappresenta un area. Se si apre la sua pagina/scheda troviamo altre indicazioni sul suo uso e anche due elenchi di tag: uno relativo a percorsi chiusi che restano tali (no aree) e l’altro relativo a tag che intrinsecamente rappresentano delle aree, senza bisogno di specificare il tag area=yes.

Sempre tra le properties troviamo un altro tag particolare: ele=numero che è associabile solo ai nodi (in alcuni casi anche alle aree) e rappresenta la quota espressa in metri, quindi permette di aggiungere la terza dimensione. Va detto che in OSM questa altitudine è espressa secondo il sistema WGS84/EGM96 (cioè usando come riferimento il geoide EGM96) che è differente dalla quota normalmente restituita dai dispositivi GPS (questi usano l’ellissoide WGS84). Nella sua pagina Key:ele trovate spiegato tutto ed in particolare una tabella in cui sono elencati i diversi sistemi di riferimento altimetrico dei vari paesi; per l’ Italia il riferimento nazionale è il mareografo di Genova.

Eventualmente se si vuole esprimere la quota adoperando un diverso sistema altimetrico (uno locale) bisogna adoperare il tag ele:local=numero.

Tag liberi !

I tag elencati nella pagina Map features sono quelli approvati dalla comunità di OSM e da considerarsi informalmente i tag standard: quelli che OSM consiglia di usare. Tuttavia il sistema dei tag di OSM è libero, cioè tutti gli utenti possono proporre nuovi tag per migliorare la descrizione degli elementi o anche per consentire delle analisi spaziali basate su caratteristiche non ancora supportate dai tag già definiti.

Questa sorprendente caratteristica consente di mappare con estrema versatilità qualunque cosa in qualunque parte del mondo, associandogli un insieme di tag opportuni (ricordiamo che non c’è un limite al numero di tag usabili per ciascun elemento). Naturalmente la “buona prassi” è quella di partire dai tag standard, ma quando tra questi non si trovano quelli adatti per descrivere compiutamente l’oggetto mappato, se ne possono proporre di nuovi.

Nella pagina Proposal process ci sono le indicazioni su come si procede per proporre dei nuovi tag e nella pagina Proposed features si trovano catalogati tutti i tag che sono stati già proposti, raggruppati per comodità o per stage (attivi, inattivi, proposti) o per status (approvati, abbandonati, cancellati, obsoleti, … etc).

Comunque questo è un argomento che interessa di più gli editor di OSM; come semplici utilizzatori ci interessa invece sapere come districarsi in questa giungla di tag ed eventualmente risalire al loro significato quando è ignoto. Oltretutto nella mappa ufficiale di OSM vengono rappresentati solo gli elementi marcati con i tag cosiddetti “standard”, ma ciò non toglie che è possibile realizzare delle cartografie specializzate o tematiche che riportino anche elementi con tag meno comuni ma inerenti lo scopo della mappa.

Esistono delle risorse on-line (vedi in questa pagina: Finding your tag) che aiutano a cercare i tag di OSM per conoscerne il significato; tra queste quelle che vi consiglio sono: Taginfo e TagFinder. Naturalmente inutile dire che la ricerca inizialmente va sempre fatta nell’elenco dei tag standard (che sono i più frequenti).

Bene, per adesso ci fermiamo qui.

In un prossimo articolo vedremo quali sono i formati-file e gli strumenti con cui è possibile estrarre (esportare) i dati di OSM e quindi come utilizzarli.