Nel corso della realizzazione di una mia app mi sono reso conto che mi sarebbe servito un database per codificare dei posti in base alla città o comune di locazione e per l’Italia avevo già una serie di tabelle. Volendo però rendere l’applicazione innternazionale si presenta il problema di recuperare i nomi delle città in maniera ordinata.
Esistono diversi servizi Web API che espongono questi dati e sono tutti a pagamento.
Io ho trovato questi:
- Countries Cities API Documentation (natkapral) | RapidAPI
- API: Find Countries | Find Cities & Towns | GeoDB Cities API
che sono servizi con molti dati.
Ma non volendo spendere per un abbonamento e anzi volendo avere a disposizione i dati anche offline ho trovato questo progetto su github:
È un progetto open source e quindi ci sono tutti i sorgenti per metterselo su un proprio server.
Ha anche un servizio attivo per fare i test e con una get a questo indirizzo:
https://countriesnow.space/api/v0.1/countries/iso
si ottiene la lista delle nazioni del mondo.
La cosa più interessante è che i dati sono su tre file in formato csv che ti puoi scaricare e importare in un tuto db e trivi 150 mila città.
Le regioni e province italiane sono codificate male ma si potrebbero correggere e fargli una PR, magari mi vien voglia di farlo.
Probabilmente realizzerò un componente che ha il db locale e anche le chiamate ai loro servizi per fare i test.
La tabella counties ha questie informazioni:
id,name,iso3,iso2,numeric_code,phone_code,capital,currency,currency_name,currency_symbol,tld,native,region,subregion,nationality,timezones,latitude,longitude,emoji,emojiU
La tabella states ha queste informazioni:
id,name,country_id,country_code,country_name,state_code,type,latitude,longitude
La tabella cities ha questo informazioni:
id,name,state_id,state_code,state_name,country_id,country_code,country_name,latitude,longitude,wikiDataId