【问题标题】:How to do calc using two RasterStack ?如何使用两个 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 实际上,= 在这里和&lt;- 一样有效。我可能应该说“尝试做NewRasterStack = RasterStack_1 + RasterStack2*(-3)”。这里的关键点是 raster 包重载了 +* 运算符(以及其他运算符),因此当传递一对Raster* 对象。
  • @jbaums,真的。非常真实。我会在下次从罐子里倒出来之前更新它。

标签: r raster r-raster


【解决方案1】:

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

NewRasterStack = RasterStack_1 + RasterStack2*(-3)

这可能会更有效率:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多