我有一张来自欧洲的地表水(栅格)。如果没有水出现,则该单元的值为0,当存在水时,该单元的方程式为eqauls1。大陆周围的海洋的值为“ NA”。
[在大陆(海岸)周围有一层值为1的像元。我也希望将其设置为零,因为我只想在地图中使用淡水,而不是盐水。基本上,我希望所有靠近海洋的细胞(海洋细胞均为NA)都变为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
}
}
}