【问题标题】:R raster construct new raster from two existing rastersR raster 从两个现有栅格构建新栅格
【发布时间】:2020-03-23 20:54:17
【问题描述】:

我需要根据以下逻辑构造一个新的栅格(称为ch 基于两个栅格(称为tmintmax)。新栅格的每个元素都遵循此逻辑。tmin, tmax 和@ 987654326@ 都是尺寸相同的光栅砖,但我想我会先尝试单层。

if (tmin > 7) ch <- 0
if (tmax < 7) ch <- 24
else
ch <- (7 - tmin)/(tmax - tmin)

我尝试使用以下代码遵循answer 的逻辑。 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)

【问题讨论】:

    标签: r r-raster


    【解决方案1】:

    示例数据

    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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多