Chụp lưới raster trong R


10

Tôi đang cố gắng căn chỉnh hai lưới raster trong R. Sau khi căn chỉnh tôi muốn có thể thêm chúng lại với nhau.

Tôi đã cố gắng kiểm tra xem làm cho một stacksẽ làm việc:

grid_snap <- stack(habi_sdw, Pop_sdw)

Và tôi nhận được lỗi sau:

Lỗi trong so sánhRaster (x): mức độ khác nhau

Các lưới raster có các thuộc tính sau:

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)

Sử dụng alignExtent()trong gói raster dường như không phải là phương pháp chính xác.

Tôi có cần phải lấy mẫu lại vì độ phân giải hơi khác nhau không?

(0,00892857 x 0,00892857) so với (0,008333333 so với 0,008333333)

Câu trả lời:


15

Câu hỏi này tương tự như: Clip raster by raster với dữ liệu trích xuất và thay đổi độ phân giải , nhưng đến từ một góc độ khác. Tuy nhiên, tôi nghĩ rằng câu trả lời có thể giống nhau. Trước hết, chọn raster mà bạn muốn dứt khoát. Tôi sẽ lặp lại câu trả lời trước đây của tôi ở đây cho dễ:

Tải các thư viện cần thiết:

library(raster)
library(rgdal)

Đọc raster:

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

Lấy mẫu lại cho cùng một lưới:

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

Nếu được yêu cầu (đối với mặt nạ), hãy đặt phạm vi phù hợp:

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

Dữ liệu bị xóa nằm ngoài một trong các trình quét (nếu bạn cần):

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

Raster của bạn bây giờ phù hợp.


0

Đúng. Bạn cần phải lấy mẫu lại các raster của bạn để chúng có cùng kích thước và có cùng mức độ. R không tự mình giải quyết. Cho rằng cả hai trình raster của bạn không chứa đầy đủ các phần tử khác, bạn nên xem xét việc tạo một trình raster ở mức tối thiểu với độ phân giải ưa thích của bạn, sau đó lấy mẫu lại và cắt các phần khác để phù hợp với điều đó.


2
Vui lòng giải thích câu trả lời của bạn, ví dụ bằng cách cung cấp một số mã mẫu.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.