for 循环使用 terra 包从 R 中的光栅文件中删除负值

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

我有光栅图像文件。它有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。

我在这里做错了什么?

r for-loop raster terra
1个回答
0
投票

x[]<-
符号非常适合在小型数据集上进行交互使用。但您通常应该避免这种模式并使用更直接、更高效的方法。在这种情况下,那就是

x <- terra::clamp(img1, 0, values=FALSE)

其他情况请参阅

terra::classify
terra::subst
。如果您也将这样的循环用于其他用途,请仔细查看手册:
?terra

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