如何根据给定示例中
条件:
- 如果
即:如何更改
如果我只需要获取大于0.5的网格单元,我可以通过以下代码轻松获得,但是我想提取大于0.5的值以及相邻两个网格单元的值。
样例计算代码如下:
r2
中的以下条件重新分类(子集)与r2
相同维度和范围的栅格r1
:条件:
- 如果
r2
的网格单元值为>0.5
,则保留相应的值并在r1
中将邻近的2个网格单元保持在0.5值之上(即将r2
中数值大于0.5的网格单元缓冲到所有方向的周围两个网格单元),并将其他值更改为0。即:如何更改
r1
中的网格单元值以使其给出与r2
中大于0.5的值对应的值以及每个方向中的其两个缓冲(周围)网格单元的值。如果我只需要获取大于0.5的网格单元,我可以通过以下代码轻松获得,但是我想提取大于0.5的值以及相邻两个网格单元的值。
样例计算代码如下:
set.seed(150)
r1 <- raster(ncol=10, nrow=5) #Create rasters
values(r1) = round(runif(ncell(r1),5,25))
r2 <- raster(ncol=10, nrow=5)
values(r2) = round(runif(ncell(r2),0.1,1))
selfun <- function(x,y) {
ifelse( x >0.5, y,0)
} # It works only for >0.5 gridcells, i need this gridcells and its adjacent
#two gridcells in each direction.
# it's like buffering the >0.5 grid cells with adjacent two grids and retaining corresponding grid cells values.
r3<-overlay(r2,r1,fun=selfun)
plot(r3)
Thank you.