R-计算光栅的平均值

时间:2019-09-20 08:22:22

标签: r raster netcdf

我正在尝试计算R中特定时间步的栅格砖的平均值。

对数据集进行子集显示(对我而言)似乎是正确的布局,但是R不允许进行任何后续计算。

> r_sub <- b[[1699:1862]]
> r_sub
class      : RasterStack 
dimensions : 127, 147, 18669, 164  (nrow, ncol, ncell, nlayers)
resolution : 5, 5  (x, y)
extent     : 603299.4, 604034.4, 6615598, 6616233  (xmin, xmax, ymin, ymax)
crs        : NA 
names      : X2019.02.09.19, X2019.02.09.20, X2019.02.09.21, X2019.02.09.22, X2019.02.09.23, X2019.02.09.24, X2019.02.10.1, X2019.02.10.2, X2019.02.10.3, X2019.02.10.4, X2019.02.10.5, X2019.02.10.6, X2019.02.10.7, X2019.02.10.8, X2019.02.10.9, ... 

> r_mean <- calc(r_sub, mean)
Error in Rsx_nc4_get_vara_double: NetCDF: Index exceeds dimension bound
Var: SWIT  Ndims: 3   Start: 1698,0,0 Count: 1,127,147
Error in ncvar_get_inner(ncid2use, varid2use, nc$var[[li]]$missval, addOffset,  : 
  C function R_nc4_get_vara_double returned error

如何解决此特定错误?

1 个答案:

答案 0 :(得分:1)

我想这与您的文件问题有关,与代码无关。

我做到了,效果很好

library(raster)
b <- brick("filename.nc")
r_sub <- b[[1699:1862]]
r_sub
#class      : RasterStack 
#dimensions : 160, 320, 51200, 164  (nrow, ncol, ncell, nlayers)
#resolution : 1.125, 1.121277  (x, y)
#extent     : -0.5625, 359.4375, -89.70216, 89.70216  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

mean(r_sub)
#class      : RasterLayer 
#dimensions : 160, 320, 51200  (nrow, ncol, ncell)
#resolution : 1.125, 1.121277  (x, y)
#extent     : -0.5625, 359.4375, -89.70216, 89.70216  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#source     : memory
#names      : layer 
#values     : 3.033032e-07, 0.0002482847  (min, max)

此外,您可能希望使用stackApply