Hitung nilai raster dalam kotak pembatas (luas spasial)

11

Diberi kotak pembatas, bagaimana saya bisa menghitung jumlah nilai tertentu (katakanlah, saya tertarik dengan jumlah value == 1) dalam raster dalam 1) arcpy, atau 2) paket raster di R?

Terlihat
sumber

Jawaban:

10

Di R, gunakan cropuntuk mengekstrak nilai dan ( misalnya ) tableuntuk menghitungnya.


Sebagai contoh, mari kita buat kisi 1 derajat yang menutupi bola bumi:

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

Kotak pembatas dikonversi ke extentobjek untuk menggunakan crop:

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

Setelah melakukan itu, tabulasi menjadi mudah:

table(getValues(y.raster))

Dalam output ini baris pertama mencantumkan nilai dan yang kedua daftar jumlah yang sesuai:

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

Sebagai tanda centang, kita dapat merencanakan raster dan jangkauannya:

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

Peta

whuber
sumber
3

Tambahan kecil: Anda juga bisa menggunakan fungsi (memori-aman) "freq":

Mengikuti jawaban dengan 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)

Tapi sekarang lakukan:

freq(y.raster)

Itu hanya penting untuk objek yang sangat besar (raster pada file). 'freq' mengembalikan matriks dua kolom (nilai / hitungan) sedangkan 'tabel' mengembalikan tabel.

Robert Hijmans
sumber
adakah di sana hanya melakukan kueri spasial daripada memotong gambar? Pemangkasan mungkin sangat lambat untuk diproses.
Terlihat
1
Tanam seharusnya sangat cepat. Sebagai pengujian, saya menghitung waktu cropoperasi untuk grid satu menit yang menutupi bumi: ia memiliki 10800 baris dan 21600 kolom (233.280.000 sel). Pemotongan dilakukan dalam 1,36 detik total waktu yang berlalu.
Whuber
Saya juga berpikir itu harus cepat, tetapi Anda dapat membandingkan hal di atas dengan permintaan spasial ini: v <- extract(x.raster, y.extent) diikuti oleh table(v)
Robert Hijmans
1
Robert, dari mana perpustakaan itu extract? Ini bukan bagian dari rasterdan Rsistem bantuan ( ??) juga tidak menemukan fungsi dengan nama ini.
whuber
Ini adalah fungsi dalam paket raster. ? Ekstrak menunjukkan bahwa (setidaknya bagi saya itu)
Robert Hijmans