R - Рассчитать среднее значение растрового кирпича - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь вычислить среднее значение растрового кирпича по определенным временным шагам в 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 Ответ

1 голос
/ 20 сентября 2019

Я предполагаю, что это связано с проблемой вашего файла, а не с кодом.

Я сделал это, и он работал хорошо

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

...