【问题标题】:Difference between raster R栅格 R 之间的差异
【发布时间】:2015-10-28 20:04:51
【问题描述】:

我有两个 Raster 对象

> x1
class       : RasterLayer 
dimensions  : 36, 72, 2592  (nrow, ncol, ncell)
resolution  : 1.35, 1.291667  (x, y)
extent      : -97.2, 0, 20, 66.5  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : -9.527037, 15.03242  (min, max)

> x2
class       : RasterLayer 
dimensions  : 36, 72, 2592  (nrow, ncol, ncell)
resolution  : 1.351389, 1.333333  (x, y)
extent      : -97.3, 0, 20, 68  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : -5, 5  (min, max)

我想创建一个差异栅格。但是,当我尝试

x <- Reduce("-",list(x1,x2))

我收到此错误

compareRaster 中的错误(e1,e2,extent = FALSE,rowcol = FALSE,crs = TRUE,: 不同产地

谁能帮忙?

【问题讨论】:

  • 正确的做法是x1 - x2,但首先需要栅格具有相同的范围和分辨率。
  • 您应该通过创建RasterLayer 对象(如x1 &lt;- raster(xmn=-97.2, xmx=0, ymn=20, ymx=66.5, nrow=36, ncol=72) 等)来重现此问题。

标签: r raster


【解决方案1】:

您需要对两个 RasterLayer 对象之一进行重新采样,以使它们具有相同的范围和分辨率。 (尽管在许多情况下,您确实应该回到您的管道并确保从一开始就是这种情况)。你可以这样做:

library(raster)
# example data
x1 <- raster(xmn=-97.2, xmx=0, ymn=20, ymx=66.5, nrow=36, ncol=72)
x2 <- raster(xmn=-97.3, xmx=0, ymn=20, ymx=68, nrow=36, ncol=72)
values(x1) <- runif(ncell(x1))
values(x2) <- sample(-5:5, ncell(x2), replace=TRUE)

x1b <- resample(x1, x2)
dif <- x2 - x1b

使用resample 是不得已而为之的功能。如果两个图层的原点和分辨率相同,但范围不同,可以使用crop。在范围相同但分辨率不同的情况下,您可以使用(dis)aggregate。有时crop(dis)aggregate 的组合是最好的。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2016-03-17
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多