mercoledì 11 febbraio 2009

Geocoding, ovvero come ottenere coordinate geografiche da un indirizzo

In attesa di tornare a parlare di API, prendo spunto da una domanda fatta da un utente di questo blog e che suppongo possa essere utile a molti di voi. Abbiamo visto come visualizzare su una Google Map una serie di indirizzi e relative coordinate, caricati direttamente sul database MySQL o importati da un file con estensione .CSV (di fatto da qualsiasi foglio eletttonico tramite opportuna trasformazione).
Può capitare di avere una serie di indirizzi ma non le relative coordinate geografiche. Esiste allora la possibilità di elaborare automaticamente una lista di indirizzi aggiungendo le coordinate di cui abbiamo bisogno?
Una delle soluzioni ci viene offerta da questo servizio che utilizza le Yahoo Maps.

Come si procede per la nostra attività di geocoding? E' molto semplice

1. Scaricate sul vostro PC il template excel (Step #1)
2. Compilate il template coi dati in vostro possesso (non è necessario valorizzare tutti i campi)
3. Copiate e incollate nell'apposito riquadro (Step #2)
4. Cliccate sul tasto "Validate" (Step #3)
5. Cliccate sul tasto "Run geocode" (Step #5)
6. Apparirà una "nuova" lista (Step #6), comprensiva di coordinate, pronta da copiare (basterà cliccare col tasto destro del mouse, selezionare tutto e copiare negli appunti)
7. Incollate la selezione su Excel o Open Office.

Dopo questa semplicissima procedura, potrete salvare il vostro file in formato csv ed essere importato nella tabella MySQL, per poi continuare il nostro lavoro come come abbiamo visto in questo articolo.

Questa è una delle soluzioni già pronte, in realtà potremmo crearci una applicazione personale che utilizzi il Servizio Geocoding delle Google Maps API. Si fà cioè una request al servizio (in formato REST) e la risposta può avvenire in formato JSON, KML, XML e anche CSV. Il discorso però è abbastanza complesso e, forse, potrebbe essere oggetto di un apposito post.
La cosa da sottolineare assolutamente è che non si può utilizzare il servizio per qualcosa che sia diverso dal mostrare i risultati su una Google Map.