R语言 从2个栅格堆栈中有条件地选择值

rn0zuynd  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(137)

我正在处理2个相同时间序列的2个光栅::堆栈(RS 1和RS 2)。我需要创建第三个光栅(RS3),它是逐像素标准的结果-〉如果:RS 1〉RS 2,则为RS 1,否则为RS 2。
我尝试了ifelse,但没有成功:

RS3 <-ifelse(RS1[] > RS2[], RS1[], RS2[])

我不知道该怎么办。

eqqqjvef

eqqqjvef1#

示例数据和使用"terra"代替(过时的)"raster"包。

library(terra)
r <- rast(system.file("ex/elev.tif", package="terra"))
x <- c(r, r/2, r*2)
y <- c(r/2, r*2, r)

溶液:

z <- max(x, y)

最小值和最大值:

minmax(x)
#    elevation elevation elevation
#min       141      70.5       282
#max       547     273.5      1094
minmax(y)
#    elevation elevation elevation
#min      70.5       282       141
#max     273.5      1094       547
minmax(z)
#    elevation elevation elevation
#min       141       282       282
#max       547      1094      1094

对于比max更复杂的函数,也就是非"内置"的函数,可以像这样使用lapp

zz <- lapp(sds(x, y), pmax)

相关问题