将栅格中的值检索到具有不同范围和分辨率的另一个栅格中

Posted

技术标签:

【中文标题】将栅格中的值检索到具有不同范围和分辨率的另一个栅格中【英文标题】:Retrieving values from raster into another raster with different extent and resolution 【发布时间】:2014-05-28 19:14:43 【问题描述】:

我得到了一个气候值的栅格图层“w_wgs”。另一方面,我创建了一个空的栅格“网格”。 我想将存储在“w_wgs”中的值分配到我的空栅格网格中。我尝试了 merge()、overlay()、over(),但这些都不起作用。

我该怎么做?假设这两个栅格没有相同的范围和分辨率(显然也没有相同数量的像元)......但两者都具有相同的 CRS (WGS84)。

在这里,我的 2 个对象的描述:

> extent(w_wgs)
class       : Extent 
xmin        : -64.50344 
xmax        : 74.07016 
ymin        : 12.93039 
ymax        : 72.72534 
> res(w_wgs)
[1] 0.01320 0.00895

> res(grid)
[1] 0.08 0.08
> extent(grid)
class       : Extent 
xmin        : 5 
xmax        : 17.96 
ymin        : 40 
ymax        : 50 

【问题讨论】:

extract 函数在这种情况下对您有用吗? 我想过,但似乎这个函数不能作为参数使用 2 'RasterLayer' 对象。我得到的结果是:> extract(w_wgs,grid) (function (classes, fdef, mtable) 中的错误:无法为签名“RasterLayer”、“RasterLayer”的函数“extract”找到继承的方法 你能把你想要的所有点值放到一个 SpatialPoints 数据框对象中,然后使用extract 函数吗?我能问一下你为什么要这样做吗? 【参考方案1】:

我认为你需要使用resample

grid <- resample(w_wgs, grid)

一个应该和你的情况类似的小例子:

x <- matrix(1:100, nr = 10, nc = 10)
a <- raster(x)

x2 <- matrix(NA, nr = 3, nc = 3)
b <- raster(x2)
# Manually changing the extent and resolution of b
b@extent@xmax <- 0.5
b@extent@ymin <- 0.3

b <- resample(a, b)

par(mfrow = c(2, 1))
plot(a)
plot(extent(b), add = T)
plot(b)

【讨论】:

以上是关于将栅格中的值检索到具有不同范围和分辨率的另一个栅格中的主要内容,如果未能解决你的问题,请参考以下文章

栅格范围和分辨率的修改会改变像素值的总和

更改 R 中的栅格空间范围

导出栅格怎么选择像素大小

对大型栅格进行算术运算的最快方法

计算R中具有不同来源和范围的2个栅格图层之间的重叠区域

有没有办法在两个栅格堆栈上应用PCA(具有相同的变量)