百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
H

historical-basemaps

> 编程语言
开源

收集世界各国和文化区域的地理参考边界,用于在地理或大陆范围内绘制历史数据

770 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

收集世界各国和文化区域的地理参考边界,用于在地理或大陆范围内绘制历史数据

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:

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

You can regenerate it manually by running:

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 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

JavaScriptbasemapbordersgeographygeojson

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

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