我有光栅图像文件。它有348个频段。 我想从中删除负值并将它们指定为 NA。
我所做的是:
library(terra)
img1 <- rast("~/PATH/image_name")
img1
class : SpatRaster
dimensions : 3311, 678, 348 (nrow, ncol, nlyr)
resolution : 4.1, 4.1 (x, y)
extent : (xmin, xmax, ymin, ymax)
coord. ref. : UTM Zone XY, Northern Hemisphere
source : img_msk_knl_brdf
names : 401.4~eters, 406.4~eters, 411.5~eters, 416.5~eters, 421.5~eters, 426.5~eters, ...
我试过了
for (i in 1:nlyr(img1)) {
img1[[i]][img1[[i]] < 0] <- NA
}
我也尝试过这个..
img1[img1 < 0] <- NA
两次它都在后台连续处理..但似乎没有做任何事情..我必须强制终止 R 会话/RStudio。
我在这里做错了什么?
x[]<-
符号非常适合在小型数据集上进行交互使用。但您通常应该避免这种模式并使用更直接、更高效的方法。在这种情况下,那就是
x <- terra::clamp(img1, 0, values=FALSE)
其他情况请参阅
terra::classify
和terra::subst
。如果您也将这样的循环用于其他用途,请仔细查看手册:?terra