[Python] Elenco strade italiane per comune
Alberto Abate
alberto.abate a gmail.com
Lun 2 Gen 2012 16:31:51 CET
> Ciao, io utilizzerei cloudmade[0], che utilizza come base dati
> openstreetmap[1] (un db con dati georeferenziati forniti dagli utenti
> protetti da OdbL [2]), che ha delle buone API [3].
>
> Qualcosa tipo:
>
> #---
> from cloudmade import api, geocoding, routing, utils
>
> cm = api.API(apikey = 'yourkey', referrer = 'yoursite.it')
>
> def get_data(cityname, objtype):
> citydata = cm.find(geocoding.Query(cityname))
> citybounds = citydata['bounds']
> citybbox = []
> [citybbox.extend(i) for i in citybounds]
> objs = cm.find(api.geocoding.Query().bbox(citybbox).object_type(objtype).limit(100) )
> return objs['features']
>
> def get_names(ways):
> for way in ways:
> if 'name' in way['properties'].keys():
> yield way['properties']['name']
>
> vrroad = get_data('Verona', 'road')
> for name in get_names(vrroad):
> print name
>
> #---
>
> Ho fatto questo breve prova, devi solo capire come fare a farti dare
> più di 10 risultati... :-)
Ciao Pietro,
grazie per i suggerimenti...
Giocando un po' con cloudmade ho visto che per forzare il numero di strade,
basta mettere la funzione "limit" come nell'esempio sopra...io l'ho messo a 100
Scusa l'ignoranza, ma a cosa serve la funzione yield ?...
Io ho usato una semplice lista per poter ordinare alfabeticamente i risultati..
Il problema è che i nomi delle vie a volte sono ripetuti, oppure
l'anagrafica andrebbe ripulita.
Forse valuterò la soluzione offline con file xml, cercando di valutare
aggiornamenti.
Continuo a fare delle prove, ci aggiorniamo
Maggiori informazioni sulla lista
Python