Saya mencoba menghitung rata-rata rasterbrick pada langkah waktu tertentu di R.

Subsetting dataset menunjukkan tata letak yang tampaknya benar (bagi saya), namun R tidak mengizinkan perhitungan apa pun untuk ditindaklanjuti.

> 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

Bagaimana cara mengatasi kesalahan khusus ini?

0
Stijn 20 September 2019, 11:22

1 menjawab

Jawaban Terbaik

Saya menduga ini terkait dengan masalah dengan file Anda, bukan dengan kode.

Saya melakukan ini dan itu bekerja dengan baik

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)

Selain itu, Anda mungkin ingin melihat penggunaan stackApply

1
Robert Hijmans 20 September 2019, 16:00