繁体   English   中英

R 中的 function 用于在多个栅格数据中绘制具有一致高值的位置

[英]A function in R for plotting locations with consistent high values in multiple raster data

我有四个相同程度的光栅文件。 每个栅格数据的低值和高值模式不同。 我想 plot 区域(边界)中的值大于 x(其中 x 是整数)。 谁能帮我用 r function 做到这一点? 请在下面找到栅格数据的示例代码。 在此示例中,假设我想要 plot 并识别所有四个栅格中值大于 0.4 的像元。 而不是四个单独的图像,我想要一个显示值大于 4 的单元格的图像。更像是覆盖栅格并识别所有图像中值大于 4 的单元格

   library(raster)

r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)

rr <- lapply(1:4, function(i) setValues(r1,runif(ncell(r1))))

par(mfrow = c(2,2))
plot(rr[[1]])
plot(rr[[2]])
plot(rr[[3]])
plot(rr[[4]])

四个栅格的图

谢谢/

您可以将raster图像与&结合起来。 每个单独的第一个阈值 plot:

r2 = lapply(rr, `>`, threshold)

然后将它们组合起来,只保留所有大于阈值的字段:

summary = Reduce(`&`, r2)
plot(summary)

在此处输入图像描述

这是一个超级简单的解决方案,可以很容易地推广到不同长度的输入:

myplot <- function(input,threshold){
  input <- lapply(input,function(x){
    x <- x>threshold
  })
  
  par(mfrow = c(2,2))
  plot(input[[1]])
  plot(input[[2]])
  plot(input[[3]])
  plot(input[[4]])
}

myplot(rr,0.4)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM