如何在栅格之间进行插值?
How to interpolate between rasters?
如果有三个栅格(作为矩阵):
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 吗?
这是一种方法
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
来处理这个问题(这里是 )。
如果有三个栅格(作为矩阵):
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 吗?
这是一种方法
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
来处理这个问题(这里是