Menjumlahkan nilai piksel dalam zona poligon di QGIS?

8

Saya memiliki dua lapisan: lapisan raster dan lapisan vektor (poligon). Saya dapat melihat nilai-nilai piksel raster tetapi saya tidak tahu bagaimana menggabungkannya dengan informasi dari lapisan poligon. Lebih khusus lagi, saya ingin:

  1. menjumlahkan nilai semua piksel dalam batas poligon
  2. hitung jumlah piksel dengan nilai spesifik di dalam batas poligon

Adakah yang bisa membantu dan memberi saran tentang cara melakukan ini di QGIS?

Alex
sumber
Saya tidak yakin dengan keseluruhan proses dalam QGIS, tetapi saya akan berpikir langkah pertama akan mengubah raster Anda menjadi layer vektor. Anda dapat menggunakan alat Polygonize QGIS dan menggunakan lapisan poligon Anda sebagai topeng.
Baltok

Jawaban:

6

Dulu Anda harus menggunakan v.rast.stats di Plugin GRASS, tetapi sekarang Anda dapat menggunakan Statistik Zonal bawaan di menu Raster.

Anda memiliki layer poligon yang dimuat dan raster. Anda menjalankan item menu.

itu akan menjawab bagian a) dari pertanyaan Anda.

v.rast.stats dan alat lainnya akan memberikan Anda hasil yang lebih terperinci, tetapi mungkin alur kerja sederhana untuk b) adalah mengekstraksi setiap poligon (gunakan menu Raster | Extraction | Clipper) dan kemudian jalankan histogram pada masing-masingnya. Tergantung pada struktur data Anda, seberapa sering Anda harus melakukannya, dll.

Willy
sumber
ingat bahwa fungsi rumput dapat diakses dengan plugin sextante juga. Dengan versi baru dari qgis, sextane telah terintegrasi di dalamnya (tidak lebih sebagai plugin, tetapi sebagai komponen inti) sehingga merupakan waktu yang tepat untuk mempelajarinya juga.
Nickes
kalau-kalau ada orang lain yang macet, Zonal Statistics adalah sebuah plugin yang harus Anda instal / aktifkan melalui menu plugins - jika tidak, ia tidak akan ada dalam menu raster ...
Owen
2

Untuk tujuan pertama Anda, seperti kata Willy, Anda dapat menggunakan modul v.rast.stat. Modul ini akan membuat kolom baru yang terisi dalam basis data vektor Anda dengan nilai statistik yang Anda cari (nilai min, maks, rata-rata, standar deviasi, jumlah , dan lain-lain).

Adapun pertanyaan kedua Anda, Anda perlu "menyembunyikan" nilai-nilai yang di bawah (atau di atas) ambang Anda. Salah satu cara untuk melakukan ini adalah dengan menggunakan kalkulator raster qgis dan memasukkan ekspresi berikut untuk menghitung:

(raster@1 >= 10) * raster@1

masukkan deskripsi gambar di sini

Tanda kurung akan membuat topeng, artinya semua nilai di atas 10 akan mengambil nilai 1 dan semua nilai di bawah nilai 0. Dan selanjutnya Anda mengalikan kedua nilai dengan nilai asli. Dan jelas 0 oleh sesuatu sama dengan 0.

Setel nilai nodata menjadi sama dengan 0 untuk mask-raster yang dihasilkan dan kemudian jalankan kembali v.rast.stats.

Nickes
sumber