在给定值处叠加栅格
overlay rasters at a given value
我对使用 R
和 GIS 数据还比较陌生。
我正在尝试创建一个函数来叠加两个 Raster
图层,仅当其中一个栅格(在本例中为 raster1
)处于特定值(在本例中为 0)时。为此我尝试了多种选择,但它们似乎都不起作用。下面提供了我的最后一次尝试,它运行但输出只是显示 NULL
并且没有绘制。
library(raster)
raster1 <- raster(ncols=10,nrows=10)
raster2 <- raster(ncols=10,nrows=10)
values(raster1) <- round(runif(ncell(raster1)))
values(raster2) <- round(runif(ncell(raster2)))
plot(raster1)
plot(raster2)
overlay_zero <- function (x, y) {
if (isTRUE(x == 0)) {
overlay(x, y, fun=function(x,y) {return(x+y)})}
}
z <- overlay_zero(raster1, raster2)
z
plot(z)
overlay_ras <- function(ras1,ras2,value=0){
result <- ras1
result[ras1==value] <- ras1[ras1==value] + ras2[ras1==value]
return(result)
}
overlaid <- overlay_ras(raster1,raster2,0)
这样就可以了。该函数采用两个栅格和一个值,该值将用于确定受叠加(加法)影响的像元。
我对使用 R
和 GIS 数据还比较陌生。
我正在尝试创建一个函数来叠加两个 Raster
图层,仅当其中一个栅格(在本例中为 raster1
)处于特定值(在本例中为 0)时。为此我尝试了多种选择,但它们似乎都不起作用。下面提供了我的最后一次尝试,它运行但输出只是显示 NULL
并且没有绘制。
library(raster)
raster1 <- raster(ncols=10,nrows=10)
raster2 <- raster(ncols=10,nrows=10)
values(raster1) <- round(runif(ncell(raster1)))
values(raster2) <- round(runif(ncell(raster2)))
plot(raster1)
plot(raster2)
overlay_zero <- function (x, y) {
if (isTRUE(x == 0)) {
overlay(x, y, fun=function(x,y) {return(x+y)})}
}
z <- overlay_zero(raster1, raster2)
z
plot(z)
overlay_ras <- function(ras1,ras2,value=0){
result <- ras1
result[ras1==value] <- ras1[ras1==value] + ras2[ras1==value]
return(result)
}
overlaid <- overlay_ras(raster1,raster2,0)
这样就可以了。该函数采用两个栅格和一个值,该值将用于确定受叠加(加法)影响的像元。