I am trying to find a population database of cities of whole world, no towns, no villages, only cities. I tried various data sources discussed here including following
Database of cities with coordinates and timezone
List of every city and town in the world?
Dataset of World Cities, Counties, Localities, Provinces, and States?
But every city database has one issue. It does not differentiate between a city and a non-city (town, village). When i asked this question to support staff of these data sources, they mentioned that there is no way to distinguish between a city and a town. Is there really no way to differentiate between a city and town and a village and all are considered just populated places?
-
2In UK a city has a cathedral– nmtokenCommented Jan 19, 2018 at 11:05
2 Answers
Criteria of distinction between towns and cities are different from country to country and from time to time. In many places, there is no official distinction between towns and cities.
According to the common Open Street Map convention, city has population of 100 000 or more. There are many local OSM norms, exceptions and holywars though…
If you agree to rely on the OSM data, you could try to use Overpass API:
[out:csv("name", "name:en", ::"id", "population", "wikidata")];
(
node["place"="city"];
);
out;
The above query returns 8869 results. Please note that id
is not persistent.
Or you could try this query on Wikidata:
SELECT DISTINCT ?city ?cityLabel ?geoNamesId {
?city wdt:P31/wdt:P279* wd:Q515 .
OPTIONAL { ?city wdt:P1566 ?geoNamesId . }
# FILTER NOT EXISTS { ?city wdt:P31/wdt:P279* wd:Q3957 . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
The number of results is ~ 25 000.
Cities and towns are classified as such in Wikidata.
Look at the instances of of Paris and my father's village: Gorni Vadin
Paris is, among other things: city and big city. Gorni Vadin is just village.
You can use the Wikidata "classification" to distinguish between cities and towns that are present there.