R语言 选择两个栅格堆叠之间的最小值

hlswsv35  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(139)

我有两个光栅:一个表示给定最干燥的月VPD(蒸汽压亏缺)的SIF值。另一个表示给定最干燥的SM(土壤湿度)月的SIF值。
我想要一个最终栅格图层,其中每个像元表示两个栅格之间SIF的最低值。但是,我需要在图例中知道SIF值是否与VPD或SM相关。

sif_min_vpd
class      : RasterLayer 
dimensions : 255, 702, 179010  (nrow, ncol, ncell)
resolution : 0.5, 0.5  (x, y)
extent     : -171, 180, -56, 71.5  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : memory
names      : SIF_deseasonalized 
values     : -3.453509, 2.578036  (min, max)
sif_min_sm
class      : RasterLayer 
dimensions : 255, 702, 179010  (nrow, ncol, ncell)
resolution : 0.5, 0.5  (x, y)
extent     : -171, 180, -56, 71.5  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : memory
names      : SIF_deseasonalized 
values     : -1.728031, 2.55345  (min, max)

我试了这个代码:

final_map <- min(sif_min_vpd, sif_min_sm_aligned)

但是我不知道SIF值是与VPD相关还是与SM相关。
有什么想法吗?

slwdgvem

slwdgvem1#

你能在没有min函数的情况下检查它们吗?

if (sif_min_vpd < sif_min_sm_aligned) {
final_map <- c("vpd", sif_min_vpd)
}
else {
final_map <- c("sm", sif_min_sm_aligned)
}

print(final_map)
30byixjq

30byixjq2#

你可以将calcwhich.min一起使用,它会显示哪个层包含了每个像素的最小值,层1(vpd)或层2(sm)。

library(raster)
minlayer <- calc(stack(sif_min_vpd, sif_min_sm_aligned), which.min)

相关问题