2012~2025 年 VNP46A2 日度夜间灯光亮度栅格数据

之前给大家分享过 2012~2024 年的,今天给大家更新 2025 年 VNP46A2 日度夜间灯光亮度栅格数据,由 RStata 数据中心基于 NASA LAADS DAAC 的 VNP46A2 原始数据处理得到(栅格数据)。

注意:该夜间灯光亮度的单位是 0.1 nWatts/(cm² sr),如果想转换成 nWatts/(cm² sr),需要把数值乘以 0.1。

另外非常不幸的一点是,不知何故,2025 年只有 300 天的数据。多次检查依旧是这样的结果。看来确为原始数据缺失。

原始数据来源于 NASA 的 VNP46A2——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/5200/VNP46A2/

该数据将全球根据经纬度按照 10°×10° 的网格进行划分,每个分块包含 2400×2400 个格点,分辨率大致为 500m×500m,数据均为 HDF5 格式(.h5)。处理该数据的第一步是找到中国所处的区块文件(一共约 24 块)。

数据处理流程大致包含以下步骤:

  1. 使用 rvest 爬取 NASA LAADS DAAC 网站,获取 VNP46A2 数据目录,并根据年份筛选 2025 年的所有日期文件夹链接;
  2. 通过预先计算好的中国区块正则表达式(regex.rds),从全球所有瓦片链接中筛选覆盖中国范围的区块;
  3. 使用 httr 携带 EarthData 授权 Token,通过并行下载(parallel::parLapply)将中国范围内的 .h5 文件下载到本地;
  4. 使用 rhdf5 读取 h5 文件中的 Gap_Filled_DNB_BRDF-Corrected_NTL 字段,将异常值(>65534 或 <0)设为 NA,并通过 terra::rast 将数组转为栅格对象;
  5. 依据预先计算好的各瓦片边界框(bboxdf.rds)为每个栅格设置正确的经纬度范围及坐标参考系(WGS84),然后用 terra::mosaic 将同一天的多块栅格拼接合成为覆盖中国范围的完整日度栅格;
  6. 将每天的栅格保存为 .tif 文件,文件名为日期(如 2025-01-01.tif)。

感兴趣的小伙伴可以通过以下课程学习详细操作方法:

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

数据概览

本次数据为 2025 年全年的中国日度夜间灯光亮度栅格数据,数据按天存储为独立 .tif 文件,空间分辨率约为 500m×500m,坐标系为 WGS84(EPSG:4326)。

主要变量说明:

字段 说明
栅格像元值 各格点的月度 Gap-Filled 月球 BRDF 校正夜间灯光亮度,单位 0.1 nWatts/(cm² sr)
时间分辨率 日度(每天一张 .tif)
空间分辨率 约 500m × 500m
覆盖范围 中国大陆(含港澳台)
数据来源 NASA VNP46A2 v5.2

图表展示

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

处理代码

以下为关键处理代码片段,展示了从 NASA 网站爬取下载链接、筛选中国区块并批量下载 h5 文件的核心流程:

library(tidyverse)
library(rvest)

# 爬取 VNP46A2 目录,获取 2025 年各日期文件夹链接
read_html("https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/5200/VNP46A2/") -> html

html %>%
html_elements("tr") %>%
html_attr("data-href") %>%
as_tibble() %>%
filter(str_detect(value, "VNP46A2")) %>%
filter(str_detect(value, "2025")) -> fldf

# 生成日期信息
fldf3 %>%
mutate(date = str_extract(value, "2025/\\d{3}")) %>%
mutate(date = str_remove_all(date, "2025/"),
date = as.numeric(date)) %>%
mutate(year = 2025,
newdate = ymd(paste0(year, "-01-01")) + date - 1) %>%
dplyr::select(-date, -year) -> fldf4

# 使用中国区块正则表达式筛选
read_rds("regex.rds") -> regexp
read_rds("fldf6.rds") -> fldf6
fldf6 %>%
filter(str_detect(value, regexp)) -> cnfldf6

# 并行下载 h5 文件
library(parallel)
makeCluster(16) -> cl
dir.create("h5data")
parLapply(cl, lst, function(x){
if (!file.exists(paste0("h5data/", basename(x)))) {
try({
httr::GET(x,
httr::add_headers(c(
Authorization = "Bearer <YOUR_TOKEN>"
))) -> getres
writeBin(httr::content(getres), paste0("h5data/", basename(x)))
})
}
})

读取 h5 文件并合成为日度栅格:

library(rhdf5)
library(terra)

# 读取 h5 文件中的夜间灯光字段并转为栅格
lapply(files, function(x){
rhdf5::h5read(x,
name = "/HDFEOS/GRIDS/VIIRS_Grid_DNB_2d/Data Fields/Gap_Filled_DNB_BRDF-Corrected_NTL") -> mat
mat[mat > 65534] <- NA
mat[mat < 0] <- NA
terra::rast(mat) %>%
trans() %>%
`crs<-`("+proj=longlat +datum=WGS84 +no_defs")
}) -> rstlist

# 设置边界框并拼接成完整日度栅格
lapply(1:length(files), function(x){
c(bboxlist[[x]]) -> bboxtmp
rstlist[[x]] %>%
`ext<-`(c(bboxtmp["xmin"], bboxtmp["xmax"],
bboxtmp["ymin"], bboxtmp["ymax"]))
}) %>%
sprc() %>%
mosaic() %>%
`names<-`(x) %>%
writeRaster(paste0("nightlight/", x, ".tif"))

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

数据引用格式

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

RStata 数据中心: 2012~2025 年 VNP46A2 日度夜间灯光亮度栅格数据. 2026. https://tidyfriday.cn/rsdb2/

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

RStata Data Center: 2012–2025 VNP46A2 Daily Nighttime Light Brightness Raster Data. 2026. https://tidyfriday.cn/rsdb2/

另外也建议在说明数据来源的同时,根据本文的介绍在论文中描述数据的详细处理方法。

关联课程/数据推荐

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

2012年1月19日~2024年12月31日中国各省市区县日度夜间灯光亮度面板数据:https://rstata.duanshu.com/#/course/49a7c949a7b04ef2b2006b46841f9139

1992~2024 年各省市区县乡镇类 NPP-VIIRS 夜间灯光面板数据 & 栅格数据(余柏蒗版本2):https://rstata.duanshu.com/#/course/5ee752e4c1d84ab48b2235366dfb83ec

栅格数据的裁剪与面积汇总——基于 R 语言的方法:https://rstata.duanshu.com/#/course/d2c2710928f44ad7a7518b8a178562c0

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

如果有相关栅格数据转面板数据的定制需求,欢迎联系李老师付费定制。

点击这里跳转到 RStata 短书平台获取附件:2012~2025 年 VNP46A2 日度夜间灯光亮度栅格数据

评论