即使setZ正常工作,R raster getZ返回null

时间:2018-09-28 14:07:30

标签: r null raster r-raster

我正在使用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?我的代码有什么问题吗?

欢迎提供任何线索。

谢谢!

1 个答案:

答案 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)