terra函数提取一个变量的所有波段? (相当于砖('x',varname='y'))
terra function to extract all bands of one variable? (equivalent to brick('x', varname='y'))
我有一个包含 79 个变量的 netcdf 文件,每个变量有 365 个波段(一年中的每一天)。我想读取一个变量的所有波段(即具有 365 层的光栅)。使用 'raster' 包,这将按如下方式工作:
dailyvalues <- brick('GLOBAL_2010_day.nc', varname ='WDEP_PREC')
结果是具有 365 层的 RasterBrick:
> dailyvalues
class : RasterBrick
dimensions : 180, 360, 64800, 365 (nrow, ncol, ncell, nlayers)
resolution : 1, 1 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : GLOBAL_2010_day.nc
names : X2010.01.01, X2010.01.02, X2010.01.03, X2010.01.04, X2010.01.05, X2010.01.06, X2010.01.07, X2010.01.08, X2010.01.09, X2010.01.10, X2010.01.11, X2010.01.12, X2010.01.13, X2010.01.14, X2010.01.15, ...
Date : 2010-01-01, 2010-12-31 (min, max)
varname : WDEP_PREC
但我还没有成功地使用 'terra' 包做到这一点。我试过了
dailyvalues <- rast('GLOBAL_2010_day.nc')
> dailyvalues
class : SpatRaster
dimensions : 180, 360, 28835 (nrow, ncol, nlyr)
resolution : 1, 1 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs
sources : GLOBAL_2010_day.nc:WDEP_PREC (365 layers)
GLOBAL_2010_day.nc:WDEP_SOX (365 layers)
GLOBAL_2010_day.nc:WDEP_OXN (365 layers)
... and 76 more source(s)
varnames : WDEP_PREC (WDEP_PREC)
WDEP_SOX (WDEP_SOX)
WDEP_OXN (WDEP_OXN)
...
names : WDEP_PREC_1, WDEP_PREC_2, WDEP_PREC_3, WDEP_PREC_4, WDEP_PREC_5, WDEP_PREC_6, ...
unit : mm, mm, mm, mm, mm, mm, ...
time : 2010-01-01 18:00:00 to 2010-12-31 12:00:00
生成的 SpatRaster 有 79 个 'sources',但是如果我想提取一个 'source',要使用什么语法?在 rast 函数中添加 varname = 'WDEP_PREC' 不起作用。我试过 dailyvalues$... 但它只调用单层(如 'names' 下所列)。
要使用的参数在 terra 中称为 subds
。
dailyvalues = rast("GLOBAL_2010_day.nc", subds="WDEP_PREC")
你应该可以做到(如@dww 所说)
dailyvalues = rast("GLOBAL_2010_day.nc", subds="WDEP_PREC")
或者你可以制作一个 SpatRasterDataset
x = sds("GLOBAL_2010_day.nc")
然后用
提取你想要的子数据集
r <- x["WDEP_PREC"]
或
r <- x[1]
此外,你还可以
r <- rast('NETCDF:"GLOBAL_2010_day.nc:WDEP_PREC":WDEP_PREC')
(要使上述工作正常,您可能需要将路径添加到文件名,或将工作目录设置到它所在的位置)
我有一个包含 79 个变量的 netcdf 文件,每个变量有 365 个波段(一年中的每一天)。我想读取一个变量的所有波段(即具有 365 层的光栅)。使用 'raster' 包,这将按如下方式工作:
dailyvalues <- brick('GLOBAL_2010_day.nc', varname ='WDEP_PREC')
结果是具有 365 层的 RasterBrick:
> dailyvalues
class : RasterBrick
dimensions : 180, 360, 64800, 365 (nrow, ncol, ncell, nlayers)
resolution : 1, 1 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : GLOBAL_2010_day.nc
names : X2010.01.01, X2010.01.02, X2010.01.03, X2010.01.04, X2010.01.05, X2010.01.06, X2010.01.07, X2010.01.08, X2010.01.09, X2010.01.10, X2010.01.11, X2010.01.12, X2010.01.13, X2010.01.14, X2010.01.15, ...
Date : 2010-01-01, 2010-12-31 (min, max)
varname : WDEP_PREC
但我还没有成功地使用 'terra' 包做到这一点。我试过了
dailyvalues <- rast('GLOBAL_2010_day.nc')
> dailyvalues
class : SpatRaster
dimensions : 180, 360, 28835 (nrow, ncol, nlyr)
resolution : 1, 1 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs
sources : GLOBAL_2010_day.nc:WDEP_PREC (365 layers)
GLOBAL_2010_day.nc:WDEP_SOX (365 layers)
GLOBAL_2010_day.nc:WDEP_OXN (365 layers)
... and 76 more source(s)
varnames : WDEP_PREC (WDEP_PREC)
WDEP_SOX (WDEP_SOX)
WDEP_OXN (WDEP_OXN)
...
names : WDEP_PREC_1, WDEP_PREC_2, WDEP_PREC_3, WDEP_PREC_4, WDEP_PREC_5, WDEP_PREC_6, ...
unit : mm, mm, mm, mm, mm, mm, ...
time : 2010-01-01 18:00:00 to 2010-12-31 12:00:00
生成的 SpatRaster 有 79 个 'sources',但是如果我想提取一个 'source',要使用什么语法?在 rast 函数中添加 varname = 'WDEP_PREC' 不起作用。我试过 dailyvalues$... 但它只调用单层(如 'names' 下所列)。
要使用的参数在 terra 中称为 subds
。
dailyvalues = rast("GLOBAL_2010_day.nc", subds="WDEP_PREC")
你应该可以做到(如@dww 所说)
dailyvalues = rast("GLOBAL_2010_day.nc", subds="WDEP_PREC")
或者你可以制作一个 SpatRasterDataset
x = sds("GLOBAL_2010_day.nc")
然后用
提取你想要的子数据集r <- x["WDEP_PREC"]
或
r <- x[1]
此外,你还可以
r <- rast('NETCDF:"GLOBAL_2010_day.nc:WDEP_PREC":WDEP_PREC')
(要使上述工作正常,您可能需要将路径添加到文件名,或将工作目录设置到它所在的位置)