首页 > 解决方案 > 如何将 R 中的列表转换为栅格?

问题描述

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

#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 坐标的数据。

标签: rlistr-raster

解决方案


要获得程度:

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)


推荐阅读