Skip to content


Repository files navigation

Historical boundaries of world countries and cultural regions

world 1880 DRAFT ROUGH

"For most of the past 5,000 years, kingdoms and empires were exceptional islands of political hierarchy, surrounded by much larger territories whose inhabitants systematically avoided fixed, overarching systems of authority." - Graeber and Wengrow, 2021, The Dawn of Everything

This historical boundaries project aims at providing ready-to-use base maps for mapping historical data. It is work in progress: verify the maps by comparison to other sources before using in academic work. If you see errors, report them in the "issues" section.

If you use the maps, think about giving back by contributing.


Several apps using the historical-basemaps dataset have been developped. A non-exhaustive list:

You'll find other use examples with D3 and Leaflet on


All maps are stored in the geojson format: single file per feature layer, human and machine readable, easy to import in qGIS or use in D3 (see d3v5_example.html as well as d3v5_roughjs_example.html with the additional use of rough.js). Integration in Leaflet, OpenLayers et al. is also easy to achieve.


Geocoding precision of multipolygons is adapted for mapping data on world/continent scale. The following fields are available in every file:

  • NAME: the name of the country or region; ideal for text labels
  • SUBJECTO: the name of the colonial power exercising authority on the country or region; the name of the region otherwise; ideal for choropleth colors
  • PARTOF: when a region is part of a larger cultural area, e.g. Czechs as part of the Slavic tribes.
  • BORDERPRECISION : ordinal values 1 (approximate), 2 (moderately precise) and 3 (determined by international law). Ideal for handling approximate border with blur intensity or other visual effect.


The file called places.geojson contains locations of cities and other settlements. For now, it is only a draft and needs your help for completion. Places throughout history can be added to this single file. When used in visualisation software or code, it can be filtered by time fields:

  • name {string}: the toponym (it would be great to have this as nested JSON object, as suggested here, for places whose toponym changed over time, but this is not yet handled by standard GIS; for now, create distinct points with identical coordinate for each inhabitedSince to inhabitedUntil period)
  • inhabitedSince {integer}: inhabited since year
  • inhabitedUntil {integer}: inhabited until year, or NULL if it still is.



The maps in the Scalable Vector Graphics format are the result of a conversion of GeoJSON files with the R script geojson2svg.Rmd. By default, the script uses a "Natural Earth" projection, which can be changed by using another PROJ string than natearth2 in st_transform(geodata, "+proj=natearth2").

Please see these SVG files only as raw material editable with a vector drawing software for the needs of GIS-unsavvy users. If you contribute to this Git repository, please edit directly - and only - the GeoJSON files.

SVG map

Conceptual limitations and disputed territories

When using the data, keep in mind that

  1. historical boundaries are even more disputed than contemporary ones, that
  2. the actual concept of territory and national boundary becomes meaningful, in Europe, only since the Peace of Westphalia (1648), that
  3. areas of civilizations actually overlap, especially in ancient history, and that
  4. overlaying these ancient vector maps on contemporary physical maps can be misleading; rivers, lakes, shorelines do change very much over millennia; think for instance about the evolution of the Aral Sea since the 1980s.

Overlapping areas are usually dealt with as topological errors in traditional GIS, but some overlaps make sense in the case of this repository. Notwithstanding epistemological and historiographical concerns, the pragmatic bottom line is: vector GIS has points, polygons and lines. That's it. Nevertheless, when redendering, transparent layers (opacity < 100%) and blur effects is a convenient way to deal with fuzzy and overlapping borders of pre-modern societies.

Fuzzy borders

Visual distinction between precise and approximate borders can also be achieved on the same map. See this D3js example.

Fuzzy borders


The geodata are stored in the WGS 84 projection, EPSG:4326 (crs:OGC:1.3:CRS84). Coordinates are in LatLon, the projection is geographical. Consider reprojecting to show the maps on world scale, choosing a projection with minimal area distortion, such as the Dymaxion (AirOcean) projection or the Molweide projection.

world 1880 DRAFT

Most mapping software and algorithms reproject on the fly. Globe wrapping is also possible, as illustrates ngrapples's app:

world 1880 DRAFT


You are welcome to contribute by making your forks and filing git pull requests. Further notes on contributing in


This project started as a collection of basemaps collected, adapted and converted from diverse sources, sometimes only available through the wayback machine. Among these sources, anonymous students from the "ThinkQuest Team C006628".

Some (rare) historical georefernced resources on the web

Other resources - not georeferenced or GIS files non-downloadable

Spatial mutations in theory and fiction published by the curator of this repository


Collection of georeferenced boundaries of world countries and cultural regions for use in mapping historical data on global or continental scale