如何在保持数据限制的同时平滑 r 中的栅格?

How to smooth out a raster in r while maintaining the data limits?

我有一个看起来有点像 'pixel-y' 的栅格,我想创建一个更平滑的版本以生成漂亮的地图。 这是一个示例数据集:

library(raster)
r <- raster(ncol=10, nrow=10)
values(r) <- runif(ncell(r))

我试过了:

plot(r,interpolate=TRUE)

但我不喜欢它的外观。然后我试了:

rr <- disaggregate(r, 3, method='bilinear')

看起来好多了,但是它改变了我的值的上限。我需要从平滑创建的新值来保持旧数据的限制(即 0 到 1) 我有什么想法可以做到这一点吗?

一个简单的方法是在重采样后限制值

library(raster)
r <- raster(nrow=10, ncol=10, xmn=0, xmx=10, ymn=0, ymx=10, vals=(1:100)/100)
rr <- disaggregate(r, 3, method='bilinear')
rr <- clamp(rr, 0, 1)

这可能已经足够好了,因为您应该只获得边缘观察范围之外的(几个)值。

另一种方法是使用 focal。

x <- disaggregate(r, 3)
f <- focal(x, matrix(1,3,3))