Skip to content

🏙️ Cities of the world in Json, based on GeoNames Gazetteer

Notifications You must be signed in to change notification settings

lutangar/cities.json

Repository files navigation

🏙️ Cities of the World Creative Commons License

These cities are coming from the GeoNames Gazetteer.

all cities with a population > 1000 or seats of adm div (ca 150.000) [...]

Thus, this file is updated monthly and new cities are added as world population rises.

See https://www.geonames.org/datasources/ for the list of data sources used by GeoNames.

Install

npm install --save cities.json

Usage

Either on node or the browser (with webpack) it get as simple as this:

ES5

const cities = require('cities.json');

ES6

import cities from 'cities.json';

Since webpack >= v2.0.0, importing of JSON files will work by default.

Description

This Json version is an array of object of the following shape:

[
  {
    "name": "Lyon",
    "lat": "45.74846",
    "lng": "4.84671",
    "country": "FR",
    "admin1": "84",
    "admin2": "69"
  }
  // etc.
]

These cities can pretty easily be matched with countries by code using the following dataset: https://github.com/annexare/Countries

Administrative divisions

Names and depth of these divisions (and subdivisions) may vary greatly between countries, thus the use of these less expressive property names :

  • admin1 code
  • admin2 code
  • etc.

For example admin1 code for a US city, would stand for the state :

[
  {
    "name": "Boston",
    "lat": "42.35843",
    "lng": "-71.05977",
    "country": "US",
    "admin1": "MA", // Massachusetts
    "admin2": "025"
  }
]

You may map the admin1 code to the full English name through the ./admin1.json file. Where the code is the concatenation of the country code and the admin1 code, for example:

  • US.MAMassachusetts

For ./admin2.json concatenate country, admin1 code and the admin2 code:

  • US.MA.025Suffolk County

Resource

Licence

This work is licensed under a Creative Commons Attribution 3.0 License.