Memotret kisi-kisi raster di R

10

Saya mencoba untuk meluruskan dua grid raster di R. Setelah disejajarkan saya ingin dapat menambahkannya bersama.

Saya telah mencoba memeriksa apakah membuat sebuah stackakan bekerja:

grid_snap <- stack(habi_sdw, Pop_sdw)

Dan saya mendapatkan kesalahan berikut:

Kesalahan di compareRaster (x): tingkat yang berbeda

Grid raster memiliki properti berikut:

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)

Menggunakan alignExtent()dalam paket raster sepertinya bukan pendekatan yang benar.

Apakah saya perlu melakukan resample karena resolusinya sedikit berbeda?

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

DI1
sumber

Jawaban:

15

Pertanyaan ini mirip dengan: Clip raster oleh raster dengan ekstraksi data dan perubahan resolusi , tetapi datang dari sudut yang berbeda. Namun, saya pikir jawabannya kemungkinan sama. Pertama, pilih raster mana yang ingin Anda definitif. Saya akan mengulangi jawaban saya sebelumnya di sini untuk kemudahan:

Muat perpustakaan yang diperlukan:

library(raster)
library(rgdal)

Baca raster:

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

Pengecilan ulang ke kotak yang sama:

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

Jika diperlukan (untuk masking), atur luasan agar sesuai:

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

Data yang dihapus yang berada di luar salah satu raster (jika perlu):

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

Raster Anda sekarang cocok.

MikeRSpencer
sumber
0

Iya. Anda perlu menguji ulang raster Anda agar ukurannya sama dan memiliki tingkat yang sama. R tidak berurusan dengan itu dengan sendirinya. Karena tidak satu pun dari raster Anda yang sepenuhnya mengandung raster lain, Anda harus mempertimbangkan untuk membuat raster tingkat minimum dengan resolusi yang Anda inginkan, dan kemudian mencampur dan memotong yang lain untuk mencocokkannya.

Mikkel Lydholm Rasmussen
sumber
2
Silakan uraikan jawaban Anda, misalnya dengan memberikan beberapa kode sampel.