Home > Web Mapping > Open Data Georiferiti: come visualizzarli su una mappa?

Open Data Georiferiti: come visualizzarli su una mappa?


Negli ultimi tempi sempre più spesso nei vari blog ci s’imbatte in post in cui si parla di Raw Data, Open Data, Linked Data, ecc …, il che testimonia un gran fervore e dibattito sulla questione dei dati liberamente disponibili a tutti.

Ci sono iniziative a livello mondiale (es. Open Knowledge Foundation – http://okfn.org/, Linked Data – http://linkeddata.org/, ecc ….), che stanno ampliando la quantità di dati messi a disposizione degli utenti, e che ,al tempo stesso, contribuiscono anche a livello di proposizione di standard da rispettare per facilitare la condivisione, l’interoperabilità e l’uso dei dati stessi.

A tal riguardo anche sul territorio nazionale iniziano ad esserci iniziative degne di nota, tra tutte sicuramente la prima a produrre risultati concreti è stata Dati Piemonte (http://www.dati.piemonte.it/); altre ne arriveranno a breve, e insieme metteranno a disposizione di tutti dati grezzi (raw), e dati open liberamente utilizzabili (in realtà utilizzabili rispettando le licenze d’uso del dato stesso, ma lo spirito che anima queste iniziative è senz’altro quello di rendere tutta l’informazione disponibile senza restrizioni).

Partendo da una situazione in cui molti anni fa (ma forse neanche così tanti in effetti ….), in cui i dati e le informazioni che da questi si potevano trarre erano per così dire “… chiuse in un cassetto ….” e disponibili inizialmente solo in seguito a richieste di autorizzazione e in formati dati per lo più proprietari, si è successivamente poi transitati per un momento storico in cui questi dati ed informazioni sono stati esposti tramite applicazioni, (modello ampliatosi ulteriormente con l’avvento del mondo web). Quello che si prospetta ora è un nuovo scenario in cui sicuramente disponibilità di dati grezzi e pubblici sarà molto più ampia che non nel passato anche recente: per certi versi, portando all’estremo questo modello si può dire che potremmo rischiare l’overdose di dati!

In un tale scenario diventa quindi importante avere degli strumenti che permettano di poter usare il più facilmente possibile questi dati anche ad un’utenza “non tecnica”, al fine di permettere a tutti di usare i dati grezzi e liberi disponibili per ricavare ed estrarre le informazioni necessarie ai propri fini e attività.

Il concetto può sembrare banale ma è uno dei rischi che vedo nella ampia proliferazione di dati in formati e protocolli di accesso diversi, per quanto standard, ma spesso astrusi ad un’utenza non tecnica, fenomeno che rischia di far diventare rapidamente questi dati liberamente disponibili “lettera morta” e vanificare, in parte, il grosso sforzo che ha portato proprio a renderli aperti a tutti.

I dati prettamente alfanumerici possono essere “quasi” universalmente resi disponibili come raw data, ad esempio con un file CSV: questo formato infatti è così ampiamente diffuso e “standard de facto” che una volta in possesso dell’utente finale, sia esso un professionista, un tecnico, o anche solo un utente casuale di internet ma interessato a quel dato, questi con uno strumento che molto probabilmente ha sulla sua postazione di lavoro (Excel di Microsoft Office, Calc di Open Office, e altro), con un semplice doppio click e poche altre azioni (magari istruite con delle semplici linee guida all’utilizzo del dato), può essere in grado di visualizzare.

Discorso leggermente diverso penso valga per i dati geografici, per cui il rischio citato in precedenza può essere molto più concreto (e il che è un peccato perché chi opera con i dati spaziali sa che è diverso vedere un elenco tabellare di un dato rispetto a vedertelo su una mappa, il livello di comunicazione informativa, esplicita ed implicita, è diverso e ci sono cose, concetti, relazioni, ecc …. che, se non viste su una mappa, non saranno colti).

E’ vero che ci sono formati dati e protocolli standard (ESRI shapefile, DXF, KML, gli standard OGC, ecc ….),ma non possiamo certo dire che questi siano così “universali” da essere messi sullo stesso livello del file in formato CSV del paragrafo precedente, e queste considerazioni valgono in maggior misura per un utente casuale che non abbia conoscenze tecniche pregresse.

La finalità di questo post è ben lungi dal cercare di dare una risposta complessiva al problema sopra citato, ma vuole provare a dare delle indicazioni pratiche, ad un’utenza minimamente tecnica su come, in alcuni casi, sia possibile partire da un dato grezzo liberamente disponibile, georiferirlo e pubblicarlo facilmente su una mappa web di un proprio sito.

Allo scopo mi serviva un dato “open data” liberamente disponibile, georiferito o georiferibile, e con un insieme di dati significativo così da rendere l’esempio non solo accademico ma arrivare ad un qualcosa di utile e non banale.

La scelta è caduta sull’anagrafe delle strutture di ricettività della Regione Piemonte con lo scopo di fare una mappa in cui tutte queste strutture comparissero contemporaneamente: normalmente nei siti a scopo turistico si può ricercare una struttura per nome, per indirizzo, al più per comune, ma non mi ero mai imbattuto in una mappa web che mi desse una visione d’insieme di tutte queste strutture.

Dati di partenza
I dati di partenza sono stati prelevati dal sito Dati Piemonte (rif. http://www.dati.piemonte.it/): il dataset utilizzato è quello anagrafe delle strutture di ricettività sul territorio piemontese, circa 5.000 strutture, quindi anche numericamente significativo in termini di mole di dati da trattare (rif. http://www.dati.piemonte.it/dato/item/1232-anagrafica-esercizi-ricettivit%C3%A0.html).

Il dataset viene offerto, dopo aver accettato la licenza d’uso (Creative Commons – CC0 1.0 Universal.), insieme alle linee guida per l’utilizzare, in formato CSV e quindi facilmente consultabile con Excel di Microsoft Office o Calc di Open Office.

I successivi problemi da affrontare sono stati: come mettere in modo efficace ed efficiente tutti questi dati su una mappa web, come far fruire i dati alla mappa e come georiferire i dati stessi

Mettere in modo efficace ed efficiente tutti i dati su una mappa web
Il modo più efficace ed efficiente che si ha a disposizione, quando si ha a che fare con grosse moli di dati puntuali da rappresentare su una mappa, è quello di usare le tecniche di aggregazione dinamica dell’informazione puntuale (clustering).

Nel mio caso ho usato quanto Google Maps mette a disposizione (rif. http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/ ), ma algoritmi analoghi sono disponibili anche in soluzioni open source quali OpenLayers (rif. http://dev.openlayers.org/releases/OpenLayers-2.10/examples/strategy-cluster.html ). Magari in un prossimo futuro può essere argomento di un futuro post.

Analizzando gli esempi offerti ho visto che avrei dovuto esporre i miei dati via JSON per poterli utilizzare con questa soluzione.

Far fruire i dati alla mappa
La situazione di partenza era quindi la seguente:

  • avevo dei dati pubblici a disposizione, anche se di dimensione non banale in termini di numero di record
  • avevo necessità di accedere a questi dati via http (JSON), ma non avevo, e non volevo dotarmi, di un’infrastruttura che li ospitasse

La scelta che ho fatto è stata quella di utilizzare Google Fusion Tables (rif. tables.googlelabs.com/ ), che mi permetteva di:

  • ospitare senza problemi i miei circa 5.000 record di dati
  • georiferirmeli
  • espormeli via JSON

Dopo una prima prova su un campione di dati ho visto che la strada era perseguibile.

Visto che il numero di record era troppo elevato da trattare in un solo colpo, ho suddiviso i dati di partenza in otto files corrispondesti alle rispettive provincie piemontesi e li ho caricati su Google Fusion Tables.

Una volta caricati, per ognuno di questi files ho provveduto a rendere “pubblici” (tasto Share e poi opzione Public), la tabella stessa, condizione necessaria per l’esposizione via JSON al fine di agganciare successivamente i dati dalla mappa.

Tra i dati, nell’ottica di una loro georeferenziazione, le colonne che possono essere utili sono:

·    indirizzo: es. VIA CATTEDRALE, 7
·    CAP: es. 14100
·    Comune: es. ASTI

Il primo passo è stato quello di aggiungere al file CSV, trasformato in foglio elettronico, una colonna che ho denominato “Georeferenziazione” che concatenasse (formula utilizzata =CONCATENA(E3;” “;D3;” “;C3) nel mio caso), queste informazioni allo scopo di poter ottenere la localizzazione su mappa dell’indirizzo completo. Le tre informazioni di cui sopra nel nuovo campo sono quindi così concatenate

ASTI 14100 VIA CATTEDRALE, 7

Purtroppo quasi subito Google ha fatto una modifica a Fusion Tables in seguito alla quale la georeferenziazione non restituiva più latitudine e longitudine della georeferenziazione per indirizzo, ma la georeferenziazione veniva messa in un unico oggetto il che rendeva impossibile utilizzare facilmente la soluzione di clustering di punti su mappa che avevo individuato.

Ho dovuto quindi trovare, per questa fase, una soluzione alternativa

Georeferenziazione
Dopo un po’ di ricerche sul web ho individuato il seguente indirizzo

http://stevemorse.org/jcal/latlonbatchsecure.html?direction=forward

che faceva al mio caso, permettendomi di georiferire in blocco molti indirizzi per volta utilizzando sia Yahoo! Maps sia Google Maps.

Per ogni files delle singole province in cui ho suddiviso i dati di partenza, o copiato il contenuto della colonna “Georeferenziazione” nell’area di testo della procedura di Steve Morse e così ho ottenuto per ogni indirizzo la sua georeferenziazione in termini di latitudine e longitudine, dati che ho provveduto a copiare in due nuove colonne (denominate “Latitudine” e “Longitudine”), che ho aggiunto alle tabelle per provincia presenti su Google Fusion Tables.

E’ ovvio che la procedura automatica non risolve tutti gli indirizzi (il processo automatico però permette di georiferire correttamente almeno un buon 80 % dei dati), e quindi è necessaria un’attività di raffinamento e controllo che va eseguita manualmente.

Nei dati da me georiferiti ho cercato di eliminare gli errori più macroscopici (es. indirizzi finiti fuori provincia di appartenenza e alcuni doppioni in termini di georeferenziazione), ma i dati dell’esempio finale potrebbero avere ancora qualche errore: tuttavia lo scopo dell’esempio non era quello di avere un prodotto finito quanto di formine una linea guida per portare su mappa degli open data, e quindi il processo di raffinamento delle informazioni non è da considerare completo (se devo dare un’indicazione mi sentirei di affermare che il dato è da considerare comunque buono al 90%).

Le verifiche di raffinamento della procedura di georeferenziazione sono state fatte:

  • usando l’applicazione con la mappa, cambiando di volta in volta nel codice il riferimento alla tabella della provincia da controllare. Per i punti che ricadevano al di fuori della provincia stessa questi si possono interrigare e vedere di capire se ci sono problemi nell’interpretazione dell’indirizzo stesso o semplicemente riprovando ad usare la procedura di georeferenziazione sul singolo indirizzi magari usando una fonte diversa (es. Yahoo! al posto di Google)
  • ordinando le colonne latitudine / longitudine per individuare i valori troppo estremi (minimi e massimi rispetto alla media), come casi “critici” da verificare.

Terminata la georeferenziazione per le singole province i dati sono stati esportati singolarmente e poi rimessi insieme in un unico file e ricaricati su Google Fusion Tables.

Ecco l’accesso alle singole tabelle:

mentre ecco l’accesso alla tabella d’insieme

Dettagli sulla mappa
Il risultato finale dell’attività è rappresentato dalla seguente mappa (fare click sull’iimagine per lanciare l’applicativo)

Il codice sorgente della mappa (liberamente disponibile a tutti), è commentato nei suoi vari passi quindi per chi interessato consiglio di consultare direttamente il codice della pagina.

Conclusioni
Con l’approccio indicato è quindi possibile portare su mappa un dato puntuale che è georiferito o georiferibile.

Credo che sarebbe interessante che i vari portali che trattano open data o linked data iniziassero a rendere disponibili anche i dati in modo tale che questi possano essere facilmente essere posti su una mappa. Qualcosa ho visto che inizia a muoversi, http://mapperz.blogspot.com/2011/05/open-street-map-linked-geodata.html e http://browser.linkedgeodata.org/?lat=51.063657689874&lon=13.750735172091&zoom=16&prop=amenity&val=

E’ ovvio che si va così un po’ oltre quello che è il concetto di open data e ci si sposta sempre di più verso un concetto di “servizio” (da open data a open service?), e su questi aspetti ci sono iniziative autorevoli che cercano di normare da tempo questi aspetti come INSPIRE in Europa, ma credo che sia necessario che questo due mondi inizino a colloquiare e trovare punti di contatto e collaborazione.

  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: