我知道這裏有大量的關於通過光柵磚循環的問題,但沒有一個提供了我期待的答案/建議。通過光柵磚循環
我有一個大的(17.2GB,7901圖層)netcdf
文件,我已將其導入R
,作爲RasterBrick
。
> KK10Brick
class : RasterBrick
dimensions : 2160, 4320, 9331200, 7901 (nrow, ncol, ncell, nlayers)
resolution : 0.08333333, 0.08333333 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : D:\LandUse\KK10.nc
names : X8000, X7999, X7998, X7997, X7996, X7995, X7994, X7993, X7992, X7991, X7990, X7989, X7988, X7987, X7986, ...
z-value : 100, 8000 (min, max)
varname : land_use
文件中的每一層代表1年,我需要在磚創建的每個像素的時間移動平均值。即使這個變量似乎是絕對的(land_use
),它實際上是一個%覆蓋率。
我想創建一個30年的移動平均線,有10年的滑動窗口。例如第一個窗口將產生來自圖層1:30
的平均值的柵格,下一個窗口產生來自圖層11:40
... 7871:7901
的平均值的另一個柵格。
我在想一個for循環可能是實現這一目標的最佳方法,但我不確定是否在這裏找到了正確的路徑,例如
for (i in 1:7901){
subsetLayers <- code to subset relevant layers
out <- stackApply(KK10Brick, indices = subsetLayers, fun = "mean", na.rm = TRUE, filename = paste("./Output/", "meanLU_window_", i, ".tif", sep = ""))
rm(out)}
我卡住的地方是編寫代碼來生成subsetLayers
的序列。任何幫助將非常感激。
編輯。
library(raster)
exBrick <- brick(nrow = 180, ncol = 360, nl = 100)
values(exBrick) <- runif(ncell(exBrick) * nlayers(exBrick))
crs(exBrick) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
exBrick
@dww我在示例柵格磚的代碼中添加了一些代碼。 – KaanKaant