Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
H

historical-basemaps

> 编程语言
Open source

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

770 stars0 likes0 views
WebsiteGitHub

About

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

Historical boundaries of world countries and cultural regions

"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. Please read the contributing documentation carefully before doing so, as some type of edits are not appropriate for this repository.

Apps

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

  • Point in History: a web app to visualize the history of any point on the planet by Hans Hack.
  • A web app on ourednik.info (alpha release) alows you to exlore the dataset in alternative map projections.
  • Atlas Pi - a public REST + MCP API of historical geography: 1000+ polities with GeoJSON borders, events, dynastic chains and cited sources, 4500 BCE-2024, with per-record confidence scores.
  • (first implementation but currently unavailable) Historic Borders: a web app with timeline, by Adam (GitHub user @ngrapple).

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

GeoJSON

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.

index.json

A lightweight summary of the dataset is available in index.json. It lists:

  • The year and corresponding .geojson filename
  • The list of countries (based on NAME property) in each file

This file is auto-generated on every commit via GitHub Actions and helps applications quickly query available years or filter by country without loading full files.

Example:

json
{
  "year": 1492,
  "filename": "world_1492.geojson",
  "countries": ["Spain", "Portugal", "Inca Empire"]
}

You can regenerate it manually by running:

bash
node scripts/generateIndex.js

Polygons

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.

Points

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.

SVG

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.

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.

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

Projection

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.

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

Contributing

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

Credits

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

  • CShapes by Niels Weidman, also available as an R package.
  • GIS data : historical country boundaries
  • Old Maps Online.
  • Native Land. Contains notably maps of territorial conventions between colonizers and native populations in the Americas and Australia. User contributions possible via a GIS interface. These maps are also available in GeoJSON format.

Other resources - not georeferenced or GIS files non-downloadable

  • David Rumsey Map Collection: The most important historical maps repositoriy. Over 60000 ancient maps, some reprojected on interactive globes.
  • Ancient World Mapping Center at the University of North Carolina
  • Atlas of Human Evolution. A nice tool for the prehistory of the Homo species. Takes into account also the evolution of sea levels.
  • Euratlas.net. Mostly reliable but very old technology.
  • Geacron.com. "Interactive World History Atlas since 3000 BC". A nice tool, but offering no possibility to extract polygons for use in a GIS. A commercial version of the program allows you to see a timeline.
  • Wikimedia: Maps of the world showing history

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

  • Ourednik, A. (2022) "The impossible territory and the maps of the boyar Kraiensky", in Maps and Spaces (translation of "L’impossible territoire et les cartes du boyard Kraïenski" in GeoAgenda No. 4/2021.). (research essay) - Unstable borders are a cartographer’s nightmare. The simple task of reporting on demographic changes quickly becomes a headache in a country whose municipalities merge, divide, and even change their spatial contours according to the projects of their inhabitants and councilors, who feel no pressing need of being aggregated on a national scale.

  • Ourednik, A. (2019) Hypertopie: de l'utopie à l'omniscience, La Baconnière. (essay, in French) - on the notion of hypertopia, comprising the "impossible here" of identitarian utopias and the collapse of contemporary space into an infinite hit et nunc.

  • Ourednik, A. (2014), The impossible here (research paper) - "Grain upon grain, one by one, and one day, suddenly, there’s a heap, a little heap, the impossible heap."

  • Ourednik, A. (2015) Les cartes du boyard Kraïenski (novel, in French) - a cartographer sent to map the eastern border or the European Union gets lost in a fictive country somewhere between Ukraine and Bulgaria...

  • Ourednik, A. (2010) L'habitant et la cohabitation dans les modèles de l'espace habité (2010), EPFL. (PhD thesis, in French) - on the notion of codwelling in space and time. Central topic: changing spatial ontologies (i.e. the type and extent of things in space).

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

JavaScriptbasemapbordersgeographygeojson

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言