Jak podsumować wartości pikseli w QGIS?


10

Muszę znać wartość sumy wszystkich pikseli w rastrze. Jednak w sekcji Statystyka karty Metadane we właściwościach w polu Suma wszystkich komórek zawsze wskazuje 0,00. Próbowałem z różnymi formatami rastrownymi, ale bezskutecznie. Co ja robię źle? Jak mogę uzyskać tę wartość?


Mam nadzieję, że dobrze zrozumiałem; Próbowałem zrekonstruować twój problem z moim rastrem. Suma wszystkich pikseli w rastrze to x-piksele * y-piksele, prawda? Tę wartość można uzyskać na 2 sposoby: 1) Kliknij prawym przyciskiem myszy plik (w moim przypadku tiff), okno szczegółów powinno zawierać te informacje 2) W Gis kliknij Raster-> Różne-> Informacje. Wybierz plik-> edytuj-> ok. Następnie powinieneś dwie wartości, które należy pomnożyć. Wynikiem jest suma wszystkich pikseli w rastrze.
Shepherdjo,

Źle. To dałoby ci liczbę komórek. Nie suma wartości komórek
Robert Hijmans

Odpowiedzi:


9
  1. Utwórz wielokąt za pomocą opcji Wektor> Narzędzia badawcze> Wielokąt z zasięgu warstwy. tutaj warstwa jest danym rastrem.
  2. Aktywuj / zainstaluj wtyczkę statystyki strefowej.
  3. Użyj wtyczki Statystyka strefowa, w której raster jest tym, którego suma jest wymagana, a wielokąt jest tym, który utworzyłeś z zakresu warstw. Wpisz wyjściowy prefiks kolumny (powiedzmy stats_). Uruchom wtyczkę.
  4. Otwórz tabelę atrybutów wielokąta. Teraz masz kolumnę stats_sum wraz z innymi kolumnami z przedrostkiem stats_.
  5. Sprawdziłem wartości w GRASS GIS i dopasowanie jest idealne.

4

W QGIS 2.x można uzyskać statystyki rastrowe dla całej warstwy (w tym sumę wszystkich wartości pikseli w paśmie) za pomocą algorytmu statystyki warstw rastrowych w przyborniku Przetwarzanie.

Przetwarzanie | Przybornik (pole wyboru)

następnie przejdź do przybornika Przetwarzanie:

Geoalgorytmy QGIS | Narzędzia rastrowe | Statystyka warstw rastrowych

Wygeneruj statystyki dla warstwy, którą chcesz sprawdzić. Wyniki są następnie przechowywane w metadanych warstwy, które są dostępne po kliknięciu warstwy prawym przyciskiem myszy i wybraniu Właściwości.


2

Możesz użyć pyqgis i stworzyć tablicę numpy i sumę:

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

Zrozumiałem pytanie jako: Jak uzyskać sumę wszystkich wartości pikseli rastra? Coś jak uruchamianie statystyk na atrybutach wektora. Można to łatwo zrobić poprzez programowanie. Mogę wymyślić inny sposób, aby to zrobić za pośrednictwem QGIS. Byłoby to nieefektywne i nieco niedokładne, ale zadziała.

  • Utwórz warstwę punktową reprezentującą każdy piksel rastra. Możesz to zrobić za pomocą Vector -> Narzędzia badawcze -> Regularne punkty. Użyj liczby punktów jako x_size * y_size. Tak więc dla rastra o szerokości 100 px x 100px, użyj 10000. Określ przesunięcie (rozdzielczość w pikselach) / 2, aby próbkować środek piksela.
  • Następnie zainstaluj wtyczkę Point Sampling. Za pomocą tej wtyczki możesz próbkować raster we wszystkich 10000 punktach i uzyskać wartość atrybutu, która jest wartością w pikselach.
  • Uruchom wektor -> Analiza -> Podstawowe statystyki dotyczące uzyskanego wektora, aby uzyskać sumę.

0

Możesz użyć gdalinfo, aby uzyskać statystyki rastrowe, na przykład:

gdalinfo -stats filename.tif

To da ci średnią wartość w pikselach i rozmiar rastra w pikselach. Możesz również pobrać te dane z zakładki Właściwości -> Metadane.

To kwestia arytmetyki: średnia wartość x (wysokość w pikselach x szerokość w pikselach).

Nacięcie.


4
To jest złe. Po pierwsze, statystyki te nie zawsze są obecne (zależy od aplikacji, która zapisała plik), a jeśli są obecne, nie można być pewnym, że są one poprawne. Po drugie, mnożenie ignoruje możliwość braku wartości danych (w takim przypadku to obliczenie byłoby błędne).
Robert Hijmans
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.