如何获得两个栅格,每年为每个网格单元格提供最大值,并给出最大值发生的日期。下面是我可以实现的一些步骤的可重现的例子。
library(raster)
# Create a raster
r1 <- raster(nrow=10, ncol=7)
r <- stack(setValues(r1, runif(ncell(r1))),
setValues(r1, runif(70 ,0.6,0.9)),
setValues(r1, runif(70 ,0.2,0.4)),
setValues(r1, runif(70 ,1,2)),
setValues(r1, runif(70 ,0.5,1.0)),
setValues(r1, runif(70 ,0.3,0.9)),
setValues(r1, runif(70 ,1,2)))
r
# Make Dates. This is random, i have about 24000 values.
Dates<-data.frame(Date=c("2000-01-02","2000-01-03","2000-02-03",
"2001-09-02","2001-09-03","2001-10-01",
"2001-10-02"))
Date_val<-as.Date(Dates$Date,format="%Y-%m-%d")
Date_val
r.dt<-setZ(r,Date_val)
# Get indices to make annual maxima value for each grid cells
indices <- format(as.Date(getZ(r.dt), format = "%Y-%b-%d"), format = "%Y")
# Implement stackApply to get maximum value each year.
rmax<-stackApply(r.dt,indices = indices,fun=max,na.rm=T)
plot(rmax)
答案 0 :(得分:1)
你可以做到
wmax <- stackApply(r.dt, indices = indices, fun=function(i,...) which.max(i))
获取引用日期向量的索引
要获得(整数)日期表示,即自1970-01-01以来的天数,您可以为每年做这样的事情
m2000 = data.frame(from=1:3, to=as.integer(Date_val)[1:3])
x <- subs(wmax[[1]], m2000)