| Google maps: Il geocoding via HTTP |
|
|
| Scritto da Matteo Parrucci | ||||||||
| sabato 08 marzo 2008 | ||||||||
Nel corso di un progetto mi sono scontrato con l'esigenza di immagazzinare coordinate di luoghi a seconda della ricerca effettuata.Per farlo lato server (ed immagazzinare direttamente i dati sul DB) ho trovato che è sufficiente fare una chiamata all'url http://maps.google.com/maps/geo. Di seguito una lista dei parametri che è possibile passare (in GET) a questo url per ottenere diverse risposte.
from urllib import * from django.utils import simplejson def getGeocode(address): address=address.encode('utf-8') mapsUrl = 'http://maps.google.com/maps/geo' query={'q':address,'output':'json','oe':'utf8','key':YOURKEYGOESHERE'} url = '?'.join([mapsUrl,urlencode(query)]) coordinates = simplejson.loads(urlopen(url).read()) return coordinates Il parametro in ingresso (address) è l'indirizzo in formato testuale. Il valore di ritorno è un array in cui sono contenute, oltre ad una quantita di dati sul posto cercato, anche le tre coordinate (latitudine, longitudine ed altitudine). La comodità (utilizzando python e django) è che, scegliendo il formato di ritorno json ed utilizzando la funzione simplejson.loads per la decodifica, ottengo direttamente un dizionario strutturato come segue. Nell'esempio la ricerca del quartier generale di Google (ottenibile richiamnado questo URL ): { "name": "1600 Amphitheatre Parkway, Mountain View, CA, USA", "Status": { "code": 200, "request": "geocode" }, "Placemark": [ { "address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "AddressDetails": { "Country": { "CountryNameCode": "US", "AdministrativeArea": { "AdministrativeAreaName": "CA", "SubAdministrativeArea": { "SubAdministrativeAreaName": "Santa Clara", "Locality": { "LocalityName": "Mountain View", "Thoroughfare": { "ThoroughfareName": "1600 Amphitheatre Pkwy" }, "PostalCode": { "PostalCodeNumber": "94043" } } } } }, "Accuracy": 8 }, "Point": { "coordinates": [-122.083739, 37.423021, 0] } } ] } Detto ciò è facile intuire per quale motivo con python e django risulti così semplice immagazzinare nel DB o fare operazioni server-side con i dati che google ci ritorna in formato json. Quota questo articolo sul tuo sito
Solo gli utenti registrati possono lasciare commenti |
||||||||
| < Prec. | Pros. > |
|---|
| Immortalità |
| Non voglio raggiungere l'immortalità tramite il mio lavoro... Voglio raggiungerla non morendo. (Woody Allen) |