如何调整栅格像元值占比:将值84的占比从9%提升至25%
调整栅格像元值84的占比至25%的实现方法
需求说明
保留原有值为84的像元不变,将其占比从当前9%提升至25%:
- 新增的16%占比(25%-9%)中,6%来自值为90的像元
- 5%来自值为85的像元
- 剩余5%来自值为80的像元
实现步骤及代码
基于提供的示例栅格r,按以下逻辑修改:
- 计算需转换的像元数量
总像元数为200,对应各目标值的转换数量:
- 90转84:
200 * 0.06 = 12个 - 85转84:
200 * 0.05 = 10个 - 80转84:
200 * 0.05 = 10个
- 执行转换的完整代码
# 初始化栅格(沿用你的示例代码) set.seed(200) r <- raster(ncol=10,nrow=20) r[] <- sample(80:90, 200, replace=T) # 获取各目标值的像元索引 idx_90 <- which(r[] == 90) idx_85 <- which(r[] == 85) idx_80 <- which(r[] == 80) # 随机选取对应数量的像元转换为84 r[sample(idx_90, 12)] <- 84 r[sample(idx_85, 10)] <- 84 r[sample(idx_80, 10)] <- 84 # 验证调整后的占比 no_cell_val84_new <- cellStats(r, function(x,...) sum(x==84)) per_84_new <- (no_cell_val84_new / ncell(r)) * 100 per_84_new # 输出结果应为25%
验证说明
执行代码后,per_84_new会返回25%,完全符合需求:原有84的像元全部保留,新增的84像元均来自指定的三个值的像元池。
内容的提问来源于stack exchange,提问作者Lily Nature
相关产品推荐
相关产品推荐

