gpt4 book ai didi

r - 光栅 R 之间的差异

转载 作者:行者123 更新时间:2023-12-05 08:57:22 25 4
gpt4 key购买 nike

我有两个光栅对象

> 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))

我收到这个错误

Error in compareRaster(e1, e2, extent = FALSE, rowcol = FALSE, crs = TRUE, :different origin

有人能帮忙吗?

最佳答案

您需要对两个 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 的组合是最好的。

关于r - 光栅 R 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com