将特定单元格周围的单元格值更改为特定值

问题描述 投票:1回答:1

我有一张来自欧洲的地表水(栅格)。如果没有水出现,则该单元的值为0,当存在水时,该单元的方程式为eqauls1。大陆周围的海洋的值为“ NA”。

[在大陆(海岸)周围有一层值为1的像元。我也希望将其设置为零,因为我只想在地图中使用淡水,而不是盐水。基本上,我希望所有靠近海洋的细胞(海洋细胞均为NA)都变为0。

我该如何做到最好?

r raster
1个回答
0
投票

嗯,如果您的栅格是一个名为mat的矩阵,并且充满整数和NA,那么我会给您一些可能有用的方法,请确保在运行此对象之前将图像备份到另一个对象中,因为这是未经测试的代码。

iSpinVector = Re(1i**(-1L:2L))
jSpinVector = Re(1i**(0L:3L))

    for (i in 2:(nrow(mat)-1)){
     for( j in 2:(ncol(mat)-1)){
      if(is.na(mat[i,j])){
                           Neighborhood = cbind(i + iSpinVector,
                                                j + jSpinVector) 
                            mat[Neighborhood] = 0
      }
     }
    }
© www.soinside.com 2019 - 2024. All rights reserved.