gpt4 book ai didi

R生度日计算中多波段的栅格代数

转载 作者:行者123 更新时间:2023-12-04 16:03:37 24 4
gpt4 key购买 nike

因此,我根据北美的每日最低和最高温度构建了一个 30 年的平均生长度日栅格。输入数据由 60 个栅格、30 tmax 和 30 tmin 组成。这些栅格中的每一个都包含 365 个波段(每天一个)。 GDD 的计算相当简单,它是 ((tmax-tmin))/2)-10。问题是我似乎无法找到将所有波段和栅格一起计算的方法。

我最初的计划是堆叠所有 tmin 栅格和所有 tmax 栅格并将它们相减。但在那种情况下,只会计算第一个波段(第 1 天)。有没有什么方法可以不用把所有的波段都一个一个地提取出来。

library(raster)

tmax <- stack("C:/gddtmax")
tmin <- stack("C:/gddtmin")
average <- ((tmax-tmin)/2)-10

最佳答案

你的例子对我来说很好。

library(raster)
f <- system.file("external/rlogo.grd", package="raster")
tmax <- brick(f) / 10
tmin <- tmax - 10

tmaxtmin 各有三层

avg <- ((tmax-tmin)/2)-10

avg也有三层

avg
#class : RasterBrick
#dimensions : 77, 101, 7777, 3 (nrow, ncol, ncell, nlayers)
#resolution : 1, 1 (x, y)
#extent : 0, 101, 0, 77 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=merc +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
#data source : in memory
#names : red, green, blue
#min values : -5, -5, -5
#max values : -5, -5, -5

编辑看起来问题是由于内存管理错误(在 2.7-3 版中修复)引起的。这里有两个解决方法。

使用overlay(它还允许您指定输出文件名)

avg <- overlay(tmin, tmax, fun=function(x, y){ ((y-x)/2)-10 })

或者使用rasterOptions

rasterOptions(todisk=TRUE)
avg <- ((tmax-tmin)/2)-10
rasterOptions(todisk=FALSE)

关于R生度日计算中多波段的栅格代数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49758079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com