如何解决terra 函数来提取一个变量的所有波段? 相当于砖'x',varname='y'
我有一个包含 79 个变量的 netcdf 文件,每个变量有 365 个波段(一年中的每一天一个)。我想读取一个变量的所有波段(即具有 365 层的栅格)。使用“光栅”包,这将按如下方式工作:
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,28835 (nrow,nlyr)
resolution : 1,y)
extent : -180,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,...
time : 2010-01-01 18:00:00 to 2010-12-31 12:00:00
生成的 SpatRaster 有 79 个“源”,但是如果我想提取一个“源”,要使用的语法是什么?在 rast 函数中添加 varname = 'WDEP_PREC' 不起作用。我尝试过 dailyvalues$... 但这仅调用单层(如“名称”下所列)。
解决方法
要使用的参数在 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')
(要使上述工作正常运行,您可能需要将路径添加到文件名,或将您的工作目录设置为它所在的位置)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。