Riprendo il discorso inserendo l'evoluzione delle mie ricerche... import simplejson > > import requests > > >> address = 'Galatina' > > latlng = 40.1775244,18.1696415 > > coda = '&sensor=false' > > params_address = 'address=' + address + coda > > params_latlng = 'latlng=' + str(latlng) + coda > > print params_address > > >> #r = requests.get('http://www.google.com', proxies={"http":" >> http://myproxy:3129"}) > > > > r = requests.get(' >> http://maps.google.com/maps/api/geocode/json?'+params_address) > > if r.status_code == requests.codes.ok: > > ris = simplejson.loads(r.content) > > > > #print ris > > address_components = ris['results'][0]['address_components'] > > > > for address in address_components: > > #print address['long_name'], address['short_name'], address['types'] > > > > if address['types'] == [u'locality', u'political']: > > comune = address['long_name'] > > >> if address['types'] == [u'administrative_area_level_2', >> u'political']: > > provincia = address['long_name'] > > cod_prov = address['short_name'] > > >> if address['types'] == [u'administrative_area_level_1', >> u'political']: > > regione = address['long_name'] > > >> if address['types'] == [u'country', u'political']: > > stato = address['long_name'] > > cod_stato = address['short_name'] > > >> if address['types'] == [u'postal_code']: > > cap = address['long_name'] > > >> print comune, provincia, cod_prov, cap > > print regione, stato, cod_stato > > >> >> max_lat = ris['results'][0]['geometry']['bounds']['northeast']['lat'] > > min_lat = ris['results'][0]['geometry']['bounds']['southwest']['lat'] > > >> max_lng = ris['results'][0]['geometry']['bounds']['northeast']['lng'] > > min_lng = ris['results'][0]['geometry']['bounds']['southwest']['lng'] > > >> print 'min_lat',min_lat > > print 'max_lat',max_lat > > print 'min_lng',min_lng > > print 'max_lng',max_lng > > >> >> strade = [] > > i = 0 > > step = 0.0010000 > > >> """ > > for lat in frange(min_lat, max_lat, step): > > for lon in frange(min_lon, max_lon, step): > > indirizzo = Geocoder.latlng_to_address(lat, lon) > > # sleep(5) > > if indirizzo not in strade: > > strade.append(str(lat)+'_'+str(lon)+'_'+indirizzo) > > i += 1 > > >> print 'Count: ',i > > >> strade.sort() > > for s in strade: > > print s > > >> """ > > > Commento qualcosa:
@ Pietro > In che senso non sono affidabili? in che formato lo vorresti? un json > con: provincia, comune, vie? > magari parlandone con la comunity di osm lo possiamo fare... sono inaffidabili nel senso che i nomi delle strade sono davvero pochi e ogni file di regione pesa 130 mb, un po' troppi per analizzarli in modo semplice e controllare aggiornamenti... Non so, mi sembra davvero complesso, con i file osm. @ Salvadori Giordano > Buono il metodo ma la limitazione è effettivamente un “po’ bloccante”.**** > Potresti però fare le richieste con Ip diversi (metodo con i proxy) in modo che Google non > ti blocchi non riconoscendoti come lo stesso utente.** ** > Da quale pkg si installa api che viene richiesto in import dall’esempio con cloudmade??? In effetti sto pensando proprio di usare una lista di proxy per bypassare il limite delle 2500/day richieste. Ho trovato questo modulo python: si chiama requests e semplifica di molto una richiesta nel mio caso json dalle api di google. http://docs.python-requests.org/en/latest/ Come vedete nel codice ho messo una riga commentata che preannuncia la possibilità di gestire le chiamate con proxy... Devo solo trovare una lista di proxy anonimi da provare. Usando il modulo simplejson riesco a trasformare la richiesta in un dizionario che leggo facilmente. Con "requests" e "simplejson" evito di usare il modulo "pygeocoder" che mi sta simpatico per facilità d'uso, ma in effetti non fa altro che incapsulare la chiamata che faccio facilmente con requests in json (ma spulciando la documentazione vedo che va bene anche per html) Ho usato cloudmade, ma occorre registrarsi al sito per ottenere una key da inserire nel codice. Come vedi dal codice sopra, "api" è importato da "cloudmade" stesso; se installi cloudmade lo trovi dentro. Io uso easy_install è molto comodo per installare moduli in python per effettuare delle query sulle api di google non occorre autenticarsi, ma si può fare liberamente restando sotto le 2500 richieste al giorno. Per quanto riguarda rest di viamichelin mi pare che si escluda da solo per il fatto che sia a pagamento... Sono un po' in dubbio sul metodo di scansione dei bounds, troppo inefficiente... Ok, mi sa che ho parlato pure troppo, torno a studiare... Qualunque consiglio è ben accetto
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python