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

如何在R中对指定文件夹内的全部栅格数据执行批量运算操作?

R语言批量栅格缩放存储实现方案

我们使用terra包完成操作,它相比旧版raster包运算速度更快、内存占用更低,适配绝大多数栅格处理场景。

# 1. 安装加载包(如果已经安装可跳过install.packages行)
install.packages("terra")
library(terra)

# 2. 定义路径参数,替换为你自己的实际路径
input_dir <- "./folder1"  # 输入栅格所在文件夹
output_dir <- "./folder2" # 输出目标文件夹

# 自动创建输出文件夹(如果不存在)
if (!dir.exists(output_dir)) {
  dir.create(output_dir, recursive = TRUE)
}

# 3. 获取输入文件夹下所有tif格式文件列表
tif_files <- list.files(
  path = input_dir,
  pattern = "\\.tif$", # 匹配所有后缀为tif的文件,忽略大小写的话可以加ignore.case = TRUE
  full.names = TRUE # 返回文件完整路径
)

# 4. 循环处理每个栅格文件
for (tif_path in tif_files) {
  # 读取单个栅格
  r <- rast(tif_path)
  # 乘以0.0001系数
  r_scaled <- r * 0.0001
  # 生成输出文件路径,保持原文件名
  output_path <- file.path(output_dir, basename(tif_path))
  # 写入tif文件,可选添加LZW压缩减小文件体积
  writeRaster(
    r_scaled, 
    output_path, 
    overwrite = TRUE, # 若输出文件已存在则覆盖,不需要可以删掉
    wopt = list(compress = "LZW")
  )
}

注意事项

  • 若你的栅格文件后缀是tiff而非tif,可以把pattern参数修改为\\.tif(f)?$即可同时匹配两种后缀
  • 如果需要保留原文件的无数据(NA)属性、元数据信息,terra的writeRaster会默认保留,不需要额外配置
  • 若处理超大体积栅格时遇到卡顿,可以给rast函数添加memfrac = 0.6参数,分配更多运行内存给栅格处理进程

内容的提问来源于stack exchange,提问作者Salvatore Praticò

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:24:03