如何在保持数据限制的同时平滑 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))
我有一个看起来有点像 '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))