Schnappraster in R.

10

Ich versuche, zwei Rastergitter in R auszurichten. Einmal ausgerichtet, möchte ich sie zusammenfügen können.

Ich habe versucht zu überprüfen, ob das Erstellen eines stackfunktionieren würde:

grid_snap <- stack(habi_sdw, Pop_sdw)

Und ich bekomme folgenden Fehler:

Fehler in compareRaster (x): unterschiedlicher Umfang

Die Rastergitter haben folgende Eigenschaften:

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)

Die Verwendung alignExtent()im Rasterpaket scheint nicht der richtige Ansatz zu sein.

Muss ich ein Resample durchführen, da die Auflösungen geringfügig abweichen?

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

DI1
quelle

Antworten:

15

Diese Frage ähnelt: Clip Raster für Raster mit Datenextraktion und Auflösungsänderung , jedoch aus einem anderen Blickwinkel. Ich denke jedoch, dass die Antwort wahrscheinlich dieselbe ist. Wählen Sie zunächst das Raster aus, das Sie endgültig festlegen möchten. Ich werde meine vorherige Antwort hier zur Vereinfachung wiederholen:

Erforderliche Bibliotheken laden:

library(raster)
library(rgdal)

Lesen Sie Raster:

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

Resample in dasselbe Raster:

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

Stellen Sie bei Bedarf (zum Maskieren) die Extents so ein, dass sie übereinstimmen:

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

Entfernte Daten, die außerhalb eines der Raster liegen (falls erforderlich):

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

Ihre Raster stimmen jetzt überein.

MikeRSpencer
quelle
0

Ja. Sie müssen Ihre Raster neu abtasten, damit sie dieselbe Größe und denselben Umfang haben. R kümmert sich nicht alleine darum. Da keines Ihrer Raster das andere vollständig enthält, sollten Sie in Betracht ziehen, ein Raster mit minimaler Ausdehnung mit Ihrer bevorzugten Auflösung zu erstellen und die anderen dann erneut abzutasten und zuzuschneiden, um dies zu erreichen.

Mikkel Lydholm Rasmussen
quelle
2
Bitte erläutern Sie Ihre Antwort, indem Sie beispielsweise einen Beispielcode angeben.