如何在栅格之间插值?

问题描述 投票:0回答:2

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

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 可以吗?

r matrix raster
2个回答
3
投票

这里有一个方法可以做到这一点

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
来处理这个问题(这是一个 示例)。


0
投票

有没有办法做到这一点,但将 xout 大约更改为另一个单元格值?我一直在尝试将两个不同的栅格放入应用程序中,但它似乎对我不起作用。

我希望将值插值到一定深度,其中栅格中的每一层都是固定深度的气候值。从表面到海底。输出将是单层栅格,其中堆栈单元级别值根据输入栅格的深度插值到最近的深度

z

我在想这样的事情:

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

## this would be say elevations per cell
z <- setValues(r,sample(1:30,100,replace=TRUE))

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

我尝试了各种方法来索引深度栅格

z
但没有运气。任何指点都会很棒。

© www.soinside.com 2019 - 2024. All rights reserved.