【问题标题】:How to smooth out a raster in r while maintaining the data limits?如何在保持数据限制的同时平滑 r 中的栅格?
【发布时间】:2021-04-22 06:44:19
【问题描述】:

我有一个看起来有点“像素-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) 有什么想法可以做到这一点吗?

【问题讨论】:

  • 不确定您使用的是什么软件包。据我所知,这些函数不是基础 R 的一部分。您可以使用ylimxlim 控制plot 的限制。
  • 我已经编辑了我的问题。它是光栅包。我不想简单地改变图中的限制......我希望平滑的表面数据不超过原始数据集中的最大值。谢谢。

标签: r raster smoothing


【解决方案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)

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

另一种方法是使用焦点。

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

【讨论】:

  • 非常感谢。 clamp 工作。回复:focal 选项...这不受我能看到的任何限制吗?我错过了什么吗?
  • 它不受约束,但如果你不使用“双线性”和分解,它不能超出观察范围
猜你喜欢
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2018-02-04
  • 2014-08-29
  • 2013-06-17
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
相关资源
最近更新 更多