Tho*_*asP 2 interpolation r raster spatial
I\xc2\xb4d 喜欢在栅格内插入缺失值:
\nr <- rast(xmin=0, xmax=10, ymin=0, ymax=10, nrows=50, ncols=50)\ne = rast(xmin=2, xmax=4, ymin=2, ymax=4, nrows=10, ncols=10)\nvalues(r) <- 1:ncell(r)\nvalues(e) <- 1:ncell(e)\n\nr=raster(r)\ne=raster(e)\nr[intersect(r,e)]=NA\nplot(r)\nRun Code Online (Sandbox Code Playgroud)\n我怎样才能做到这一点?
\n
我知道如何使用不同的方法(样条线、克里金法、IDW...)在点之间进行插值,但我不知道如何在多边形尺度上执行此操作。
\n由于这是二维数据,您可以将通常使用的相同插值函数应用于矩阵的每一列。例如,使用approx():
r_interp <- r |>
as.matrix() |>
apply(MARGIN = 2, \(x) approx(x)[["y"]]) |>
raster()
plot(r_interp)
Run Code Online (Sandbox Code Playgroud)
您可能认为这只能有效,因为 x 轴上的每个值都是相同的,但它也适用于其他情况。例如,如果我们生成一个不同的矩阵并NA在明显的非线性区域添加更多值:
Z <- as.matrix(r)
r_nonlin <- sapply(
seq_len(ncol(Z)),
\(i) Z[, i] * i
) |>
raster()
# Create more NAs
r_nonlin[30:40, 30:40] <- NA
plot(r_nonlin)
Run Code Online (Sandbox Code Playgroud)
我们仍然可以使用相同的方法:
r_nonlin |>
as.matrix() |>
apply(MARGIN = 2, \(x) approx(x)[["y"]]) |>
raster() |>
plot()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |