Ajustando grades raster em R

10

Estou tentando alinhar duas grades rasterizadas em R. Uma vez alinhadas, eu gostaria de poder adicioná-las.

Eu tentei verificar se fazer um stackfuncionaria:

grid_snap <- stack(habi_sdw, Pop_sdw)

E eu recebo o seguinte erro:

Erro no compareRaster (x): extensão diferente

As grades de varredura têm as seguintes propriedades:

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)

Usar alignExtent()o pacote raster parece não ser a abordagem correta.

Preciso reamostrar porque as resoluções são um pouco diferentes?

(0,00892857 x 0,00892857) vs (0,008333333 vs 0,008333333)

DI1
fonte

Respostas:

15

Essa pergunta é semelhante a: Clip raster por raster com extração de dados e alteração de resolução , mas vindo de um ângulo diferente. No entanto, acho que a resposta provavelmente é a mesma. Primeiro, escolha qual raster você deseja ser definitivo. Vou repetir minha resposta anterior aqui para facilitar:

Carregar bibliotecas necessárias:

library(raster)
library(rgdal)

Leia rasters:

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

Reamostrar para a mesma grade:

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

Se necessário (para mascarar), defina as extensões para corresponderem:

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

Dados removidos que ficam fora de uma das rasters (se necessário):

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

Suas rasters agora combinam.

MikeRSpencer
fonte
0

Sim. Você precisa refazer a amostra de seus rasters para que eles tenham o mesmo tamanho e a mesma extensão. R não lida com isso por si só. Dado que nenhum dos seus controladores contém totalmente o outro, considere criar uma varredura de extensão mínima com a sua resolução preferida e, em seguida, redimensionar e recortar os outros para corresponder a isso.

Mikkel Lydholm Rasmussen
fonte
2
Por favor, elabore sua resposta, por exemplo, fornecendo algum código de exemplo.