将netcdf文件提取到栅格时出错

时间:2016-11-03 10:56:12

标签: r s4 r-raster netcdf4

我在文件夹中有很多NCDF文件。我尝试使用rasterncdf4包将它们提取到栅格块中。如果我单独提取每个NCDF文件,它的工作原理。但是,我尝试使用for循环提取所有文件然后它给了我错误。

R<-list.files("D:/Results/TimeSeries/NETCDF/")
r<-brick(paste0("D:/Results/TimeSeries/NETCDF/",R[[1]]),varname="T_min")

for(i in 2:length(R)){
r1<-brick(paste0("D:/Results/TimeSeries/NETCDF/",R[[i]]),varname="T_min")
r<-brick(r,r1)
}
  

as.integer(nl)中的错误:无法强制将类型'S4'强制转换为类型的向量   '整数'

如果我分别查看rr1,它们似乎具有相同的范围,并且都是栅格砖类型:

> r
class       : RasterBrick 
dimensions  : 81, 81, 6561, 122  (nrow, ncol, ncell, nlayers)
resolution  : 1, 1  (x, y)
extent      : 0.5, 81.5, 0.5, 81.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : D:\Results\TimeSeries\NETCDF\timeseries_1km_2026.nc 
names       : X0026.05.02, X0026.05.03, X0026.05.04, X0026.05.05, X0026.05.06, X0026.05.07, X0026.05.08, X0026.05.09, X0026.05.10, X0026.05.11, X0026.05.12, X0026.05.13, X0026.05.14, X0026.05.15, X0026.05.16, ... 
Date        : 0026-05-02, 0026-08-31 (min, max)
varname     : T_min 

> r1
class       : RasterBrick 
dimensions  : 81, 81, 6561, 122  (nrow, ncol, ncell, nlayers)
resolution  : 1, 1  (x, y)
extent      : 0.5, 81.5, 0.5, 81.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : D:\Results\TimeSeries\NETCDF\timeseries_1km_2027.nc 
names       : X0027.05.02, X0027.05.03, X0027.05.04, X0027.05.05, X0027.05.06, X0027.05.07, X0027.05.08, X0027.05.09, X0027.05.10, X0027.05.11, X0027.05.12, X0027.05.13, X0027.05.14, X0027.05.15, X0027.05.16, ... 
Date        : 0027-05-02, 0027-08-31 (min, max)
varname     : T_min 

请帮忙。

1 个答案:

答案 0 :(得分:0)

无需循环,raster已向量化,请尝试

p <- "D:/Results/TimeSeries/NETCDF"
R <- list.files(p, pattern = "nc$")

r <- raster::stack(file.path(p, R), varname = "T_min")

如果你确实需要循环,我会这样做:

r <- raster::stack(lapply(file.path(p, R), raster::raster, varname = "T_min"))

编辑:用raster :: stack替换raster :: raster。

另请注意file.path的使用情况以及list.files内可用的设施。 (粘贴文件路径的文本可能会有问题,并且比使用可用功能更复杂)。