【问题标题】:How to find an intersection of two rasters with different ranges of continuous variables in r如何在r中找到具有不同连续变量范围的两个栅格的交集
【发布时间】:2020-06-22 15:50:59
【问题描述】:

我正在尝试使用 R 来查找代表不同气候变量的栅格范围之间的交集。我能找到的最接近的答案是:overlay rasters at a given value

例如,如果我使用 raster 包来分析two bioclim variables(例如平均温度和降水量),我如何找到并绘制温度范围为 15-20 和降水量为 500-750 的地点?

【问题讨论】:

    标签: r gis overlay intersection r-raster


    【解决方案1】:

    这是一个最小的、独立的、可重现的示例

    library(raster)
    temp <- prec <- raster()
    values(temp) <- rep(1:30, each=ncell(temp)/30)
    prec[,1:ncol(prec)] <- seq(0,nrow(prec)*10,10)
    

    解决方案

    tr <- reclassify(temp, c(-Inf, 15, NA, 15, 20, 1, 20, Inf, NA))
    pr <- reclassify(prec, c(-Inf, 500, NA, 500, 750, 1, 750, Inf, NA))
    zone <- overlay(tr, pr, fun=function(x,y) x*y)
    # zone <- tr * pr # is equivalent
    

    或使用 0 代替 NA

    tr <- reclassify(temp, c(-Inf, 15, 0, 15, 20, 1, 20, Inf, 0))
    pr <- reclassify(prec, c(-Inf, 500, 0, 500, 750, 1, 750, Inf, 0))
    zoneTF <- tr & pr
    

    现在你可能想做

    s <- stack(prec, temp)
    s <- mask(s, zone)
    

    【讨论】:

    • 谢谢,这太完美了——很抱歉,我没有包含示例代码,因为我认为指向我之前找到的更接近的答案会更容易。进一步的问题是,是否有可能以包含 tr 和 pr 层的方式创建“区域”对象,从而显示两个变量之间的交集以及变量本身?
    • 您可以使用stack,也可以使用mask。我已将其添加到答案中。
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多