Raster ızgaraları R


10

R'de iki raster ızgarasını hizalamaya çalışıyorum. Bir kez hizalandığında onları bir araya getirebilmek istiyorum.

stackYapmanın işe yarayıp yaramayacağını kontrol etmeye çalıştım :

grid_snap <- stack(habi_sdw, Pop_sdw)

Ve aşağıdaki hatayı alıyorum:

CompareRaster (x) hatası: farklı ölçüde

Raster ızgaraları aşağıdaki özelliklere sahiptir:

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)

alignExtent()Raster paketinde kullanmak doğru bir yaklaşım değildir.

Çözünürlükler biraz farklı olduğu için yeniden örneklemem gerekir mi?

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

Yanıtlar:


15

Bu soru şuna benzer: Veri çıkarma ve çözünürlük değişikliği olan , ancak farklı bir açıdan gelen tarama ile klip tarama . Ancak cevabın muhtemelen aynı olduğunu düşünüyorum. Öncelikle, kesin olmasını istediğiniz raster seçin. Önceki cevabımı kolaylıkla tekrarlayacağım:

Gerekli kitaplıkları yükleyin:

library(raster)
library(rgdal)

Raferleri oku:

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

Aynı ızgaraya yeniden örnekleme:

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

Gerekirse (maskeleme için) uzantıları eşleşecek şekilde ayarlayın:

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

Rağmenlerden birinin dışında kalan veriler kaldırıldı (gerekiyorsa):

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

Sizin rasterleriniz artık eşleşiyor.


0

Evet. Aynı boyutta ve aynı boyutta olmaları için rasterlerinizi yeniden örneklemeniz gerekir. R bununla tek başına ilgilenmiyor. Hiçbir rasterinizin diğerini tam olarak içermediği göz önüne alındığında, tercih ettiğiniz çözünürlükle minimum genişlikte bir raster oluşturmayı düşünmelisiniz ve ardından diğerlerini buna uyacak şekilde yeniden örnekleyip kırpmalısınız.


2
Lütfen cevabınızı, örneğin bazı örnek kodlar sağlayarak ayrıntılandırın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.