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.

4 commenti:

  1. ciao, mi servirebbe proprio avere la possibilità di collocare più indirizzi postali di aziende, di cui dispongo anche tuta una serie di dati.
    Il servizio bathgeocode.com è probabilmente basato su API degli USA e non individua correttamente gli indirizzi europei.
    Nel tuo articolo parlavi di una possibilità per costruire una macchina che permetta di inviare in sequenza gli indirizzi a google map (versione italiana) e di ottenerne un file in formato kml o xml. Potresti spiegarmi come fare da profano? grazie
    simone

    RispondiElimina
  2. Non è proprio una cosa da profano...

    Se vuoi partire da un file excel ti consiglio di scaricare questo:

    http://bbs.keyhole.com/ubb/ubbthreads.php?ubb=download&Number=336650&filename=645546-excel2kml-address.zip

    E' in inglese ma ci sono le istruzioni quindi non dovresti avere problemi, tuttavia se ne parla anche inq uesto articolo in italiano:

    http://www.dynamick.it/creare-mappa-da-lista-indirizzi-1025.html

    La soluzione più raffinata è usare javascript per creare un ciclo FOR che legga i tuoi indirizzi, ne codifichi le coordinate e le pubblichi su una Google Map.

    Un esempio per un singolo indirizzo lo puoi trovare qui:

    http://www.claudio-corti.com/09/il-geocoding-in-google-map/

    Dovrai poi lavorare sul codice in modo da inserirlo come ti dicevo in un ciclo iterativo in modo da codificare una lista indirizzi.

    Buon lavoro.

    RispondiElimina
  3. ciao
    ho provato queste tue indicazioni da commento
    ma il file della bbs non funziona e neanche la pipe!

    RispondiElimina
  4. Ciao.. Sto cercando di ottenere le coordinate dei punti che carico con gli indirizzi ma non mi appare la nuova lista compresiva di coordinate. Cosa devo fare?

    Grazie

    RispondiElimina