venerdì 15 luglio 2011

Grazie Big G!

Una recente attività in cui sono stato coinvolto ha riguardato la localizzazione di una serie di punti attraverso la definizione dell'indirizzo costituito da toponimo della via, numero civico (dove presente) e comune.
Mi è già capitato altre volte di dover posizionare una serie di punti attraverso un sistema di coordinate (perchè generalizzando ed estremizzando il concetto, si può definire così) in cui ogni punto, al posto delle classiche coordinate x/y oppure latitudine/longitudine, è definito attraverso un indirizzo.
Il processo che porta alla localizzazione di una serie di punti definiti da questo tipo di coordinate va sotto il nome di geocoding (sempre geo ma diverso dal geotagging di cui ho trattato nel post precedente).
La differenza sostanziale, rispetto ad un sistema di coordinate x/y o lat/long, sta nel fatto che questo sistema ha bisogno di una base di appoggio per posizionare i punti perchè le informazioni che ne permettono la localizzazione nello spazio sono definite a partire da un sistema di riferimento che nel caso specifico è costituito da uno stradario. Uno stradario è in sostanza un grafo stradale formato da una serie di archi interconnessi tra loro. Gli attributi che individuano ogni singolo tratto di strada sono: il toponimo (con l'eventuale indicazione del tipo di strada), la numerazione civica definita attraverso il concetto di from/to (cioè da che numero a che numero va la numerazione civica su quel tratto di strada) e dall'ambito di appartenza del tratto stradale (solitamente in Italia sono il comune o al massimo la frazione). Tali attributi sono fondamentali per il processo di geocoding.
Nell'intraprendere questo processo bisogna tenere conto di due ordini di problemi: uno più generale che è costituito dalla base di riferimento che permette la localizzazione degli oggetti (lo stradario di poco fa) e uno più specifico che riguarda gli indirizzi relativi ai punti che si vogliono localizzare.
La base di riferimento, ovvero lo stradario, deve essere il più aggiornata possibile sia in termini di strade che in termini, ovviamente, di toponomastica e numerazione civica.
Gli indirizzi, che individuano gli oggetti da localizzare invece, devono necessariamente essere scritti nel miglior modo possibile. Per miglior modo possibile intendo dire che devono essere conguenti con la base di riferimento che utilizzerò per posizionarli, detto in altri termini devono essere normalizzati.
Per ovviare a questi inconvenienti ho deciso di utilizzare un servizio web offerto da Google (da qui il titolo del post) che a partire da un spreadsheet caricato su Google Docs contenente un campo ID (identificativo) e un campo Indirizzo (non deve necessariamente chiamarsi così) genera le coordinate lat/long per ogni punto contenuto nel foglio di calcolo. In questo modo i diversi punti vengono localizzati su Google Maps attraverso un sistema di coordinate assoluto che non ha più bisogno del prerequisito fondamentale costituito dalla base di riferimento (lo stradario della viabilità).
Il vantaggio di utilizzare come base di riferimento lo stradario di Maps è duplice: abbiamo una base aggiornata, o meglio, costantemente aggiornata e il lavoro di normalizzazione degli indirizzi viene fatto in realtime dal motore di Google. Questo vuol dire che tutto il lavoro di normalizzazione per rendere le due basi dati conguenti e che dovrebbe essere fatto a monte del processo di localizzazione non è più necessario. Potrò così avere un indirizzo scritto come via Cesare Battisti 1, Torino e un altro scritto come via Battisti Cesare 3, Torino: i due punti saranno sì ben distinti perchè si riferiscono a due numeri civici diversi ma saranno correttamente sulla stessa via.
Giusto per dare qualche numero sui risultati: su un totale di poco più di 2.000 indirizzi, circa il 90% è stato localizzato e posizionato in maniera corretta, il restante 10% è formato da oggetti non localizzati o da oggetti che richiedono un controllo più puntuale per essere validati.
Lo stesso lavoro, affrontato con un approccio diverso, ha invece portato ad una prima localizzazione corretta di circa il 50% dei punti, la localizzazione del restante 50% avrebbe richiesto un lavoro di normalizzazione e di armonizzazione della base dati di partenza non indifferente.
Concludo con un piccola riflessione: quello che per molti è un semplice strumento per ricercare indirizzi, luoghi, punti di interesse e per pianificare percorsi, può diventare uno strumento di lavoro avanzato, efficace ed economico all'interno di realtà diverse che quotidianamente hanno a che fare con dati spaziali.
Il think big, start small è anche questo.
Chissà se in quel di Mountain View, qualche anno fa, avranno pensato proprio in questo modo ... a giudicare dai risultati credo proprio di sì!

martedì 5 luglio 2011

Il mondo in una mano.

Sono appena tornato dalle vacanze (ahimè) e sono giunto a questa sconvolgente considerazione che fornisce il titolo a questo primo post di luglio.
Sicuramente vi starete domandando cosa c'entrano le due affermazioni. Apparentemente nulla. Ma in realtà un nesso c'è.
Fino a non molto tempo fa (non ho intenzione di andare troppo in là con gli anni perchè non ce n'è bisogno, basta qualche anno), si andava in vacanza, si facevano delle foto - con una normalissima fotocamera digitale - e si ritornava a casa scaricando mega e mega di dati su un computer. Dopo ciò si passavano allegre (dipende dai punti di vista) serate a rivedere i ricordi delle vacanze appena trascorse in attesa delle prossime.
Forse l'ho presa un po' alla larga ... ma ormai ho incominciato e quindi è meglio finire.
Ora, la situazione è più o meno simile, solo che si sono aggiunti dei dettagli che per chi come me è appassionato di informatica e "geografia" costituiscono quel qualcosa in più che rende il ritorno dalle vacanze meno traumatico. Mi spiego meglio.
Oggi, grazie all'integrazione di diverse tecnologie, è possibile aggiungere alle foto delle vacanze (ma non solo quelle) un'informazione in più: la posizione.
Ciò che viene definito con il termine di geotagging, altro non è che la memorizzazione delle coordinate spaziali (determinate attraverso un sensore gps nel momento dello scatto) nelle caratteristiche di un file immagine. In questo modo per ogni foto è possibile risalire alla posizione ed è quindi possibile posizionare l'immagine (o un punto) nello spazio. Viceversa è altresì possibile rilevare la posizione di un punto ed associare a quest'ultimo una foto.
Forse ora risulterà più chiaro il legame tra ciò che affermavo qualche riga più in alto e forse risulterà anche più chiaro il titolo del messaggio.
Sostanzialmente in un apparecchio poco più grande del palmo di una mano (sia esso una fotocamera digitale, sia esso uno smartphone) possiamo immagazzinare una quantità notevole di informazioni georiferite.
Per dirla in altre parole, quello che possiamo avere nel palmo di una mano è un vero e proprio sistema informativo geografico: abbiamo dei punti di coordinate note (ma potrebbero essere anche delle linee), abbiamo degli attributi associati ai punti (anche la foto può essere considerata un attributo), abbiamo in sostanza  delle informazioni spaziali che descrivono il mondo reale, localizzabili su una base cartografica.
Giusto per fare un piccolo esempio:


La freccia verde rappresenta il punto rilevato e la foto seguente l'attributo associato:
San Benedetto del Tronto (AP) - Monumento al gabbiano Jonathan Livingston
Nonostante non sia passato molto tempo dal ritorno alla vita di tutti i giorni, le vacanze sembrano già un ricordo lontano: basterà davvero il geotag delle foto a rendere il rientro meno traumatico? Non ne sono più tanto sicuro ...