GTAmap v1.0 · 2026-09-26 发布

带时间维度的全球行政区划边界

这是什么 · What this is

GTAmap 提供 2000–2026 年全球行政区划边界的年度序列,含变更事件与逐要素来源溯源,供科研、统计对齐与制图使用。

它回答一个具体问题:某年、某地的边界长什么样、依据是什么。 常见的全球边界数据集(如 GADM)只给出一份“当前”边界;GTAmap 给的是一条随时间变化的边界序列, 每条边界都带年份、来源下载地址与置信度等级。

年份覆盖要说清楚:2000–2026 是数据集的总体范围,不是每个国家的逐年序列。 233 个包里 183 个只有 1–2 期(多为全球锚点年),只有 5 个超过 26 年 (挪威 34 年、 爱沙尼亚 30 年、中国 / 意大利 / 冰岛各 27 年)。 做跨国逐年分析前,请先在下载页查看目标国家的实际年份范围。

GTAmap provides annual series of global administrative boundaries (2000–2026) with change events and per-feature provenance, for research, statistical alignment and mapping.

做研究

用同一套 unit_id 追踪行政单元 20 年的变化,或统计“某年发生了多少次区划变更”。

统计对齐

把 2000 年的统计年鉴数据对齐到 2000 年的边界,而不是拿今天的边界去套十年前的数据。

制图

直接下载 GeoJSON / GeoParquet,拖进 QGIS、ArcGIS 或 Python,做时间序列地图与动画。

三级:ADM0 / ADM1 / ADM2(中国另有 ADM3 县级) 4 个全球锚点年:2000 / 2010 / 2020 / 2025 GeoParquet + GPKG 看不懂术语?90 秒术语表 →

关键数字

233
个国家 / 区域数据包
每个包 = 一个国家,含该国全部可用年份的三级边界 + 事件表
518,916
行边界记录
233 个包中所有「单元 × 年份」记录的总数;一行 = 某个单元在某一年的边界
20,006
条变更事件
记录“谁在什么时候被合并/拆分/更名”,含生效日期、依据文号与置信度

规模感对照:全站 273 个数据文件、26.1 GB(233 个国家包 26 KB–6.8 GB + 14 个全球 GeoJSON + 17 个离线瓦片)。 单个国家包从 26 KB(梵蒂冈)到 6.8 GB(日本)不等, 页面上每个下载项都会标明实际大小与预计耗时。

年份覆盖同样不均匀:233 个包里 183 个只有 1–2 期,只有 5 个超过 26 年 (挪威 34、爱沙尼亚 30、中国/意大利/冰岛各 27)。做跨国逐年分析前请先看 「我该下哪个?」。

典型场景 / What people actually do

三个最常见的使用场景,照着做就行

每个场景都写清三件事:要下哪个文件、用哪几行代码、有什么坑。 代码假设你已安装 pip install geopandas pandas pyarrow,并把下载的 zip 解压到了当前目录。

把不同年份的统计数据对齐到同一年边界

“我想做 2000 → 2020 的中国县级人口对比,但不同年份的县级单元数量不一样, 直接按今天的县界统计会错位。”

  1. 下载 中国包 (data/countries/CHN.zip,约 1.9 GB),解压后得到 CHN_adm3_timeseries.parquet 等文件—— 包内 README.txt 写明每个文件的行数与字段。
  2. 按 snapshot_year 取你要的那一年,再把统计表按 unit_id 并进来。
  3. 导出 GPKG(QGIS/ArcGIS 可直接打开)或继续在 Python 里算。
Python · Example 1
import geopandas as gpd, pandas as pd

chn = gpd.read_parquet("CHN_adm3_timeseries.parquet")
b_2020 = chn[chn.snapshot_year == 2020][["unit_id", "name", "geometry"]]

pop = pd.read_csv("my_pop_2020.csv")
gdf = b_2020.merge(pop, on="unit_id", how="left")
gdf.to_file("chn_2020_with_pop.gpkg", driver="GPKG")

查找某地区 2000 年以来的区划变更

“我想知道某个省/市这些年有没有被合并或更名,依据是哪份文件。”

  1. 下载 全量事件库 (data/all_events.csv,约 5.7 MB,一个文件装下全部 20,006 条事件)。
  2. 按 dataset 列过滤到国家(如 CHN_timeline),按生效日期排序。
  3. 读 detail 看变更内容,legal_reference 看依据文号。
Python · Example 2
import pandas as pd

ev = pd.read_csv("data/all_events.csv", encoding="utf-8-sig")
chn = ev[ev["dataset"].str.startswith("CHN")]
recent = chn.sort_values("effective_date", ascending=False).head(10)
print(recent[["effective_date", "event_type", "detail", "legal_reference"]])

制作某国的时间序列地图

“我想做一张 2000 → 2026 中国地级边界变化的四联图,看看哪里变过。”

  1. 同样下载 中国包,这次用 CHN_adm2_timeseries.parquet(地级)。
  2. 按年份循环出图;每张图标题里写上该年的单元数,一眼就能看出哪年发生了调整。
  3. 想先预览效果,不用下载:直接去地图浏览页按年切换。
Python · Example 3
import geopandas as gpd, matplotlib.pyplot as plt

chn = gpd.read_parquet("CHN_adm2_timeseries.parquet")
years = [2000, 2010, 2020, 2026]
fig, axes = plt.subplots(1, len(years), figsize=(20, 5))
for ax, y in zip(axes, years):
    g = chn[chn.snapshot_year == y]
    if len(g): g.plot(ax=ax, edgecolor="white", linewidth=0.3)
    ax.set_title(f"{y} (n={len(g)})"); ax.set_axis_off()
plt.tight_layout(); plt.savefig("chn_adm2_4panel.png", dpi=150)

更多例子(含 QGIS 操作步骤、按 geom_origin 剔除回填几何、批量核对 SHA-256)见 5 分钟上手与 字段字典。

为什么不一样 / Why GTAmap

四个关键差异

区划数据最大的问题不是“有没有”,而是“哪一年、谁说的、能不能核”。GTAmap 把这三个问题写进了数据本身。

时间维度

每个单元带 snapshot_year,同一 ID 可跨年比对。巴西 18 年、中国 27 年(2000–2026)、 挪威 34 年、爱沙尼亚 30 年;不是“一份当前边界”,而是一条边界演化序列。

来源可溯源

逐要素字段 src_id / src_name / src_url / src_license / src_vintage / src_type, 直接指向 IBGE、TIGER、MLIT、CTAmap 等官方下载地址,无需再猜“这份数据哪来的”。

事件驱动

20,006 条变更事件记录分合沿革:法国市镇合并 3,782 起、日本平成大合并 1,819 起、 马里 2023 年 ADM2 由 53 增至 160、哈萨克阿拜州 2022 年设立。

全球覆盖

2025 快照含 ADM0 232、ADM1 3,440、ADM2 55,137 个单元, 其中 ADM2 官方真实几何覆盖 98.3%;覆盖不足的部分明确标注为回填。

快速上手 / Quick start

三行代码读出某一年的边界

下面的路径与本站实际下载的文件一致:单国包解压后得到 <ISO3>_adm2_timeseries.parquet(同级还有 README.txt 与 <ISO3>_timeline_events.csv); 全球锚点年在本站直接以 GeoJSON 提供(仓库路径 data/web/,下到本地就是文件名本身); 事件库是 data/all_events.csv。

python · 读取单国多年序列
import geopandas as gpd

bra = gpd.read_parquet("BRA_adm2_timeseries.parquet")
print(bra[bra.snapshot_year == 2010][["unit_id", "name", "area_km2"]].head())
python · 全球锚点年 + 按来源等级筛选
import geopandas as gpd

world = gpd.read_file("data/web/global_adm1_2025.geojson")
grade_a = world[world.conf_grade == "A"]

print(grade_a[["name", "iso3", "src_name", "area_km2"]].head())
python · 事件库(分合沿革)
import pandas as pd

ev = pd.read_csv("data/all_events.csv", encoding="utf-8-sig")
france = ev[ev["dataset"].str.startswith("FRA")]
print(france[["effective_date", "event_type", "detail"]].head())
下载到的文件用什么打开(一句话说明)
文件 / 格式 用什么打开 一句话说明
.zip → .parquet 先解压;QGIS 3.28+ / Python geopandas / R sf 列式地理格式,读得快、体积小;Excel 打不开
.geojson QGIS / ArcGIS / geojson.io / Python 纯文本,可直接拖进 QGIS 窗口;文件较大时加载稍慢
.pmtiles 地图浏览页 / MapLibre + pmtiles 库 离线矢量瓦片,适合自建网页地图,不适合当普通图层打开
.csv Excel / WPS / pandas 事件表与清单;UTF-8 编码,Excel 打开如乱码请选 UTF-8
.gpkg QGIS / ArcGIS(双击即可) 单文件地理数据库,无需解压,最适合直接看图
SQLite .gpkg / .parquet 不写代码的替代路径 先在地图浏览页看效果,再决定下不下整包
全球锚点年 / Global snapshots

四个年份,看清全球的三级结构

锚点年是“全世界同一年”的统一快照,便于做跨年对比;逐国序列则是各国自己的完整年份集。

全球锚点年单元数量(2025 年为发布基准年)
锚点年 ADM0 国家/区域 ADM1 省级 ADM2 地级 文件体积(本站 GeoJSON) 下载
2000 2323,43457,128 ADM0 1.0 MB · ADM1 6.8 MB 获取
2010 2323,43455,554 ADM0 1.0 MB · ADM1 10.8 MB 获取
2020 2323,42454,985 ADM0 0.9 MB · ADM1 6.9 MB 获取
2025 2323,44055,137 ADM0 1.0 MB · ADM1 7.0 MB · ADM2 按洲 0.6–7.6 MB 获取

表中体积为本站可直接下载的 GeoJSON 网页版(已简化,适合快速查看与制图底图); 研究级未简化几何在发布包内以 GeoParquet / GPKG 提供,体积更大。详见下载页全球数据包。

ADM0 · 国家/区域

232 个单元,100% 为真实几何。含 ISO3 码与稳定 unit_id。

ADM1 · 省级

3,440 个单元,真实几何 99.6%(3,425 个)。

ADM2 · 地级

55,137 个单元,真实几何 98.3%(54,222 个)。

来源与置信度 / Provenance & confidence

A / B / C / D 四级,逐要素标注

每个要素都带 conf_grade 与 conf_note。等级不是“数据好坏”的评分, 而是来源性质的声明——让你知道该不该把它当作法定界址使用。

来源等级说明

A

官方直采 54 国

巴西 IBGE、美国 TIGER、日本 MLIT、中国 CTAmap、法国 IGN、德国 BKG、意大利 ISTAT、挪威 SSB、瑞典 SCB、加拿大 StatCan、澳大利亚 ABS、墨西哥 INEGI 等机构的原生边界。

B

官方经聚合 / GADM 回退 170 国

多数非洲国家(OCHA COD-AB,源为各国统计机构)、中东、部分拉美,以及 52 个微属地(GADM 双锚点,仅约 2018 / 2022 两期,date_precision=version_year,不是逐年序列)。

C

OSM / 第三方 27 国

朝鲜、伊朗等由 OSM 历史管线重建。事件日期是“OSM 映射时间”而非法律生效日,不宜直接作为法定变更日期引用。

D

派生 / 推断 3 国

由其他层级并集或研究方法派生的几何(如印度、波多黎各的合成 ADM0),非独立原始数据。

注:同一国家的不同层级可能来自不同等级来源,故四级计数之和(254)大于国家总数(233)。 不确定该选什么?取 A + B 已覆盖绝大多数国家/地区;严格的可复现分析可只取 A(官方直采)。

几何来源字段 geom_origin

取值含义
official_actual该年真实官方几何
dissolved_from_official由下级官方单元并集派生
official_via_gadm_anchor用 GADM 锚点替代
current_carried_back用 2026 基准几何回填(待补)

诚实性声明:16 个实体(ALB ARM AZE BIH COD CYP DZA GEO GHA IDN KHM MKD PSE SRB TUN UKR XKX) 因官方源不可达或网络中断,当前使用 2026 基准几何回填并标注 geom_origin=current_carried_back,待补。

查看完整方法与局限 →

术语速查 / Jargon decoder

看见这些词,先看这一行

下面 8 个词覆盖了本站 90% 的“看不懂”。鼠标悬停(手机长按)任意带虚线下划线的词也有同样提示; 完整定义见术语表与字段字典。

  • ADM0:国家/地区级单元
  • ADM1:省级(省/州/大区)
  • ADM2:地级(市/县/郡)
  • snapshot_year:这条边界代表哪一年
  • unit_id:跨年比对用的稳定 ID
  • conf_grade:来源等级 A–D
  • geom_origin:几何从哪来
  • date_precision:日期精度分档

还有 src_url(该要素的原始下载地址)、area_km2(EPSG:6933 等积投影下的面积)、 manifest.csv(全文件 SHA-256 校验清单)—— 完整术语表 →

开始使用

按国家单包下载,或取全球锚点年。每个文件都标注格式、体积、适用软件与打开方式。

我该下哪个?

回答 3 个问题(全球还是单国、要几年、用什么软件),直接给出推荐文件与下载链接。

开始选择 →

按国家下载

233 个时间序列包,支持按洲筛选与搜索,显示层级数、年份范围、体积与预计耗时。

前往 →

全球数据

4 个锚点年 × 三级的 GeoJSON 网页版(可直接下载),另附全量事件库与离线瓦片。

前往 →

地图浏览

在线查看各年份边界与变更事件,按年切换;下载前先确认数据是不是你要的。

前往 →