r - 缩放栅格堆栈中的单个像元
问题描述
library(raster)
r <- raster(ncol=10, nrow=10)
s <- stack(lapply(1:5, function(i) setValues(r, runif(100, -1, 1))))
我想做两件事:
在每个栅格图层中用 NA 替换负值
使用该单元格跨 5 层的平均值和标准差来缩放每个单元格
for(i in 1:5){ s[[i]][s[[i]] < 0] <- NA }
对于第二个任务,我如何使用沿栅格层的平均值和标准差来缩放单个像元。例如,以下实现是否正确?
scale(s, center = TRUE, scale = TRUE)
我认为它正在做的是取一层,计算层均值和 sd,然后使用该均值和 sd 对每个单元格进行归一化。我想要的是使用 5 层的均值和 sd 对每个单元格进行归一化
解决方案
要用 NA 替换负值,您可以使用 reclassify
示例数据
library(raster)
r <- raster(ncol=10, nrow=10)
s <- stack(lapply(1:5, function(i) setValues(r, runif(100, -1, 1))))
解决方案
x <- reclassify(s, cbind(-Inf, 0, NA))
要将scale
或类似功能应用于每个单元格,您可以使用calc
z <- calc(x, scale)
推荐阅读
- laravel - 从 MessageBag Laravel 中删除自定义错误
- traefik - 如何暴露两个 HTTPS 端口?
- vue.js - 无法安装组件:未定义模板或渲染函数。(Vue 使用插件)
- python - Python写入抓取数据的json文件
- ruby - 如何为 Timecop 修补文件和核心扩展
- git - 在 VSTS 中搜索提交时产生错误:VCErrorCommitNotFound
- hive - cdh 到 hdp 配置单元
- javascript - 修改 D3 Force-Directed Graph 中的现有节点,而不会出现跳跃过渡
- batch-file - 有没有办法对 forfiles 执行否定搜索掩码?
- python - 如何在谷歌 colab 上执行搅拌机命令?