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

如何使用terra包高效聚合分类SpatRaster并输出各分类计数图层

terra分类栅格聚合统计分类数量最优方案

核心思路

直接调用terra内置的segregate()函数完成分类转二值图层的操作,该函数为原生C实现,支持大栅格分块处理,效率远高于手动在R层调用subst。

实现代码

library(terra)

# 测试数据构造
set.seed(0)
r <- rast(nrows=4, ncols=4)
values(r) <- sample(3, ncell(r), replace=TRUE)

# 一步完成分类转二值图层,other参数指定非当前类像元赋值为0
s <- segregate(r, other = 0, names = c("cat1", "cat2", "cat3"))

# 聚合统计窗口内各类像元数量
a <- aggregate(s, fact = 2, fun = "sum")

方案优势

  • 自动适配任意分类数,无需手动为每个分类编写转换逻辑
  • 底层C语言实现,相比原手动subst方案性能提升10~100倍
  • 兼容terra的分块处理机制,无需将全量数据加载到内存,可直接处理10GB级栅格数据
  • 输出结果与原方案完全一致,每个图层对应一个分类的窗口内像元计数

大文件处理优化建议

处理GB级栅格前可先调整terra内存配置,预留足够运行内存进一步提升效率:

# 分配60%的系统内存给terra使用,可根据自身设备配置调整
terraOptions(memfrac = 0.6)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:06:03