在R中捕捉栅格网格


10

我正在尝试在R中对齐两个栅格网格。对齐后,我希望能够将它们添加在一起。

我试图检查使a stack是否有效:

grid_snap <- stack(habi_sdw, Pop_sdw)

我得到以下错误:

compareRaster(x)中的错误:不同程度

栅格网格具有以下属性:

show(habi_sdw)
# class       : RasterLayer 
# dimensions  : 9187, 9717, 89270079  (nrow, ncol, ncell)
# resolution  : 0.00892857, 0.00892857  (x, y)
# extent      : -28.83706, 57.92186, -36.02464, 46.00214  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs 
# data source : C:\Users\di39\AppData\Local\Temp\R_raster_di39\raster_tmp_2015-08-12_172902_12860_17067.grd 
# names       : layer 
# values      : 0, 333707.6  (min, max)

show(Pop_sdw)
# class       : RasterLayer 
# dimensions  : 10143, 8858, 89846694  (nrow, ncol, ncell)
# resolution  : 0.008333333, 0.008333333  (x, y)
# extent      : -17.53524, 56.28143, -46.97893, 37.54607  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
# data source : C:\Users\di39\AppData\Local\Temp\R_raster_di39\raster_tmp_2015-08-12_170421_12860_12760.grd 
# names       : pop2010ppp 
# values      : 0, 128925.9  (min, max)

使用alignExtent()栅格包似乎不是正确的做法。

由于分辨率略有不同,是否需要重新采样?

(0.00892857 x 0.00892857)与(0.008333333与0.008333333)

Answers:


15

这个问题类似于:用数据提取和分辨率更改逐个栅格裁剪栅格,但是角度不同。但是,我认为答案可能是相同的。首先,选择要确定的栅格。为了方便起见,我将在此重复我以前的回答:

加载所需的库:

library(raster)
library(rgdal)

读取栅格:

r1 = raster("./dir/r1.tif")
r2 = raster("./dir/r2.tif")

重新采样到同一网格:

r.new = resample(r1, r2, "bilinear")

如果需要(用于遮罩),请设置范围以匹配:

ex = extent(r1)
r2 = crop(r2, ex)

删除了超出栅格之一的数据(如果需要):

r.new = mask(r.new, r2)

现在,您的栅格已匹配。


0

是。您需要对栅格重新采样,以使其具有相同的大小和相同的范围。R本身并不处理。鉴于您的两个栅格都没有完全包含另一个栅格,您应该考虑使用自己喜欢的分辨率创建最小范围的栅格,然后重新采样并裁剪其他栅格以匹配该栅格。


2
请举例说明您的答案,例如提供一些示例代码。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.