使用R将一个光栅的单元值指定给另一个光栅的相邻单元

使用R将一个光栅的单元值指定给另一个光栅的相邻单元,r,buffer,raster,R,Buffer,Raster,我有两个不重叠的空间投影光栅对象。一个光栅(rk)的值可靠,而另一个光栅(dnn)的值不可靠 #reliable plot(rk) #unreliable plot(dnn, add=TRUE, col='gray80') 在此(显示我的数据子集)中,颜色表示可靠光栅的值,而我将所有不可靠光栅像素绘制为灰色。我想根据可靠值更改不可靠值。该问题的一个更简单的解决方案可能是将周围可靠像素(mean)的最近邻值的平均值分配给不可靠像素,然后将它们合并在一起 我认为第一步可能是在每个灰色单元格周围找到

我有两个不重叠的空间投影光栅对象。一个光栅(rk)的值可靠,而另一个光栅(dnn)的值不可靠

#reliable
plot(rk)
#unreliable
plot(dnn, add=TRUE, col='gray80')
在此(显示我的数据子集)中,颜色表示可靠光栅的值,而我将所有不可靠光栅像素绘制为灰色。我想根据可靠值更改不可靠值。该问题的一个更简单的解决方案可能是将周围可靠像素(mean)的最近邻值的平均值分配给不可靠像素,然后将它们合并在一起

我认为第一步可能是在每个灰色单元格周围找到一个缓冲区,然后在每个缓冲区内找到平均值。然而,为了处理NAs(不包括计算中的NAs),我首先确定了非NA索引

library(raster)
#selecting those index that are non-NAs
idx<-is.na(getValues(dnn))
idx<-which(idx==FALSE)
> length(idx)
[1] 602
#proving that the determined idx is correct
> sum(!is.na(getValues(dnn)))
[1] 602
库(光栅)
#选择非NAs的索引
idx总和(!is.na(getValues(dnn)))
[1] 602
但是我在做缓冲时出错了

#doing buffer for those idx only
for (i in idx[i]) {b(i)<-buffer(dnn[i], width=500)}
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘buffer’ for signature ‘"numeric"’
#仅为那些idx执行缓冲区

对于(i在idx[i]){b(i)使用点模式方法。将每个不可靠单元视为x,y坐标,将所有可靠单元视为x,y,Z值。将x,y,Z放入空间插值算法,例如简单的反距离加权或更简单的克里格法,然后在不可靠的x,y位置进行预测。将预测值放回右侧的网格中这不是一个好地方


automap
包可以在这里帮助您(还有
gstat
和R空间任务视图)

thanks@Spacedman,但问题是,我实际上不想插值——这将是我最后的手段。我正在尝试光栅包的“相邻”功能。除非值是分类的,而不是连续的数字,否则我看不到使用相邻方法的意义,与一种原则性的方法相比,这种方法不仅可以得到估计值,而且可以得到误差e估计太多了。哦,好吧……实际上我试过相邻,但失败了,我认为插值是我唯一的选择!