更改具有特定值的特定单元格周围的单元格的值
Change the value of cells around particular cells with a certain value
我有一张欧洲地表水的地图(栅格)。如果没有水出现,则单元格的值为 0,当存在水时,单元格的值为 1。大陆周围的海洋的值为 "NA"。
大陆(海岸)周围有一层值为1的像元。我也想将它们设置为零,因为我只希望我的地图中有淡水,而不是咸水。基本上,我希望所有靠近海洋的细胞(海洋细胞是 NA)都变成 0。
我怎样才能做到最好?
好吧,如果你的栅格是一个名为 mat
的矩阵并且充满了整数和 NA,我会给你一些可能有用的东西,确保你在 [=14] 之前在另一个对象中备份你的图像=] 这个,因为这是未经测试的代码。
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
}
}
}
我有一张欧洲地表水的地图(栅格)。如果没有水出现,则单元格的值为 0,当存在水时,单元格的值为 1。大陆周围的海洋的值为 "NA"。
大陆(海岸)周围有一层值为1的像元。我也想将它们设置为零,因为我只希望我的地图中有淡水,而不是咸水。基本上,我希望所有靠近海洋的细胞(海洋细胞是 NA)都变成 0。
我怎样才能做到最好?
好吧,如果你的栅格是一个名为 mat
的矩阵并且充满了整数和 NA,我会给你一些可能有用的东西,确保你在 [=14] 之前在另一个对象中备份你的图像=] 这个,因为这是未经测试的代码。
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
}
}
}