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

如何对大栅格rr1中值为2的像素范围内的小栅格rr2像素值求和

计算大栅格指定像素覆盖的小栅格像素总和

实现步骤

默认创建的两个栅格空间范围一致,直接按以下步骤操作即可:

  1. 创建rr1中值为2的像素掩码
    将rr1里值为2的像素标记为1,其余设为NA,生成掩码栅格:

    # 生成掩码:仅保留值为2的像素,标记为1
    rr1_mask <- rr1
    rr1_mask[rr1_mask != 2] <- NA
    rr1_mask[rr1_mask == 2] <- 1
    
  2. 将掩码重采样至rr2的分辨率
    因为rr2分辨率更高,需要把rr1的掩码匹配到rr2的像素尺度,确保每个rr2像素都能被标记是否属于目标区域:

    # 用最近邻法重采样,保证区域归属准确
    rr2_mask <- resample(rr1_mask, rr2, method = "ngb")
    
  3. 计算rr2中目标区域的像素总和
    通过掩码筛选rr2的对应像素,再求和:

    # 提取被覆盖的像素值并计算总和
    total_sum <- sum(rr2[!is.na(rr2_mask)], na.rm = TRUE)
    print(total_sum)
    

完整代码

library(raster)

# 生成示例栅格
rr1 <- raster(ncol=10, nrow=10)
rr1[] <- runif(ncell(rr1))
rr1[1]=2
rr1[10]=2
rr1[50]=2

rr2 <- raster(ncol=250, nrow=360)
rr2[] <- runif(ncell(rr2))

# 创建掩码
rr1_mask <- rr1
rr1_mask[rr1_mask != 2] <- NA
rr1_mask[rr1_mask == 2] <- 1

# 重采样掩码到rr2分辨率
rr2_mask <- resample(rr1_mask, rr2, method = "ngb")

# 计算总和
total_sum <- sum(rr2[!is.na(rr2_mask)], na.rm = TRUE)
print(total_sum)

补充说明

  • 采用最近邻法重采样是为了避免插值导致的区域归属错误,确保rr2像素准确对应rr1的原始像素范围。
  • 若两个栅格空间范围不一致,需先用extent或projectRaster调整至相同范围后再执行上述步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:46:10