You need to enable JavaScript to run this app. 使用terra包app族函数实现栅格与向量运算及SpatRasterDataset操作问询
优惠活动
大模型
产品
解决方案
定价
更多

使用terra包app族函数实现栅格与向量运算及SpatRasterDataset操作问询

terra包SpatRasterDataset多值向量运算实现方案

完全可以实现,你编写的测试代码核心逻辑正确,调整后即可得到n个结果栅格的输出,具体内容如下:

完整可运行代码

library(terra)

# 基础数据准备
s <- rast(system.file("ex/logo.tif", package="terra"))[[1]] 
# 构建SpatRasterDataset
srd <- sds(list(i = s, j = s/10))

# 自定义运算函数
fun = function(i, j) { 
    v <- c(1, 10, 100, 1000)
    f <- i + j
    return(v / f)
}

# 执行运算,无需额外指定recursive参数,默认即可匹配需求
r <- lapp(srd, fun = fun)

结果说明

运行后得到的r是4层的SpatRaster,每层分别对应向量中4个值和栅格运算的结果,完全符合你的需求。

注意事项与优化建议

  • 需保证SpatRasterDataset中所有子数据集的空间范围、分辨率、行列数完全一致,否则运算会报错
  • 可以将运算向量作为参数传入lapp,不需要硬编码在函数内部,灵活适配不同的输入向量:
# 更灵活的参数化写法
fun_param <- function(i, j, v) { 
    f <- i + j
    return(v / f)
}
custom_v <- c(2, 20, 200, 2000)
r_param <- lapp(srd, fun = fun_param, v = custom_v)
  • 自定义函数返回的向量长度就是最终输出栅格的层数,可根据需求调整向量长度得到对应数量的结果栅格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:06:01