使用R将一个栅格的单元格值分配给另一个栅格的相邻单元格

时间:2013-12-30 03:12:11

标签: r buffer raster

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

#reliable
plot(rk)
#unreliable
plot(dnn, add=TRUE, col='gray80')

在此figure(显示我的数据的子集)中,颜色代表可靠栅格的值,而我将所有不可靠的栅格像素绘制为灰色。我想根据可靠的值更改不可靠的值。对该问题的更容易的解决方案可以是将周围可靠像素(平均值)的最近邻居值的平均值分配给不可靠的像素,然后将它们合并在一起。

我认为第一步可能是找到每个灰色单元周围的缓冲区,然后找到每个缓冲区内的平均值。但是,为了处理NA(不包括计算中的那些),我首先确定了非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

但我在做缓冲时遇到错误

#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"’

我不确定这是否是正确的方法,即使在获取缓冲区后,计算平均值(我希望使用区域统计数据)并将它们分配给相应的灰色单元格对我来说看起来不是一件容易的事。有什么建议??

1 个答案:

答案 0 :(得分:0)

使用点模式方法。将每个不可靠的单元格视为x,y坐标,将所有可靠的单元格视为x,y,Z值。将x,y,Z放入空间插值算法,例如简单的反距离加权或不太简单的克里金法,然后在不可靠的x,y位置进行预测。将预测值放回到正确位置的网格中。

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