如何将 R 中的列表转换为栅格?

How can I convert a list in R into a raster?

我想将我必须的列表转换为栅格,以便允许我在特定位置提取数据。

#create example data
tmintest=array(1:100, c(30,189,420))

#create example list
Variable <- list(Varname="Tmin")
Data = tmintest
xyCoords <- list(x = seq(-40.37,64.37,length.out=420), y = seq(25.37,72.37,length.out=189))
Dates <- list(start = seq(as.Date("2036-01-01"), as.Date("2065-01-01"), by="years"), end=seq(as.Date("2036-12-31"), as.Date("2065-12-31"), by="years"))
All <- list(Variable = Variable, Data=Data, xyCoords=xyCoords,Dates=Dates)

我从光栅文档中看到它不接受列表,所以我尝试取消列出 All

unlistAll<-unlist(All)
raster(unlistAll)

返回:

Error in .local(.Object, ...) 

所以,我将使用上面列表中的信息从头开始创建它:

myraster<-raster(nrows=108, ncols=21, xmn=-40.375, xmx=64.375,ymn=25.375,ymx=72.375,vals=All$Data)

但我得到了错误:

Error in setValues(r, vals) : values must be a vector

我是不是走错了路?我只想从列表或栅格中提取特定 x/y 坐标的数据。

获取范围:

xy <- cbind(x=rep(x, length(y)), rep(y, each=length(x)))
r <- rasterFromXYZ(xy)

创建 RasterBrick 并设置范围

b <- brick(tmintest)
extent(b) <- extent(r)

你是怎么得到这些值的?如果你从 ncdf 文件中读取它们,你可以 brick(filename)