Accrochage des grilles raster dans R

10

J'essaie d'aligner deux grilles raster dans R. Une fois aligné, j'aimerais pouvoir les ajouter ensemble.

J'ai essayé de vérifier si la réalisation d'un programme stackfonctionnerait:

grid_snap <- stack(habi_sdw, Pop_sdw)

Et j'obtiens l'erreur suivante:

Erreur dans compareRaster (x): étendue différente

Les grilles raster ont les propriétés suivantes:

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)

L'utilisation alignExtent()dans le package raster ne semble pas être la bonne approche.

Dois-je rééchantillonner car les résolutions sont légèrement différentes?

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

DI1
la source

Réponses:

15

Cette question est similaire à: Clip raster par raster avec extraction de données et changement de résolution , mais provenant d'un angle différent. Cependant, je pense que la réponse est probablement la même. Tout d'abord, choisissez le raster que vous souhaitez définir définitivement. Je vais répéter ma réponse précédente ici pour plus de facilité:

Charger les bibliothèques requises:

library(raster)
library(rgdal)

Lire les rasters:

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

Rééchantillonner sur la même grille:

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

Si nécessaire (pour le masquage), définissez les étendues pour qu'elles correspondent:

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

Données supprimées qui ne relèvent pas de l'un des rasters (si nécessaire):

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

Vos rasters correspondent maintenant.

MikeRSpencer
la source
0

Oui. Vous devez rééchantillonner vos rasters pour qu'ils aient la même taille et la même étendue. R ne s'en occupe pas tout seul. Étant donné qu'aucun de vos rasters ne contient entièrement l'autre, vous devez envisager de créer un raster d'étendue minimale avec votre résolution préférée, puis rééchantillonner et rogner les autres pour qu'ils correspondent à cela.

Mikkel Lydholm Rasmussen
la source
2
Veuillez élaborer votre réponse, par exemple en fournissant un exemple de code.