Come consultare il database Yahoo! GeoPlanet
In questo post vedremo un esempio di utilizzo del database GeoPlanet presentato in precedenza. Supponiamo di avere importato i file testuali nel nostro database (nel mio caso SQL Server 2008).
Partiamo da una richiesta che ci fornisca tutte le entità geografiche italiane. Eseguiamo una query sulla tabella Geoplanet_places imponendo che il codice ISO dell’entità sia uguale ad “IT” (L’elenco dei codici ISO può essere trovato al seguente indirizzo).
La query ci fornisce come risultato ben 55696 entità. Cosa abbiamo trovato esattamente? Il campo Place_Type ci chiarisce le idee a riguardo.
Il PlaceType “State” ci fornisce la regione in cui si trova la località. A questo punto possiamo eseguire una nuova ricerca che ci fornisca le località figlie della regione “Campania” (ID=7153333).
Notiamo la comparsa delle Province (PlaceType= County). Nella documentazione ufficiale, Zone viene così descritto: one - Metropolitan Statistical Area (MSA), Telephone Area Code. In più compare un parco Nazionale che viene associato a tutta la regione e non alla singola Provincia.
Troviamo ora le entità che hanno come genitore la provincia di Napoli. Sono registrate 123 entità appartenenti alle seguenti Place_Type: Codici Postali (ZIP), Comuni (LocalAdmin), Isole (Island), Parchi (LandFeature) e Frazioni (Town). I comuni trovati sono 92, in accordo con quanto indicato dal sito web ufficiale dei Comuni Italiani. Se eseguiamo una query imponendo che il Parent_ID sia Napoli troviamo il seguente risultato:
In realtà, per indagare più a fondo sul Comune di Napoli occorre interrogare la tabella GeoPlanet_adjacenses che contiene tutti gli accoppiamenti geografici di coppie di entità. Napoli ha 14 comuni confinanti (o di prima corona). Una vista può aiutarci a leggere meglio la lista risultante.
La tabella Geoplanet_aliases, infine, fornisce per ogni entità una serie di alias in varie lingue.
Vediamo un’applicazione banale. Yahoo offre un Web Service di previsioni del tempo. Invece di inserire una stringa testuale nella query di ricerca col nome della località, basta inserirne il WOEID:
http://weather.yahooapis.com/forecastrss?w=20076932
Se inserite invece la WOEID della vostra località nella seguente stringa
http://www.geomojo.org/cgi-bin/getaltitude.cgi?woeid=20076932
ne troverete le coordinate geografiche e l’altitudine in metri rispetto al livello del mare!
Un servizio più sofisticato (per smanettoni di ordine superiore) è il PlaceFinder di Yahoo.
In conclusione, credo che possa far molto comodo avere a propria esclusiva disposizione un database geografico ufficiale da cui trarre le informazioni principali per poi agganciarsi a servizi web offerti sulla rete. Non possiamo prevedere se il WOEID diventerà uno standard universale nei prossimi anni o scomparirà miseramente ma al momento io lo aggiungerei alla cassetta degli attrezzi del Programmatore moderno!
P.S. Cosa succede con località aventi nomi con caratteri non latini? Per fare questo ho creato una semplice pagina web con una griglia collegata al database tramite sqldatasource.
Mentre le località arabe vengono rese bene quelle cinesi danno più problemi.
Giocando con i settaggi di Firefox, il mio browser predefinito, si può arrivare a un risultato migliore ma è evidente che manca ancora qualcosa. Nella documentazione ufficiale di Yahoo non è specificato che “Cinese” abbiano utilizzato. Se qualcuno di voi ha affrontato e risolto il problema, non esitate a lasciare un commento.