栅格 R 与矢量 R 的区别

4
我有两个栅格对象。
> 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))

我遇到了这个错误

在比较栅格图像(e1, e2, extent = FALSE, rowcol = FALSE, crs = TRUE)时出现错误:起点不同

有人能帮忙吗?


3
正确的做法只需要x1 - x2,但是首先需要使栅格具有相同的范围和分辨率。 - jbaums
你应该创建RasterLayer对象来使这个问题可重现,例如 x1 <- raster(xmn=-97.2, xmx=0, ymn=20, ymx=66.5, nrow=36, ncol=72) - Robert Hijmans
1个回答

9

你需要重新采样其中一个 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是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接