1970~2025 年各省市区县年度与月度人为碳排放量面板数据

今天给大家分享一份 1970~2025 年各省市区县年度与月度人为碳排放量面板数据。该数据由 HBPG-CO₂ 全球栅格数据集(RStata 处理得到)汇总整理而来,覆盖中国省、市、区县三个层级,并提供逐月与年度两种频率。

数据来源与处理方法

原始数据来自 2026 年新发布的 HBPG-CO₂(Hierarchical Bayesian Physics-Guided Carbon Dioxide)全球栅格人为碳排放数据集(Antezana Lopez et al., Earth System Science Data, 2026):

  • 空间分辨率 0.05°,时间频率 逐月,覆盖 1970-01 至 2025-12(共 672 个月);
  • 包含 7 个部门 + 1 个合计:农业、建筑、燃料、工业、电力、交通运输、废弃物处理,以及含国际航空航运的合计;
  • 全球范围,本数据提取了中国部分并按行政区划汇总。

处理方法由 code/01_分区域汇总人为碳排放.R 实现,核心流程如下(R 语言 terra / sf / tidyverse):

  1. 矢量投影对齐:读取 2021 年行政区划矢量(省 / 市 / 县),投影到与栅格一致的 CRS(EPSG:4326,WGS84)。
  2. 最细粒度提取:在县这一最细层级对每个部门做 zonal sum 提取(单元格中心落在多边形内即计入),随后按市代码 / 省代码逐级向上加总,得到市、省结果,避免对每一级行政区重复提取。
  3. 损坏波段回退:部分栅格存在个别损坏波段(ZSTD 解码失败),以 12 个月为一块做多图层提取;若某块报错则回退为逐月单层提取,仅跳过确实无法读取的月份(记为缺失),具体清单见下方「损坏波段记录」。
  4. 月度加总得到年度:逐月面板按月求和得到年度面板。
  5. 单位约定:栅格像元值视为「每个 0.05° 网格、每个月的人为碳排放量(吨)」。

经计算共得到 6 份 .dta 面板数据(省 / 市 / 县 × 逐月 / 年度),每个文件均含 省 / 省代码 / 市 / 市代码 / 县 / 县代码 / 年月 / 年份 / 月份 / 部门 / 人为碳排放量_吨 等字段。

数据概览

为了方便大家使用,我把数据汇总成了 省、市、区县三个层级 的 1970~2025 年人为碳排放量面板数据,包含 逐月 与 年度 两种频率:

  • 1970~2025 年各省份年度人为碳排放量面板数据.dta

  • 1970~2025 年各省份逐月人为碳排放量面板数据.dta

  • 1970~2025 年各城市年度人为碳排放量面板数据.dta

  • 1970~2025 年各城市逐月人为碳排放量面板数据.dta

  • 1970~2025 年各区县年度人为碳排放量面板数据.dta

  • 1970~2025 年各区县逐月人为碳排放量面板数据.dta

    数据时间跨度为 1970~2025 年(逐月 672 个月、年度 56 年),部门维度为 农业、建筑、燃料、工业、电力、交通运输、废弃物处理、合计 共 8 类。各文件预览如下:

该数据为长时序、高分辨率、分部门的人为碳排放记录,可直接用于 大气反演(atmospheric inversion)、地球系统建模、碳循环分析、区域排放评估,以及研究中国各省市区县人为碳排放的时空演变与分部门(能源、工业、建筑、交通、农业、废弃物等)排放结构。

损坏波段记录

在栅格提取过程中,部分部门存在个别损坏波段(ZSTD 解码失败),程序已自动跳过这些月份并在 损坏波段记录.txt 中记录。这些被跳过的月份在对应部门 / 月份的单元格中表现为缺失值(NA),使用时需特别注意,避免对时间序列造成断点误判。各部门损坏波段清单如下(格式为 年_月):

部门 损坏波段(已跳过)
农业 1978_10, 1987_05, 1997_04, 1997_05
工业 1974_12, 2008_08, 2008_11, 2015_06
燃料 1979_09, 1984_01, 1985_01, 1985_06, 1988_11, 1999_02, 2002_10, 2005_10, 2006_03, 2007_02, 2007_03, 2013_04, 2022_11
建筑 1978_03, 1988_12, 2002_10, 2006_05, 2006_06, 2020_04
电力 1973_12, 1974_01, 1974_02, 1974_06, 1974_07, 1974_08, 1998_07, 2014_03, 2014_04
废弃物处理 2008_08, 2008_09, 2008_10, 2008_11, 2023_12, 2024_01, 2024_02, 2025_05, 2025_06
交通运输 1971_12, 1975_09, 1975_11, 1986_11, 1987_03, 1990_07, 1993_04, 1999_12, 2004_03, 2015_05, 2015_08, 2021_06
合计 1971_06, 1977_03, 1977_04, 1979_09, 1985_09, 1985_11, 1987_11, 2018_10, 2019_01, 2024_01

这些损坏的波段在结果数据中会表现为数据缺失,可以考虑插值填补。

图表展示

下图展示了数据的空间分布与时间演变(图片来自 picdir/):

图1 为 2020 年中国各省份合计人为碳排放量 Choropleth 地图:

图2 为 1970–2025 年中国逐年人为碳排放总量折线图,可看出长期增长趋势:

图3 为 2020 年各部门人为碳排放量对比柱状图:

图4 为 2020 年各城市各部门碳排放分布箱线图(对数轴):

处理代码

数据处理与绘图代码位于 code/ 文件夹(01_分区域汇总人为碳排放.R 与 plot.R)。下方为核心摘录。

在【县】粒度对每个部门做 zonal sum,采用「分块(一年)+ 逐月回退」策略规避损坏波段:

# 8 个栅格文件 = 7 个部门 + 1 个合计(含国际航空航运)
suffix <- "_InventoryConsensus_TSN_v27_INT1_M2_PACKED_ZSTD22.tif"
sector_map <- tibble(
部门 = c("农业", "建筑", "燃料", "工业", "电力", "交通运输", "废弃物处理", "合计"),
mid = c("Agriculture", "Buildings", "Fuel", "Industry", "Power",
"Transport", "Waste", "Total_GLOBAL_Merged_Aviation_Shipping")
) %>%
mutate(file = paste0("HBPG_", mid, suffix),
path = file.path(raw_dir, file))

# 在【县】粒度做 zonal sum,分块(一年)+ 逐月回退,规避损坏波段
extract_sector <- function(i) {
r <- rast(sector_map$path[i])
n <- nlyr(r)
out <- list()
corrupted <- c()
# 以 12 个月(一年)为一块尝试整块提取
for (start in seq(1, n, 12)) {
end <- min(start + 11, n)
idx <- start:end
res <- tryCatch(
terra::extract(r[[idx]], v_counties, fun = sum, na.rm = TRUE, ID = TRUE) %>%
as.data.frame(),
error = function(e) NULL
)
if (!is.null(res) && nrow(res) > 0) {
out[[length(out) + 1]] <- res
} else {
# 整块失败(含损坏波段)→ 逐月单层回退,仅跳过确实无法读取的月份
for (k in idx) {
r1 <- tryCatch(
terra::extract(r[[k]], v_counties, fun = sum, na.rm = TRUE, ID = TRUE) %>%
as.data.frame(),
error = function(e) NULL
)
if (!is.null(r1) && nrow(r1) > 0) out[[length(out) + 1]] <- r1
else corrupted <- c(corrupted, names(r)[k])
}
}
}
# 损坏波段写入 损坏波段记录.txt
if (length(corrupted) > 0) {
msg <- sprintf(" [警告] 部门=%s 存在损坏波段(已跳过): %s",
sector_map$部门[i], paste(corrupted, collapse = ", "))
write_lines(msg, file.path(out_dir, "损坏波段记录.txt"), append = TRUE)
}
# ... 长表化、回填行政区属性后返回 ...
}

逐级向上加总:县 → 市 → 省,并由月度加总得到年度:

# 逐级向上加总:县 -> 市 -> 省
city_panel <- county_long %>%
group_by(省, 省代码, 市, 市代码, 年月, 年份, 月份, 部门) %>%
summarise(人为碳排放量_吨 = sum(人为碳排放量_吨), .groups = "drop")

province_panel <- county_long %>%
group_by(省, 省代码, 年月, 年份, 月份, 部门) %>%
summarise(人为碳排放量_吨 = sum(人为碳排放量_吨), .groups = "drop")

# 月度加总得到年度面板
county_annual <- county_long %>%
group_by(省, 省代码, 市, 市代码, 县, 县代码, 年份, 部门) %>%
summarise(人为碳排放量_吨 = sum(人为碳排放量_吨), .groups = "drop")

附件中也提供了该数据的处理代码供参考:

数据引用格式

由于该数据包含较多 RStata 处理的内容,在研究中使用该数据请使用清晰的方式注明数据来源于 RStata 或者 RStata 数据中心,并引用原始栅格数据集:

Antezana Lopez F P, Zhou G, Zhang K, et al. HBPG-CO2: a global gridded monthly anthropogenic CO₂ emission dataset at 0.05° resolution for 1970–2025[DS/OL]. Earth System Science Data, 2026. https://doi.org/10.5194/essd-2026-590.

原始数据链接: https://doi.org/10.5281/zenodo.21507026

英文文献可以使用下面的格式引用:

Antezana Lopez F P, Zhou G, Zhang K, et al. HBPG-CO2: a global gridded monthly anthropogenic CO₂ emission dataset at 0.05° resolution for 1970–2025[DS/OL]. Earth System Science Data, 2026. https://doi.org/10.5194/essd-2026-590.

本面板数据由 RStata 数据中心基于 HBPG-CO₂ 栅格数据汇总处理得到,也可引用为:

RStata 数据中心: 1970~2025 年各省市区县年度与月度人为碳排放量面板数据. 2026. https://tidyfriday.cn/rsdb2/

关联课程 / 数据推荐

分部门:1970~2024 年中国各省市区县各部门 CO2 排放量面板数据 & 栅格数据(EDGAR v2025):https://rstata.duanshu.com/#/brief/course/80678a034a2d4318affaeca004c5afa2

中国各省市碳排放量是如何计算的?R 语言栅格数据转面板数据:https://rstata.duanshu.com/#/course/75de598dcfcc4ad0b9ff28bff27f6b83

RStata 定制|栅格数据转面板数据或时间序列数据:https://rstata.duanshu.com/#/course/839afebb01d54457b42b94e87e7dc085

使用 R 语言进行地理计算:https://rstata.duanshu.com/#/course/7596d4ddfd904ca58cc5daccae8bc941

R 语言地理计算应用与地理数据可视化案例合集:https://rstata.duanshu.com/#/course/5dee5f29f36344f3be82aca0a20820bd

如果有相关需要可以联系李老师付费定制。

点击这里跳转到 RStata 短书平台获取附件:1970~2025 年各省市区县年度与月度人为碳排放量面板数据

评论