Global bare soil, photosynthetic and non-photosynthetic vegetation fraction annual at 500 m resolution
收藏NIAID Data Ecosystem2026-05-02 收录
下载链接:
https://zenodo.org/record/11961219
下载链接
链接失效反馈官方服务:
资源简介:
Annual mean and std for (1) bare soil fraction, and (2) photosynthetic and (3) non-photosynthetic vegetation annual at 500 m resolution for 2001–2023. The dataset was obtained from: https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html (monthly values; 320GB in total). Mean and std was derived using terra package in R using functions "mean" and "std" from 12 monthly values; missing values were ignored during derivation.
Note: the Global Vegetation Fractional Cover Product (GVFCP) v3.1 (Hill and Guerschman, 2022) is derived from spectral unmixing of all seven optical bands from the 500 m MODIS (Moderate Resolution Imaging Spectroradiometer) Nadir BRDF (Bidirectional Reflectance Distribution Function)-adjusted Reflectance Product (NBAR, MCD43A4 Collection 6). A similar dataset has been produced by Sun et al., (2024), covering period 2001–2022. Below is the sample code explaining how were the mean, max and std derived.
## Download from: https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html
## wget -e robots=off -nH --cut-dirs 4 -nc -r -l5 -A '*.nc' -R 'catalog*' -I /thredds/fileServer/,/thredds/catalog/ 'https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html'
## 6857 tiles
library(terra)
modis.tiles = list.files("/mnt/lacus/raw/modis-fc/v310/tiles/monthly/cover/", pattern = glob2rx("*.nc"))
mod.lst = unique(sapply(modis.tiles, function(i){strsplit(i, "\\.")[[1]][4]}))
str(mod.lst)
## 272
## aggregate per year per tile
nc_tile <- function(i, year, dir.x="/mnt/lacus/raw/modis-fc/v310/tiles/monthly/cover/", mc.cores=parallel::detectCores()){
require(terra)
if(year == 2023 | year == 2024){
in.filename = paste0(dir.x, "FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".061.nc")
} else {
in.filename = paste0(dir.x, "FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".006.nc")
}
bs.filenames = paste0("./modis-fc/bs_", c("mean", "max", "std"), "/FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".006.tif")
dg = terra::rast(in.filename)
if(any(!file.exists(bs.filenames))){
bs = dg["bare_soil"] ## 12 months
dg.m = app(bs, fun=mean, na.rm=TRUE,
filename=bs.filenames[1],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
dg.x = app(bs, fun=max, na.rm=TRUE,
filename=bs.filenames[2],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
dg.s = app(bs, fun=sd, na.rm=TRUE,
filename=bs.filenames[3],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
}
}
## run in parallel
for(year in 2001:2024){
x = parallel::mclapply(sample(mod.lst), function(i){try( nc_tile(i, year=year, mc.cores = 2) )}, mc.cores = 40)
tmpFiles(remove=TRUE)
}
本数据集涵盖2001至2023年分辨率为500米的三类地物的年际均值与标准差:(1) 裸土占比,(2) 光合植被年覆盖度,以及(3) 非光合植被年覆盖度。
该数据集获取自:https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html(数据为月度值,总容量320GB)。年际均值与标准差通过R语言的terra包,对12个月度数据调用`mean`与`std`函数计算得到,计算过程中自动忽略缺失值。
注:全球植被覆盖分数产品(Global Vegetation Fractional Cover Product, GVFCP)v3.1(Hill 与 Guerschman, 2022)是基于500米分辨率中分辨率成像光谱仪(Moderate Resolution Imaging Spectroradiometer, MODIS)天底方向双向反射分布函数(Bidirectional Reflectance Distribution Function, BRDF)校正反射率产品(NBAR,MCD43A4 第6版)的全部7个光学波段进行光谱解混得到的。Sun等人(2024)亦生成了类似数据集,覆盖时段为2001至2022年。以下为阐释均值、最大值与标准差计算方法的示例代码。
下载地址:https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html
下载命令:
wget -e robots=off -nH --cut-dirs 4 -nc -r -l5 -A '*.nc' -R 'catalog*' -I /thredds/fileServer/,/thredds/catalog/ 'https://thredds.nci.org.au/thredds/catalog/tc43/modis-fc/v310/tiles/monthly/cover/catalog.html'
(共6857个瓦片)
r
# 加载terra包
library(terra)
# 列出指定路径下所有后缀为.nc的文件
modis.tiles = list.files("/mnt/lacus/raw/modis-fc/v310/tiles/monthly/cover/", pattern = glob2rx("*.nc"))
# 提取每个瓦片的唯一标识(通过分割文件名获取第4段)并去重
mod.lst = unique(sapply(modis.tiles, function(i){strsplit(i, "\.")[[1]][4]}))
str(mod.lst)
# 共272个瓦片标识
# 按年份与瓦片聚合数据的自定义函数
nc_tile <- function(i, year, dir.x="/mnt/lacus/raw/modis-fc/v310/tiles/monthly/cover/", mc.cores=parallel::detectCores()){
require(terra)
# 区分2023、2024年与其他年份的NetCDF文件名后缀
if(year == 2023 | year == 2024){
in.filename = paste0(dir.x, "FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".061.nc")
} else {
in.filename = paste0(dir.x, "FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".006.nc")
}
# 定义裸土组分的输出文件路径(分别存储均值、最大值、标准差)
bs.filenames = paste0("./modis-fc/bs_", c("mean", "max", "std"), "/FC_Monthly_Medoid.v310.MCD43A4.", i, ".", year, ".006.tif")
# 读取目标NetCDF文件
dg = terra::rast(in.filename)
# 若任意输出文件不存在则执行计算流程
if(any(!file.exists(bs.filenames))){
# 提取裸土波段数据(包含12个月度的观测值)
bs = dg["bare_soil"]
# 计算均值并保存为压缩后的TIFF文件
dg.m = app(bs, fun=mean, na.rm=TRUE,
filename=bs.filenames[1],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
# 计算最大值并保存为压缩后的TIFF文件
dg.x = app(bs, fun=max, na.rm=TRUE,
filename=bs.filenames[2],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
# 计算标准差并保存为压缩后的TIFF文件
dg.s = app(bs, fun=sd, na.rm=TRUE,
filename=bs.filenames[3],
wopt=list(gdal=c("COMPRESS=DEFLATE"), datatype='INT1S'),
overwrite=TRUE, cores = mc.cores)
}
}
# 并行执行计算流程:遍历2001至2024年,对每个年份的瓦片并行处理
for(year in 2001:2024){
x = parallel::mclapply(sample(mod.lst), function(i){try( nc_tile(i, year=year, mc.cores = 2) )}, mc.cores = 40)
tmpFiles(remove=TRUE)
}
创建时间:
2024-06-18



