2012-01-19~2025-12-31各省市区县日度平均夜间灯光亮度面板数据

今天给大家分享一份 2012 年 1 月 19 日~2025 年 12 月 31 日各省市区县日度平均夜间灯光亮度面板数据。由 RStata 数据中心基于 NASA VIIRS 夜间灯光遥感栅格数据整理得到(RStata 自制数据)。

原始数据来源于 NASA LAADS DAAC 的逐日夜间灯光遥感栅格数据(500m),是全球范围的公开遥感产品。其中 2012~2024 年的数据来自 VNP46A2:

https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/5200/VNP46A2/

2025 年来自 VJ146A2 — VIIRS/NPP Gap-Filled Lunar BRDF-Adjusted Nighttime Lights Daily L3 Global 500m Linear Lat Lon Grid:

https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/5000/VJ146A2/

数据概览

为了方便大家使用,我把栅格数据汇总成了省份、城市、区县三个层级的日度面板数据,文件如下:

  • 2012-01-19~2025-12-31各省份日度平均夜间灯光亮度面板数据.dta
  • 2012-01-19~2025-12-31各城市日度平均夜间灯光亮度面板数据.dta
  • 2012-01-19~2025-12-31各区县日度平均夜间灯光亮度面板数据.dta

数据时间范围为 2012 年 1 月 19 日~2025 年 12 月 31 日(逐日),行政单元基于 2021 年行政区划。各层级数据均包含相应的区域名称、区域代码、日期以及「平均夜间灯光亮度」指标:

  • 省份级:省、省代码、日期、平均夜间灯光亮度
  • 城市级:省、省代码、市、市代码、日期、平均夜间灯光亮度
  • 区县级:省、省代码、市、市代码、县、县代码、日期、平均夜间灯光亮度

注意:该数据的单位是 0.1 nWatts/(cm²·sr)(即 0.1 nW·cm⁻²·sr⁻¹)。 栅格数据是类似一个个格点的数据,每个格点都包含一个亮度值,本数据取的是行政单元范围内的平均亮度,因此「平均夜间灯光亮度」反映的是该区域地表人工光源的平均辐射强度。

图表展示

为了便于大家直观判断数据的可靠性,我绘制了下面这些图表。

下图展示了 2025 年 12 月 31 日各区县平均夜间灯光亮度的空间分布:

下图展示了 2025 年 12 月 31 日各城市平均夜间灯光亮度的空间分布:

下图展示了 2025 年 12 月 31 日各省份平均夜间灯光亮度的空间分布(含省名标注):

我们再来检查下数据的连续性,下面这张时序折线图展示了 2012~2025 年各省份日度平均夜间灯光亮度的变化趋势(高亮了部分省份):

处理代码

数据的处理思路是:对每一天的夜间灯光栅格,使用各行政单元的矢量边界提取其内部的平均亮度,再按日期合并为面板数据。核心的提取与合并代码如下(R 语言):

# 读取每日夜间灯光栅格数据
library(tidyverse)
library(sf)
library(terra)

fs::dir_ls("nightlight", recurse = T, regexp = "tif$") -> ls

# 读取 2021 年省市区县行政区划并统一为 WGS84
read_sf("2021行政区划/省.shp") %>% select(-contains("类型")) %>% st_transform(4326) -> prov
read_sf("2021行政区划/市.shp") %>% select(-contains("类型")) %>% st_transform(4326) -> city
read_sf("2021行政区划/县.shp") %>% select(-contains("类型")) %>% st_transform(4326) -> county

# 多线程:在每个行政单元内提取平均夜间灯光亮度
parLapply(cl, ls, function(x){
str_remove(basename(x), "\\.tif") -> y
rast(x) -> rst
# 按行政区划多边形求均值
terra::extract(rst, vect(prov), fun = mean, na.rm = T) %>% as_tibble() -> dfres1
terra::extract(rst, vect(city), fun = mean, na.rm = T) %>% as_tibble() -> dfres2
terra::extract(rst, vect(county), fun = mean, na.rm = T) %>% as_tibble() -> dfres3
# 绑定行政区划属性与日期后保存为 rds
prov %>% st_drop_geometry() %>% bind_cols(dfres1) %>% mutate(date = y) -> dfprov
city %>% st_drop_geometry() %>% bind_cols(dfres2) %>% mutate(date = y) -> dfcity
county %>% st_drop_geometry() %>% bind_cols(dfres3) %>% mutate(date = y) -> dfcounty
...
})

# 合并所有日期的结果并导出为 Stata 格式
dfcity %>% select(-ID) %>% mutate(date = ymd(date)) %>% type_convert() %>%
rename(日期 = date, 平均夜间灯光亮度 = value) %>%
haven::write_dta("2012-01-19~2025-12-31各城市日度平均夜间灯光亮度面板数据.dta",
label = "数据计算:微信公众号 RStata")

此外,为统一量纲,代码中还将亮度单位统一缩放为 0.1 nWatts/(cm²·sr):

# 将亮度单位统一为 0.1 nWatts/(cm^2 sr)
for (f in fls) {
rast(f) * 10 -> rst
writeRaster(rst, filename = f, overwrite = T)
}

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

数据引用格式

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

RStata 数据中心: 2012-01-19~2025-12-31各省市区县日度平均夜间灯光亮度面板数据. 2026. https://tidyfriday.cn/rsdb2/

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

RStata Data Center: Panel Data on Daily Average Nighttime Light Brightness across Provinces, Cities, and Districts/Counties, 2012-01-19~2025-12-31. 2026. https://tidyfriday.cn/rsdb2/

关联课程/数据推荐

2012~2025 年日度夜间灯光亮度栅格数据:https://rstata.duanshu.com/#/course/7737f573d81f4cdfbf1f8513533771e1

使用 R 语言下载和处理日度夜间灯光栅格数据:https://rstata.duanshu.com/#/course/270178a4d6bb4ee2ba8b66ae71de3b8f

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

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

如果有把栅格数据处理成面板数据或时间序列数据的的定制需要,可以联系李老师付费定制。

点击这里跳转到 RStata 短书平台获取附件:2012-01-19~2025-12-31各省市区县日度平均夜间灯光亮度面板数据

评论