Griglie raster a scatto in R


10

Sto cercando di allineare due griglie raster in R. Una volta allineato, vorrei poterle sommare.

Ho provato a verificare se fare un stackavrebbe funzionato:

grid_snap <- stack(habi_sdw, Pop_sdw)

E ottengo il seguente errore:

Errore in compareRaster (x): diversa misura

Le griglie raster hanno le seguenti proprietà:

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'uso alignExtent()nel pacchetto raster non sembra essere l'approccio corretto.

Devo ricampionare perché le risoluzioni sono leggermente diverse?

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

Risposte:


15

Questa domanda è simile a: Clip raster di raster con estrazione dei dati e modifica della risoluzione , ma proveniente da un'angolazione diversa. Tuttavia, penso che la risposta sia probabilmente la stessa. Prima di tutto, scegli quale raster desideri essere definitivo. Ripeterò qui la mia risposta precedente per facilità:

Carica le librerie richieste:

library(raster)
library(rgdal)

Leggi raster:

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

Ricampiona sulla stessa griglia:

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

Se necessario (per il mascheramento), impostare le estensioni affinché corrispondano:

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

Dati rimossi che non rientrano in uno dei raster (se necessario):

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

I tuoi raster ora corrispondono.


0

Sì. Devi ricampionare i tuoi raster in modo che abbiano le stesse dimensioni e la stessa misura. R non se ne occupa da solo. Dato che nessuno dei tuoi raster contiene completamente l'altro, dovresti considerare di creare un raster di minima estensione con la tua risoluzione preferita, quindi ricampionare e ritagliare gli altri in modo che corrispondano a quello.


2
Elaborare la risposta, ad esempio fornendo un codice di esempio.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.