Bagaimana cara meringkas nilai piksel dalam QGIS?


10

Saya perlu tahu nilai jumlah semua piksel dalam raster. Namun, di bagian Statistik tab Metadata di Properti, di bawah Jumlah Semua Sel, selalu menunjukkan 0,00. Saya telah mencoba dengan berbagai format raster tetapi tidak berhasil. Apa yang saya lakukan salah? Bagaimana saya bisa mendapatkan nilai ini?


Saya harap saya membuat Anda benar; Saya mencoba merekonstruksi masalah Anda dengan Raster milik saya. Jumlah semua piksel dalam raster adalah x-piksel * y-piksel, bukan? Nilai ini dapat Anda dapatkan dalam 2 cara: 1) Klik kanan pada File yang sebenarnya (tiff dalam kasus saya), jendela detail harus memberikan informasi ini 2) Di dalam Gis klik Raster-> Miscellaneous-> Informasi. Pilih file Anda -> edit -> ok. Maka Anda harus dua nilai, yang harus dikalikan. Hasilnya adalah jumlah semua piksel dalam raster.
Shepherdjo

Salah. Itu akan memberi Anda jumlah sel. Bukan jumlah nilai sel
Robert Hijmans

Jawaban:


9
  1. Buat poligon menggunakan Vektor> Alat Penelitian> Poligon dari tingkat lapisan. di sini layer adalah raster yang dimaksud.
  2. Aktifkan / Instal Plugin Statistik Zonal.
  3. Gunakan pengaya statistik Zonal di mana raster adalah jumlah yang diperlukan dan poligon adalah yang Anda buat dari tingkat lapisan. Masukkan awalan kolom keluaran (misalkan stats_). Jalankan plugin.
  4. Buka tabel atribut poligon. Sekarang Anda memiliki kolom stats_sum bersama dengan kolom lainnya dengan awalan stats_.
  5. Saya memeriksa nilai-nilai dalam GRASS GIS dan kecocokannya sempurna.

4

Di QGIS 2.x, Anda bisa mendapatkan statistik raster untuk seluruh lapisan (termasuk jumlah semua nilai piksel dalam pita) dengan menggunakan algoritme statistik lapisan Raster di kotak alat Pemrosesan.

Memproses | Kotak Alat (kotak centang)

kemudian pergi ke kotak alat Pemrosesan:

Geoalgoritma QGIS | Alat raster | Statistik lapisan raster

Hasilkan statistik untuk lapisan yang ingin Anda periksa. Hasilnya kemudian disimpan dalam layer metadata, yang dapat diakses dengan mengklik kanan pada layer dan memilih Properties.


2

Anda bisa menggunakan pyqgis dan membuat array yang numpy dan menjumlahkan:

import gdal
import numpy as np
ds = gdal.Open(r'C:\somefolder\someraster.tif')
band1 = ds.GetRasterBand(1).ReadAsArray()
s = np.sum(band1)
print(s)

1

Saya mengerti pertanyaan sebagai, Bagaimana saya mendapatkan jumlah semua nilai piksel dari raster? Sesuatu seperti menjalankan Statistik pada atribut vektor. Seseorang dapat melakukan ini dengan mudah melalui pemrograman. Saya dapat memikirkan cara lain untuk melakukan ini melalui QGIS. Ini akan menjadi tidak efisien dan sedikit tidak akurat, tetapi akan berhasil.

  • Buat layer titik yang mewakili setiap piksel raster. Anda dapat melakukan ini melalui Vektor -> Alat Penelitian -> Poin Reguler. Gunakan jumlah poin sebagai x_size * y_size. Jadi untuk raster dengan lebar 100 px x tinggi 100px, gunakan 10000. Tetapkan offset (resolusi piksel) / 2, jadi Anda mengambil sampel bagian tengah piksel.
  • Selanjutnya, instal plugin Point Sampling. Dengan menggunakan plugin ini, Anda dapat mencicipi raster di semua 10000 poin dan mendapatkan nilai atribut yang merupakan nilai pixel.
  • Jalankan Vektor -> Analisis -> Statistik Dasar pada vektor yang dihasilkan untuk mendapatkan penjumlahan.

0

Anda dapat menggunakan gdalinfo untuk mendapatkan statistik raster, misalnya:

gdalinfo -stats filename.tif

Ini akan memberi Anda nilai piksel rata-rata dan ukuran raster dalam piksel. Anda juga bisa mendapatkan data ini dari Properties -> tab Metadata.

Maka itu adalah pertanyaan aritmatika: nilai rata-rata x (tinggi dalam piksel x lebar dalam piksel).

Nick.


4
Itu salah. Pertama, statistik ini tidak selalu ada (tergantung pada aplikasi yang menulis file) dan jika ada, Anda tidak dapat memastikan bahwa itu benar. Kedua, perkalian mengabaikan kemungkinan bahwa tidak ada nilai Data (dalam hal ini perhitungan ini akan salah).
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.