GeoNames: tutti gli stati del mondo in un database

Geonames è un database geografico, gratuito, di tutti gli stati del mondo.

Contiene, allo stato attuale, i dati di circa 10 milioni di città (toponimi)!

I dati vengono resi disponibili sottoforma di webservices o di database dump, quest’ultimo aggiornato quotidianamente.

I record, delimitati da tab, sono in formato testo utf8.

La tabella principale contiene i seguenti campi (riportiamo le informazioni presenti sul sito ufficiale www.geonames.org ):

geonameid : integer id of record in geonames database
name : name of geographical point (utf8) varchar(200)
asciiname : name of geographical point in plain ascii characters, varchar(200)
alternatenames : alternatenames, comma separated varchar(5000)
latitude : latitude in decimal degrees (wgs84)
longitude : longitude in decimal degrees (wgs84)
feature class : see http://www.geonames.org/export/codes.html, char(1)
feature code : see http://www.geonames.org/export/codes.html, varchar(10)
country code : ISO-3166 2-letter country code, 2 characters
cc2 : alternate country codes, comma separated, ISO-3166 2-letter country code, 60 characters
admin1 code : fipscode (subject to change to iso code), see file admin1Codes.txt for display names of this code; varchar(20)
admin2 code : code for the second administrative division, a county in the US, see file admin2Codes.txt; varchar(80)
admin3 code : code for third level administrative division, varchar(20)
admin4 code : code for fourth level administrative division, varchar(20)
population : bigint (8 byte int)
elevation : in meters, integer
dem : digital elevation model, srtm3 or gtopo30, average elevation, ca 90mx90m or ca 900mx900m area in meters, integer.
timezone : the timezone id (see file timeZone.txt) varchar(40)
modification date : date of last modification in yyyy-MM-dd format

Viene da chiedersi come possa essere utilizzato questo servizio.

Consideriamo la seguente necessità: realizzare un modulo di registrazione che preveda di specificare nazione, regione, provincia e città.

Utilizzando GeoNames (affiancato da jQuery, in questo caso!), con le opportune interrogazioni al webservice, otteniamo velocemente il nostro scopo.

Qui un elenco dei webservices messi a disposizione http://www.geonames.org/export/ws-overview.html.

Accanto ad ogni voce è presente un link permette il recupero dei dati in uno dei formati XML, JSON, RDF, CSV, TXT, RSS o KML.

Provate, ad esempio, a cliccare sulla voce XML del webservice countryInfo, vedrete alcune informazioni relative alla Germania!

I dati GeoNames, come abbiamo detto, sono di pubblico utilizzo, gratuiti. Per poterli utilizzare bisogna essere registrati (deve essere indicato il proprio username quando vengono effettuate le richieste ad uno dei webservice)

Ci sono però delle limitazioni:
– limite di 30.000 crediti/giorno
– limite di 2.000 crediti/ora

Un credito corrisponde ad una chiamata al webservice ed ogni webservice ha il proprio “costo”.
Il webservice che abbiamo utilizzato nel precedente esempio richiede 1 credito.

Per “realtà” più impegnative, GeoNames mette a disposizione due servizi “Premium”: Best Availability e Best Price.

I limiti sono più alti così come i crediti, oltre ad avere un servizio più efficiente e sempre disponibile.

Qui tutti i dettagli GeoNames Premium Webservices.