r - 如何将 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 坐标的数据。
解决方案
要获得程度:
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)
推荐阅读
- android - 由于:groovy.lang.GroovyRuntimeException:无法将具有类“java.util.HashSet”的对象“[]”转换为类“org.gradle.api.file.FileCollection”:
- ios - 函数在完成处理程序完成之前完成它的执行
- android - 如何为所有屏幕尺寸创建自动文本大小?
- javascript - 我无法对数组中的数字进行排序(尝试了这里写的所有内容,仍然不起作用)
- flutter - 使用 Navigator 来回导航时保持状态?
- bash - 如何通过 iTerm2 中的提示命令重命名窗口?
- android - NestedScrollView 内 RecyclerView 中的 SmoothScrollTo 项
- r - 如何查看 R 脚本中发生错误的行号?
- ios - IBDesignable 视图中的 IBInspectable 按钮
- c# - 由于环境变量,ASP.NET Core 2.1 无法运行迁移