r - 如何在 R 中对栅格进行最近邻插值?
问题描述
我有一个光栅图像,我只想插入 NA 的值。缺失的 NA 通常位于图像的边缘。我对 R 相当陌生,所以我不确定该怎么做。值的准确性不必更高,我只想做最近邻插值。任何帮助和建议或欢迎。我添加了一个简化的代码来生成一个在边界上具有 NA 值的栅格,但理想情况下,这个 NA 值将在栅格的所有 4 个边上。我发现了一个类似于填充 NA 间隙的帖子使用邻域分析填充栅格中 NA 值的间隙(例如,不是单个单元格),但它对我不起作用。
rast <- raster(nrow=10, ncol=10, crs='+proj=utm +zone=1 +datum=WGS84', xmn=0, xmx=1, ymn=0, ymx=1)
values(rast) <- 1:ncell(rast)
values(rast)[1:20] <- NA
解决方案
我认为您可以为此使用焦点功能。如果您在边境和其他地方有 NA,我认为以下是最简单的方法
我使用了一些更复杂的示例数据。前两行是NA,中间也有NA
library(raster)
r <- raster(nrow=10, ncol=10, crs='+proj=utm +zone=1 +datum=WGS84', xmn=0, xmx=1, ymn=0, ymx=1)
values(r) <- 1:ncell(r)
r[c(1:2, nrow(r)), ] <- NA
r[, 1] <- NA
r[3:5, 3:5] <- NA
plot(r)
w <- matrix(1, 3, 3) #c(0,1,0,1,0,1,0,1,0), nrow=3)
x <- focal(r, w, mean, na.rm=TRUE, NAonly=TRUE, pad=TRUE)
plot(x)
因为第一行没有任何不是 NA 的邻居,我们需要再次运行最后一行
xx <- focal(x, w, mean, na.rm=TRUE, NAonly=TRUE, pad=TRUE)
plot(xx)
text(r, cex=.8)
text(mask(xx, r, inverse=TRUE), col="red", cex=.8)
请注意,在具有方形像元的栅格上,有四个(车箱)最近的邻居和其他 4 个在对角线上附近。对于边界行,您可以使用此值w
来获取未定义的车
w <- matrix(c(0,1,0,1,0,1,0,1,0), nrow=3)
# [,1] [,2] [,3]
#[1,] 0 1 0
#[2,] 1 0 1
#[3,] 0 1 0
但这不适用于其他单元格(也不适用于 4 个角单元格)。
推荐阅读
- json - JSON 到具有可变根的 DataTable 网络
- javascript - 如何在同一个节点子进程中执行多个命令?
- bluetooth - 将 CSRMesh 蓝牙与 Google Home 集成
- c# - UWP 中 Win 10 IOT 线程死锁
- python - 如何根据 Pandas Python 中特定列中的重复值检索行?
- batch-file - Windows CMD FINDSTR STRING AND COPY FILE
- apache - AWS ElasticBeanstalk 定期关闭
- c# - C# 在 httpwebresponse 中查找字符串
- python - 我希望用户在游戏结束后返回到 while 循环
- ssl - JMeter Recorder 无法使用 HTTPS