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?
11
Di R
, gunakan crop
untuk mengekstrak nilai dan ( misalnya ) table
untuk 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 extent
objek 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)
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.
crop
operasi 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.v <- extract(x.raster, y.extent)
diikuti olehtable(v)
extract
? Ini bukan bagian dariraster
danR
sistem bantuan (??
) juga tidak menemukan fungsi dengan nama ini.