QGIS'de piksel değerleri nasıl özetlenir?


10

Bir taramadaki tüm piksellerin toplamının değerini bilmem gerekiyor. Ancak, Özellikler'deki Meta Veriler sekmesinin İstatistikler bölümünde, Tüm Hücrelerin Toplamı altında her zaman 0,00 değerini gösterir. Ben boşuna farklı raster formatları ile denedim. Neyi yanlış yapıyorum? Bu değeri nasıl alabilirim?


Umarım seni doğru anlarım; Sorununuzu Raster'im ile yeniden yapılandırmaya çalıştım. Rasterdeki tüm piksellerin toplamı x-piksel * y-pikseldir, değil mi? Bu değer 2 şekilde elde edebilirsiniz: 1) Gerçek Dosyaya sağ tıklayın (benim durumumda bir tiff), detay penceresi bu bilgileri sağlamalıdır 2) Gis'in içinde Raster-> Çeşitli-> Bilgi'ye tıklayın. Dosyanızı seçin-> düzenle-> tamam. O zaman çarpmanız gereken iki değer olmalıdır. Sonuç, bir taramadaki tüm piksellerin toplamıdır.
Shepherdjo

Yanlış. Bu size hücre sayısını verecektir. Hücre değerlerinin toplamı değil
Robert Hijmans

Yanıtlar:


9
  1. Vektör> Araştırma Araçları> Katman boyutundan çokgen kullanarak bir çokgen oluşturun. burada katman söz konusu taramadır.
  2. Bölgesel istatistik Eklentisini etkinleştirin / yükleyin.
  3. Raster, toplamı gerekli olan ve çokgen katman boyutunda oluşturduğunuz Zonal istatistik eklentisini kullanın. Çıktı sütunu önekini girin (istatistik_ diyelim). Eklentiyi çalıştırın.
  4. Çokgenin öznitelik tablosunu açın. Artık stats_um sütununa ve stats_ önekine sahip diğer sütunlara sahipsiniz.
  5. GRASS GIS'deki değerleri kontrol ettim ve maç mükemmel.

4

QGIS 2.x'te, İşleme araç kutusundaki Raster katmanı istatistik algoritmasını kullanarak tüm katman için raster istatistikleri alabilirsiniz (banttaki tüm piksel değerlerinin toplamı dahil).

İşleme | Araç kutusu (onay kutusu)

ardından İşleme araç kutusuna gidin:

QGIS coğrafi algoritmaları | Raster aletleri | Tarama katmanı istatistikleri

İncelemek istediğiniz katman için istatistikleri oluşturun. Sonuçlar daha sonra katmana sağ tıklanarak ve Özellikler seçilerek erişilebilen katman meta verilerinde saklanır.


2

Pyqgis kullanabilir ve bir numpy dizisi ve toplamı oluşturabilirsiniz:

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

Soruyu, Bir rasterdeki tüm piksel değerlerinin toplamını nasıl alabilirim? Bir vektörün özniteliklerinde İstatistik çalıştırmak gibi bir şey. Programlama ile bunu kolayca yapabilirsiniz. Bunu QGIS aracılığıyla yapmanın başka bir yolunu düşünebilirim. Verimsiz ve biraz yanlış olurdu, ama işe yarayacak.

  • Raster her pikseli temsil eden bir nokta katmanı oluşturun. Bunu Vektör -> Araştırma Araçları -> Düzenli Noktalar aracılığıyla yapabilirsiniz. X_size * y_size olarak nokta sayısını kullanın. Bu nedenle, 100 piksel genişlik x 100 piksel yükseklikte bir tarama için 10000 kullanın. (Piksel çözünürlüğü) / 2 ofsetini belirtin;
  • Ardından, Point Sampling eklentisini yükleyin. Bu eklentiyi kullanarak, raster tüm 10000 noktada örneklenebilir ve piksel değeri olan bir özellik değeri alabilirsiniz.
  • Toplamı elde etmek için elde edilen vektörde Vektör -> Analiz -> Temel İstatistikleri çalıştırın.

0

Raster istatistiklerini almak için gdalinfo kullanabilirsiniz, örneğin:

gdalinfo -stats filename.tif

Bu size ortalama piksel değerini ve piksel cinsinden raster boyutunu verecektir. Bu verileri Özellikler -> Meta Veriler sekmesinden de alabilirsiniz.

O zaman bu bir aritmetik sorunudur: ortalama değer x (piksel cinsinden yükseklik x piksel cinsinden genişlik).

Nick.


4
Bu yanlış. Birincisi, bu istatistikler her zaman mevcut değildir (dosyayı yazan uygulamaya bağlıdır) ve varsa, bunların gerçekten doğru olduğundan emin olamazsınız. İkincisi, çarpma Veri Yok değerleri olasılığını göz ardı eder (bu durumda bu hesaplama yanlış olur).
Robert Hijmans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.