我正在使用R中的栅格数据包处理MOD16数据。我想对按日期创建的栅格堆栈进行子集化。我这样写:
all_ET<-grep(list.files(full.names = TRUE,
pattern = "ET_500m.tif$"),
pattern = "PET", inv=T, value=T) #totally 505 raster
layers
date <- read_csv("date.csv") #505 dates
ET_stack <- stack(all_ET)
#set dates for rastestack layers
setZ(ET_stack, date$date)
getZ(ET_stack)
结果如下:
> setZ(ET_stack, date$date)
class : RasterStack
dimensions : 4000, 7405, 29620000, 505 (nrow, ncol, ncell, nlayers)
resolution : 0.005, 0.005 (x, y)
extent : 101.5427, 138.5677, 10, 30 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
names : MOD16A2.A2001001.ET_500m, MOD16A2.A2001009.ET_500m,
MOD16A2.A2001017.ET_500m, MOD16A2.A2001025.ET_500m,
MOD16A2.A2001033.ET_500m, MOD16A2.A2001041.ET_500m,
MOD16A2.A2001049.ET_500m, MOD16A2.A2001057.ET_500m,
MOD16A2.A2001065.ET_500m, MOD16A2.A2001073.ET_500m,
MOD16A2.A2001081.ET_500m, MOD16A2.A2001089.ET_500m,
MOD16A2.A2001097.ET_500m, MOD16A2.A2001105.ET_500m,
MOD16A2.A2001113.ET_500m, ...
min values : -32768, -32768,
-32768, -32768, `` -32768,
-32768, -32768, -32768,
-32768, -32768, -32768,
-32768, -32768, -32768,
-32768, ...
max values : 32767, 32767,
32767, 32767, 32767,
32767, 32767, 32767,
32767, 32767, 32767,
32767, 32767, 32767,
32767, ...
time : 2001-01-01 - 2011-12-27 (range)
> getZ(ET_stack)
NULL
我想知道为什么getZ返回null?我的代码有什么问题吗?
欢迎提供任何线索。
谢谢!
答案 0 :(得分:2)
根据文档中的示例(键入?setZ
进行查找)。
library(raster)
r <- raster(ncol=10, nrow=10)
s <- stack(lapply(1:3, function(x) setValues(r, runif(ncell(r)))))
s <- setZ(s, as.Date('2000-1-1') + 0:2)
s
getZ(s)
您需要将setZ
的输出保存到新对象或现有对象。因此,以下代码将起作用。
ET_stack <- setZ(ET_stack, date$date)