R栅格从两个现有栅格构造新栅格
R raster construct new raster from two existing rasters
我需要根据以下逻辑构建一个基于两个栅格(称为tmin
和tmax
)的新栅格(称为ch
)。新栅格的每个元素如下这个逻辑。tmin, tmax
和 ch
都是具有相同尺寸的光栅砖,但我想我会先尝试单层。
if (tmin > 7) ch <- 0
if (tmax < 7) ch <- 24
else
ch <- (7 - tmin)/(tmax - tmin)
我试图用下面的代码来遵循这个 的逻辑。 testout
按预期由零或 24 组成。我无法弄清楚如何将逻辑的最后一部分纳入此过程。
library(raster)
r1 <- raster()
r2 <- raster()
set.seed(10)
values(r1) <- runif(ncell(r1), min = 0, max = 10)
values(r2) <- runif(ncell(r2), min = 0, max = 10)
myFun <- function(r1, r2) {
0*(r1 > 7)+
24*(r2 < 7)
}
testout <- myFun(r1, r2)
示例数据
library(raster)
r1 <- r2 <- raster(ncol=10, nrow=10)
set.seed(10)
values(r1) <- runif(ncell(r1), min = 0, max = 10)
values(r2) <- runif(ncell(r2), min = 0, max = 10)
向量化函数
myFun <- function(tmin, tmax) {
ch <- (7 - tmin)/(tmax - tmin)
ch[tmin > 7] <- 0
ch[tmax < 7 & tmin <= 7] <- 24
ch
}
ch1 <- overlay(r1, r2, fun=myFun)
未记录的备选方案
ifel <- raster:::.ifel
ch2 <- ifel(r1 > 7, 0, ifel(r2 < 7, 24, (7 - r1)/(r2 - r1)))
我需要根据以下逻辑构建一个基于两个栅格(称为tmin
和tmax
)的新栅格(称为ch
)。新栅格的每个元素如下这个逻辑。tmin, tmax
和 ch
都是具有相同尺寸的光栅砖,但我想我会先尝试单层。
if (tmin > 7) ch <- 0
if (tmax < 7) ch <- 24
else
ch <- (7 - tmin)/(tmax - tmin)
我试图用下面的代码来遵循这个 testout
按预期由零或 24 组成。我无法弄清楚如何将逻辑的最后一部分纳入此过程。
library(raster)
r1 <- raster()
r2 <- raster()
set.seed(10)
values(r1) <- runif(ncell(r1), min = 0, max = 10)
values(r2) <- runif(ncell(r2), min = 0, max = 10)
myFun <- function(r1, r2) {
0*(r1 > 7)+
24*(r2 < 7)
}
testout <- myFun(r1, r2)
示例数据
library(raster)
r1 <- r2 <- raster(ncol=10, nrow=10)
set.seed(10)
values(r1) <- runif(ncell(r1), min = 0, max = 10)
values(r2) <- runif(ncell(r2), min = 0, max = 10)
向量化函数
myFun <- function(tmin, tmax) {
ch <- (7 - tmin)/(tmax - tmin)
ch[tmin > 7] <- 0
ch[tmax < 7 & tmin <= 7] <- 24
ch
}
ch1 <- overlay(r1, r2, fun=myFun)
未记录的备选方案
ifel <- raster:::.ifel
ch2 <- ifel(r1 > 7, 0, ifel(r2 < 7, 24, (7 - r1)/(r2 - r1)))