bagaimana saya bisa menghitung jumlah, rata-rata dll poin raster (multi-band) per poligon dari layer vektor. Saya diberitahu bahwa ini disebut "statistik zona". Saya mencobanya dengan QGIS terlebih dahulu.
Ada cara untuk melakukannya tetapi itu terlalu lambat (mengkonversi raster ke vektor, berpotongan dengan layer vektor kedua, menghitung geometri, angka ekspor, menghitung statistik dengan spreadsheet atau program lain, mengimpor kembali hasilnya, memakan waktu lama untuk saya 350.000 poin raster).
Saya juga diberi petunjuk untuk menggunakan saga-gis. Itu memiliki "statistik zonal" tetapi itu didasarkan pada kategori dari raster-band, bukan pada poligon dari layer vektor. Jadi untuk menggunakan ini saya harus mengubah layer vektor saya ke raster dan kemudian menghitung statistik.
Ini sepertinya cara yang salah untuk menyelesaikan ini. Tidak akan ada cara untuk menghitung titik raster yang dimiliki 2 atau lebih poligon karena mereka berpotongan dengan batas poligon. Saya berasumsi bahwa statistik berbasis poligon harus dapat menangani ini, jadi saya juga berasumsi bahwa saya belum menemukan modul yang benar.
Saga-gis memiliki banyak sekali modul. Tolong beri tahu saya yang mana yang tepat untuk aplikasi ini.
sumber
Jawaban:
Saya berjuang untuk melakukan hal yang persis sama, tetapi karena berbagai alasan saya berkomitmen untuk menggunakan QGIS. Saya mencoba menggunakan v.rast.stats menggunakan plugin GRASS dan juga melalui plugin Sextante. Pendekatan terakhir gagal, karena tampaknya melampirkan statistik ke lapisan vektor sementara yang kemudian dihapus. Plugin GRASS berfungsi, tetapi tidak berurusan dengan tumpang tindih poligon.
Setelah melakukan beberapa penggalian (dalam sumber plugin ZonalStats yang kedengarannya menjanjikan), saya menemukan bahwa QGIS sebenarnya memiliki metode statistik zona yang dibangun ke dalam API, dan ini juga memiliki binding Python. Jadi selama Anda hanya mencari
count
,sum
danmean
statistik untuk fitur poligon Anda, Konsol Python (Plugin> Konsol Python) saat ini merupakan cara termudah untuk melampirkan statistik ke tabel atribut poligon.Pilih layer raster Anda di TOC, dan ketik berikut ini ke konsol (itu mengambil nama file sumber dari layer raster Anda)
>>> rasterfile = qgis.utils.iface.mapCanvas().currentLayer().source()
Pilih layer vektor Anda, dan jalankan perintah berikut di konsol (itu mengambil layer vektor itu sendiri)
>>> vectorlayer = qgis.utils.iface.mapCanvas().currentLayer()
Jalankan tiga perintah berikut di konsol (mereka meneruskan layer vektor dan file raster ke kalkulator statistik zona bawaan QGIS ')
>>> import qgis.analysis
>>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)
>>> zonalstats.calculateStatistics(None)
Hasilnya akan ditambahkan sebagai bidang tambahan di lapisan poligon.
Perhatikan bahwa jika Anda ingin menambahkan awalan ke bidang baru (bukan hanya memiliki mereka sebagai jumlah, rata-rata dan jumlah), maka Anda akan mengganti perintah pertama di langkah 3 dengan yang berikut (dengan asumsi Anda ingin menggunakan 'zonal_' sebagai awalan:
sumber
Akhirnya menemukannya: Di Saga-GIS buka kategori-poligon dan data-grid, lalu bentuk-> grid-> nilai grid-> statistik grid untuk poligon
sumber
Anda dapat melakukan ini dengan mudah dengan PostGIS. Lihat tutorial ini: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01
sumber
Masalah ini tampaknya telah diselesaikan beberapa waktu yang lalu, tetapi saya akan tetap menambahkan sendok saya ke sup karena saya baru-baru ini memerlukan beberapa statistik raster sendiri.
Metodologi QGIS yang dijelaskan oleh rudivonstaden bekerja seperti pesona, terima kasih atas tipnya. Namun, dalam kasus saya, saya juga ingin mengetahui nilai min & max dan std untuk nilai raster dalam poligon saya, dan fungsionalitas yang tidak dapat saya temukan di QGIS. Saya menemukan solusi melalui fungsi isectpolyrst di GME , yang merupakan favorit saya untuk menyelesaikan masalah SIG. Fungsi ini memberi saya statistik yang saya butuhkan dan juga agak cepat.
PS. GME memiliki sedikit ketergantungan yang tidak menguntungkan (ArcGIS). Jadi meskipun program itu sendiri tersedia secara bebas untuk semua orang, Anda perlu ArcGIS untuk menjalankannya. Tetapi jika Anda memiliki ArcGIS (tingkat lisensi apa pun), saya sarankan Anda mencobanya.
EDIT:
Saya mendapatkan statistik yang saya inginkan, tetapi kemudian saya menemukan bahwa saya melompat ke kesimpulan sedikit dengan tergesa-gesa setelah melihat angka yang sebenarnya. Anda mendapatkan statistik, ya, tetapi hanya untuk band pertama dalam raster. Jadi jika Anda beroperasi dengan gambar raster 3-band, statistiknya tidak lengkap. Saya seharusnya menunjukkan jumlah saluran di pos asli saya. Terbaik untuk menggunakan SAGA-GIS seperti stn yang diusulkan di atas jika Anda bekerja dengan gambar multi-band raster.
sumber
menghitung secara default, cukup Hitung, Jumlah, dan Rata-rata (seperti yang Anda tahu dari
Raster -> Zonal Statistics
dalam QGIS Desktop, ia dapat melakukan lebih banyak lagi).Misalnya, jika Anda ingin menghitung Mean yang harus Anda gunakan:
lihat API untuk semua opsi.
sumber