Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lutangar/cities.json

:cityscape: Cities of the world in Json, based on GeoNames Gazetteer
https://github.com/lutangar/cities.json

cities dataset geolocation geonames-gazetteer json

Last synced: 4 days ago
JSON representation

:cityscape: Cities of the world in Json, based on GeoNames Gazetteer

Awesome Lists containing this project

README

        

# :cityscape: Cities of the World [![Creative Commons License](https://i.creativecommons.org/l/by/3.0/80x15.png)](https://creativecommons.org/licenses/by/3.0/)

These **cities** are coming from the [GeoNames Gazetteer](http://www.geonames.org).

> _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:

- ISO 3166-1 alpha-2 country code
- name
- Latitude
- Longitude
- Admin code 1: the code of an administrative division (see [Administrative divisions](#administrative-divisions))
- Admin code 2: the code of an administrative subdivision (see [Administrative divisions](#administrative-divisions))

```jsonc
[
{
"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** :

```jsonc
[
{
"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](./admin1.json) file.
Where the `code` is the concatenation of the `country` code and the `admin1` code, for example:

- `US.MA` → **Massachusetts**

For [./admin2.json](./admin2.json) concatenate `country`, `admin1` code and the `admin2` code:

- `US.MA.025` → **Suffolk County**

## Resource

- https://download.geonames.org/export/dump/

## Licence

This work is licensed under a [Creative Commons Attribution 3.0 License](https://creativecommons.org/licenses/by/3.0/).