การแปลงกริด raster ใน R


10

ฉันกำลังพยายามจัดแนวแรสเตอร์สองกริดในอาร์เมื่อจัดตำแหน่งแล้วฉันต้องการที่จะเพิ่มพวกเขาเข้าด้วยกัน

ฉันได้ลองตรวจสอบว่าการทำแบบstackนี้จะได้ผลหรือไม่:

grid_snap <- stack(habi_sdw, Pop_sdw)

และฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาดใน comparRaster (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) vs (0.008333333 เทียบกับ 0.008333333)

คำตอบ:


15

คำถามนี้คล้ายกับ: คลิปแรสเตอร์โดยแรสเตอร์ที่มีการแยกข้อมูลและการเปลี่ยนแปลงความละเอียดแต่มาจากมุมที่แตกต่าง อย่างไรก็ตามฉันคิดว่าคำตอบนั้นเหมือนกัน ก่อนอื่นเลือกแรสเตอร์ที่คุณต้องการให้ชัดเจน ฉันจะทำซ้ำคำตอบก่อนหน้าของฉันที่นี่เพื่อความสะดวก:

โหลดไลบรารีที่ต้องการ:

library(raster)
library(rgdal)

อ่าน rasters:

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

Resample ไปที่กริดเดียวกัน:

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

หากจำเป็น (สำหรับการปิดบัง) ให้ตั้งค่าขอบเขตให้ตรง:

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

ลบข้อมูลที่อยู่นอกหนึ่งใน rasters (ถ้าคุณต้องการ):

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

rasters ของคุณตรงกับตอนนี้


0

ใช่. คุณจำเป็นต้องสุ่มตัวอย่าง rasters ใหม่เพื่อให้พวกเขามีขนาดเท่ากันและมีขอบเขตเท่ากัน R ไม่ได้จัดการกับมันด้วยตัวเอง เนื่องจาก raster ของคุณไม่มีส่วนประกอบอื่นทั้งหมดคุณควรพิจารณาสร้างแรสเตอร์ระดับต่ำสุดที่มีความละเอียดที่คุณต้องการจากนั้นทำการสุ่มตัวอย่างและครอบตัดส่วนอื่น ๆ เพื่อให้ตรงกับสิ่งนั้น


2
โปรดอธิบายคำตอบของคุณอย่างละเอียดตัวอย่างเช่นให้รหัสตัวอย่าง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.