นับค่าแรสเตอร์ในกล่องขอบเขต (ขอบเขตเชิงพื้นที่)


11

รับกล่องขอบเขตฉันจะนับจำนวนค่าเฉพาะได้อย่างไร (พูดว่าฉันสนใจจำนวนvalue == 1) ในแรสเตอร์ใน 1) arcpy หรือ 2) แพ็คเกจแรสเตอร์ใน R

คำตอบ:


10

ในRใช้cropเพื่อแยกค่าและ ( เช่น ) tableเพื่อนับค่า


ตัวอย่างเช่นลองสร้างกริด 1 องศาครอบคลุมโลก:

library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)

กล่อง bounding ถูกแปลงเป็นextentวัตถุเพื่อใช้crop:

y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

การทำเช่นนั้นทำให้การจัดระเบียบเป็นเรื่องง่าย:

table(getValues(y.raster))

ในเอาต์พุตนี้แถวแรกแสดงรายการค่าและรายการที่สองแสดงจำนวนที่สอดคล้องกัน:

165 166 167 ... 257 258
  1   2   3 ...   2   1

เพื่อเป็นการตรวจสอบเราสามารถวางแผนแรสเตอร์และขอบเขต:

plot(x.raster)
plot(y.extent, add=T)

แผนที่


3

การเพิ่มเล็กน้อย: คุณสามารถใช้ฟังก์ชัน (หน่วยความจำที่ปลอดภัย) "freq":

ทำตามคำตอบโดย whuber:

library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

แต่ตอนนี้ทำ:

freq(y.raster)

มันสำคัญสำหรับวัตถุที่มีขนาดใหญ่มากเท่านั้น (แรสเตอร์ในไฟล์) 'freq' ส่งคืนเมทริกซ์สองคอลัมน์ (ค่า / จำนวน) ในขณะที่ 'table' ส่งคืนตาราง


อย่างไรก็ตามมีเพียงแค่ใช้แบบสอบถามเชิงพื้นที่มากกว่าการครอบตัดภาพหรือไม่ การครอบตัดอาจช้ามากสำหรับการประมวลผล
เห็น

1
การปลูกพืชควรรวดเร็วมาก จากการทดสอบฉันตั้งเวลาcropปฏิบัติการหนึ่งนาทีบนกริดโลกซึ่งมี 10800 แถวและ 21600 คอลัมน์ (233,280,000 เซลล์) การครอบตัดถูกดำเนินการในเวลาที่ผ่านไปทั้งหมด 1.36 วินาที
whuber

ผมยังคิดว่ามันควรจะเป็นไปอย่างรวดเร็ว แต่คุณสามารถเปรียบเทียบข้างต้นด้วยแบบสอบถามเชิงพื้นที่นี้v <- extract(x.raster, y.extent) ตามด้วย table(v)
โรเบิร์ต Hijmans

1
โรเบิร์ตห้องสมุดอะไรextractมาจากไหน มันไม่ได้เป็นส่วนหนึ่งrasterและRระบบช่วยเหลือ ( ??) ไม่พบฟังก์ชันใด ๆ ที่ใช้ชื่อนี้เช่นกัน
whuber

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