Оснащення растрових сіток в R


10

Я намагаюся вирівняти дві растрові сітки в Р. Після вирівнювання я хотів би мати можливість їх скласти разом.

Я спробував перевірити, чи stackспрацьовує створення:

grid_snap <- stack(habi_sdw, Pop_sdw)

І я отримую таку помилку:

Помилка порівнянняRaster (x): різний ступінь

Растрові сітки мають такі властивості:

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()в растровому пакеті, здається, не є правильним підходом.

Чи потрібно повторно проводити вибірку, оскільки резолюції дещо інші?

(0,00892857 x 0,00892857) порівняно (0,008333333 проти 0,008333333)

Відповіді:


15

Це питання схоже на: Розрізати растр за допомогою растру із вилученням даних та зміною роздільної здатності , але з іншого боку. Однак я думаю, що відповідь, ймовірно, однакова. Спочатку виберіть, який растр ви хочете остаточно. Я повторю свою попередню відповідь тут для зручності:

Завантажте необхідні бібліотеки:

library(raster)
library(rgdal)

Прочитайте растри:

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

Повторити вибір до тієї ж сітки:

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

Якщо потрібно (для маскування), встановіть відповідні розширення:

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

Вилучені дані, які потрапляють за межі однієї з растрових (якщо вам потрібно):

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

Зараз ваші растри відповідають.


0

Так. Потрібно перевпорядкувати свої растри для того, щоб вони були однакового розміру і мали однаковий обсяг. R не займається цим самим. Зважаючи на те, що жодна з ваших растрових файлів не містить повністю інших, слід розглянути можливість створення растру мінімальної міри з бажаною роздільною здатністю, а потім переупорядкувати та обрізати інші, щоб відповідати цьому.


2
Будь-ласка, уточнюйте свою відповідь, наприклад, надаючи зразок коду.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.