Pengelompokan raster menggunakan QGIS


10

Saya mencari cara untuk mengubah raster rahasia menjadi poligon berdasarkan cluster spasial di setiap kelas. Agar cluster dianggap valid, saya perlu mereka terdiri dari persentase minimum sel dari salah satu kelas.

Sebagai contoh: Suatu area yang terdiri dari 70% (atau lebih) sel kelas "1" akan dianggap sebagai kelompok kelas "1" meskipun daerah tersebut dicampur dengan 30% sel yang menghubungkan ke kelas lain. Analisis pengelompokan harus didasarkan pada jarak antara sel-sel dari kelas yang sama.

Pilihan lain bisa menjadi dasar pengelompokan pada jumlah sel minimum dalam kelas tertentu, bersama dengan definisi area pencarian maksimum.

Sebagai contoh: Dalam area tertentu harus ada 100 sel "kelas 1" untuk itu dianggap sebagai cluster.  

Sebagian besar alat yang terkait dengan pengelompokan tampaknya hanya berfungsi untuk vektor. Saya telah melihat SAGA-tool Cluster-analysis tetapi itu tidak sesuai dengan tujuan saya. Adakah ide untuk menyelesaikan ini atau alat lain mana yang mungkin membantu?


Anda bisa mengonversi raster ke vektor dan menggunakan alat pengelompokan vektor.
csk

Itu pilihan, tapi saya pikir itu jauh lebih mudah untuk melakukan analisis dalam format raster jika memungkinkan. Konversi ke vektor mungkin akan menghasilkan poligon di mana banyak detail hilang dalam penyatuan rastercell, atau terlalu banyak titik yang ditangani (kumpulan data besar).
Spiran

3
Saya tahu ini bukan solusi QGIS tetapi bisakah Anda menggunakan python atau R untuk menghasilkan fungsi lingkungan sehingga Anda membuat raster baru di mana ia melihat setiap sel dan jika> 70% sel di lingkungan itu milik kelas lalu sel itu akan direklasifikasi ke kelas itu?
Liam G

Itu pasti bisa, terima kasih! Saya baru mengenal Python tetapi patut dicoba.
Spiran

Jawaban:


5

Jika Anda lebih suka mengatasi masalah ini dalam "logika raster", maka ada beberapa filter yang dapat Anda pertimbangkan. Pilihan terbaik akan tergantung pada distribusi spasial piksel Anda dari setiap kelas di dalam nilai "latar belakang" Anda, tetapi berikut adalah dua solusi potensial:

jika tambalan yang ingin Anda hapus relatif besar, maka Anda harus menggunakan "saringan" (raster> analysis> sieve di QGIS 3.2, yang didasarkan pada gdal_sieve.py).

Skrip gdal_sieve.py menghapus poligon raster yang lebih kecil dari ukuran ambang yang disediakan (dalam piksel) dan menggantikannya dengan nilai piksel poligon tetangga terbesar. Hasilnya dapat ditulis kembali ke band raster yang ada, atau disalin ke file baru.

Jika Anda memiliki sesuatu seperti efek "garam dan merica" ​​(banyak piksel terisolasi dari kelas yang berbeda, tetapi hanya beberapa piksel per jalur kecil, maka Anda harus menggunakan filter mayoritas (misalnya pergi ke alat tambahan dari GRASS> raster> r. tetangga> pilih opsi "mode"). Perhatikan bahwa filter ini akan (sedikit) mempengaruhi batas Anda.

r.neighbors - Membuat setiap nilai kategori sel fungsi dari nilai kategori yang ditetapkan untuk sel di sekitarnya, dan menyimpan nilai sel baru dalam lapisan peta raster keluaran

Anda akan menemukan filers yang sama (filter Mayoritas, kelas penyaringan) dan yang lainnya (morfologi) di alat SAGA (SAGA> filter raster) jika Anda lebih suka


Ini sebenarnya cukup banyak bagaimana saya menyelesaikannya. Pada dasarnya dengan menggunakan alat analisis lingkungan tetangga bersama dengan beberapa perhitungan di samping. Lupa untuk mengirim solusi, terima kasih banyak atas masukan Anda.
Spiran
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.