【问题标题】:R raster getZ returns null even if setZ works fine即使 setZ 工作正常,R raster getZ 返回 null
【发布时间】:2018-09-28 14:07:29
【问题描述】:

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

欢迎提供任何线索。

谢谢!!

【问题讨论】:

    标签: r null raster r-raster


    【解决方案1】:

    基于文档中的示例(键入 ?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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      相关资源
      最近更新 更多