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?

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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.