如何使用两个 RasterStack 进行计算?

Posted

技术标签:

【中文标题】如何使用两个 RasterStack 进行计算?【英文标题】:How to do calc using two RasterStack ? 【发布时间】:2016-04-21 09:38:36 【问题描述】:

我有两个大型 Rasterstack(每个 6000 个)。我想做一些简单的计算,比如

         NewRasterStack = RasterStack_1 + RasterStack2*(-3)

你能帮我推荐工作代码来做这个计算吗?所有数据都是使用 R raster 包处理的,所以我正在寻找 raster calc 函数。

提前谢谢你!

【问题讨论】:

如果您能提供一个最小的可重现示例来解决您的问题,那就太好了。我们可以从中工作并使用它来向您展示如何回答您的问题。这样,将来其他人也可以适合您的问题以及随附的答案。您可以查看this SO post,了解如何在 R 中制作出色的可重现示例。 你试过NewRasterStack &lt;- RasterStack_1 + RasterStack2*(-3)吗?如果两个堆栈具有相同的尺寸、层数等,它应该可以工作。 有关@JoshO'Brien 评论的其他上下文:Difference between = and <- @Badger 实际上,= 在这里和&lt;- 一样有效。我可能应该说“尝试做NewRasterStack = RasterStack_1 + RasterStack2*(-3)”。这里的关键点是 raster 包重载了 +* 运算符(以及其他运算符),因此当传递一对Raster* 对象。 @jbaums,真的。非常真实。我会在下次从罐子里倒出来之前更新它。 【参考方案1】:

如果堆栈具有相同的范围和分辨率,这应该可以工作:

NewRasterStack = RasterStack_1 + RasterStack2*(-3)

这可能会更有效率:

nr <- overlay(RasterStack_1, RasterStack2, fun=function(x,y) x - 3 * y)

【讨论】:

以上是关于如何使用两个 RasterStack 进行计算?的主要内容,如果未能解决你的问题,请参考以下文章

R:写入 RasterStack 并保留图层名称

有没有办法在两个栅格堆栈上应用PCA(具有相同的变量)

更改 randomForest 对象中的变量名称

如何找到两个 NFA 的交集

2 如何用Python进行数据计算

如何用excel计算两个日期之间相差的年数和月数