【问题标题】:How to interpolate between rasters?如何在栅格之间进行插值?
【发布时间】:2015-10-14 13:46:32
【问题描述】:

如果有三个栅格(作为矩阵):

r1 <- raster(nrows=10, ncols=10); r1 <- setValues(r1, 1:ncell(r1))
r16 <- raster(nrows=10, ncols=10);r16 <- setValues(r16, 1:ncell(r16))
r30 <- raster(nrows=10, ncols=10);r30 <- setValues(r30, 1:ncell(r30))

我想对r1,c16,c30 进行线性插值以找到介于两者之间的值,即r2,r3,r4,......r15 then r17,r18,r19,..........r29

这可以使用 R 吗?

【问题讨论】:

  • 1:ncell(r) 中的 r 是什么?

标签: r matrix raster


【解决方案1】:

这是一种方法

library(raster)
r <- raster(nrows=10, ncols=10); 
values(r) <- NA

x <- sapply(1:30, function(...) r)
x[[1]] <- setValues(r, runif(ncell(r)))
x[[16]] <- setValues(r, runif(ncell(r))) + 10
x[[30]] <- setValues(r, runif(ncell(r))) + 20

s <- stack(x)

z <- approxNA(s)

plot(z)
plot(1:30, z[1])

这是另一种方法

library(raster)
r <- raster(nrows=10, ncols=10); 
x1 <- setValues(r, runif(ncell(r)))
x16 <- setValues(r, runif(ncell(r))) + 10
x30 <- setValues(r, runif(ncell(r))) + 20

s <- stack(x1, x16, x30)
x <- calc(s, fun=function(y) approx(c(1,16,30), y, 1:30)$y)

但是如果三层中有 NA 值,这将失败。您需要调整函数 fun 来处理这个问题(这里是 example)。

【讨论】:

  • 嗯,这似乎使this monstrosity 或多或少是多余的。
  • @jbaums 您的函数的主要问题是它不能向后推断。例如,如果我有一个从 1 月 20 日开始的一年的数据,并且我想对全年进行 inter/extra,那么您的功能将无法正常工作。
  • @temor - 这是真的(我在文档的详细信息部分中提到了它)。
  • 我可以看,但是为什么呢?
猜你喜欢
  • 2021-06-02
  • 1970-01-01
  • 2023-04-11
  • 2018-01-05
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
相关资源
最近更新 更多