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

R语言如何将小范围栅格复制到更大范围空栅格并生成栅格堆栈?

R语言栅格拼接解决方案

前置准备

使用目前R生态性能最优的terra栅格处理包实现,无需复杂自定义函数,完全适配你的需求场景:

# 安装加载依赖包
install.packages("terra")
library(terra)

步骤1:创建目标大栅格模板

根据你提供的大栅格参数生成全NA的基础模板:

target_template <- rast(
  ext = ext(650585.3, 653000.3, 4745829, 4748292),
  nrows = 821,
  ncols = 805,
  res = c(3,3),
  # 这里替换为你实际的UTM坐标系EPSG编码,比如北半球UTM50带为EPSG:32650
  crs = "EPSG:xxxx"
)
# 初始化所有值为NA
values(target_template) <- NA

步骤2:批量处理小栅格

场景A:所有小栅格拼接为单波段栅格

如果30个小栅格是同一份数据的拆分块,需要合并为单波段大栅格:

# 批量读取文件夹下所有小栅格,此处默认格式为tif,可自行修改pattern参数
small_rasts <- list.files(
  path = "你的小栅格存储文件夹路径",
  pattern = "\\.tif$",
  full.names = TRUE
) |> lapply(rast)

# 方法1:直接调用merge,你的数据坐标差均为分辨率整数倍,不存在原点对齐问题
merged_result <- do.call(merge, c(list(target_template), small_rasts))

# 方法2:低层级直接赋值,性能更高适合大数量栅格
merged_result <- target_template
for (sr in small_rasts) {
  target_cells <- cells(merged_result, ext(sr))
  merged_result[target_cells] <- sr[]
}

场景B:所有小栅格生成多波段堆栈

如果30个小栅格是不同时序/不同指标的同范围数据,需要生成多波段堆栈:

# 批量将小栅格扩展到目标模板范围,再直接堆叠为多波段栅格
rast_stack <- lapply(small_rasts, \(x) extend(x, target_template)) |> rast()
注意事项
  • 若小栅格存在重叠区域,merge默认保留第一个出现的非NA值,如需重叠区计算可添加fun = mean/max等自定义函数参数
  • 你提供的样例大小栅格坐标差均为分辨率3的整数倍,完全对齐,不会触发原点校验报错

内容的提问来源于stack exchange,提问作者Nate Lockwood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:54:01