[Python] Elenco strade italiane per comune

Pietro peter.zamb a gmail.com
Sab 31 Dic 2011 16:04:28 CET


2011/12/30 Alberto Abate <alberto.abate a gmail.com>:
> Un saluto a tutti,
> vorrei sottoporvi questo piccolo quesito.
>
> Vorrei realizzare una funzione in python che ricevendo una città italiana,
> mi restituisca i nomi delle sue strade.
> Questo preferibilmente tramite webservice, cioè senza usare database in
> locale.


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) )
    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... :-)
in alternativa puoi scaricarti tutti i dati relativi all'italia in
formato xml aggiornata settimanalmente [4]  e rielaborarteli come
meglio credi...

Ciao e buon ultimo!

Pietro

[0] http://maps.cloudmade.com
[1] http://www.openstreetmap.org
[2] http://opendatacommons.org/licenses/odbl/
[3] http://developers.cloudmade.com/documentation/python-lib/tutorial/
[4] http://download.gfoss.it/osm/osm/


Maggiori informazioni sulla lista Python