如何使用两个 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 <- RasterStack_1 + RasterStack2*(-3)
吗?如果两个堆栈具有相同的尺寸、层数等,它应该可以工作。
有关@JoshO'Brien 评论的其他上下文:Difference between = and <-
@Badger 实际上,=
在这里和<-
一样有效。我可能应该说“尝试做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 进行计算?的主要内容,如果未能解决你的问题,请参考以下文章