You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在terra中使用ifel函数将栅格堆栈各层单独存为文件的问题

问题:ifel处理栅格堆栈后批量保存独立图层

我有一个包含数十个图层的大型栅格堆栈,希望使用ifel函数处理后直接将每个图层保存至磁盘,但ifel的filename参数仅能生成单个输出文件。查看ifel帮助文档发现它支持writeRaster的额外参数,而writeRaster可以单独保存每个图层,这正是我需要的。

测试代码

r <- rast(nrows=5, ncols=5, xmin=0, xmax=1, ymin=0, ymax=1)
values(r) <- c(-10:0, NA, NA, NA, 0:10)

s <- r*1.2

r.stack <- c(r, s)
names(r.stack) <- c("r", "s")
t <- rast(nrows=5, ncols=5, xmin=0, xmax=1, ymin=0, ymax=1)

values(t) <- c(rep(1, 5), rep(2, 5), rep(3, 5), rep(2, 5), rep(3, 5))

x <- ifel(t==3, 5, r.stack,
          filename=paste("test",names(r.stack), ".tiff", sep=""))
# 警告信息:
# [cover] only the first filename supplied is used

当前输出

  • 生成包含两个图层的单个.tiff文件
  • 触发警告:[cover] only the first filename supplied is used

期望输出

生成两个以图层名称命名的独立.tiff文件(即testr.tiff和tests.tiff)

解决方案

先通过ifel完成栅格处理,再调用writeRaster批量保存每个图层:

writeRaster(x, filename=paste("test",names(r.stack), ".tiff", sep=""))

内容的提问来源于stack exchange,提问作者kl-higgins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:32:14