Wie fasse ich Pixelwerte in QGIS zusammen?


10

Ich muss den Wert der Summe aller Pixel in einem Raster kennen. Im Abschnitt Statistik der Registerkarte Metadaten unter Eigenschaften wird unter Summe aller Zellen immer 0,00 angezeigt. Ich habe es mit verschiedenen Rasterformaten ohne Erfolg versucht. Was mache ich falsch? Wie kann ich diesen Wert erhalten?


Ich bin an Ihrer Anwendung dieser Methode interessiert, wenn Sie nichts dagegen haben, sie zu teilen.
MLowry

Überprüfen Sie unbedingt Ihre Berechnungen. Ich habe eine schnelle Überprüfung mit einem Raster durchgeführt, das fehlende Werte enthält. Der Durchschnitt wird zwar über alle Rasterzellen berechnet. Das Multiplizieren dieses Durchschnitts mit der Breite und Höhe Ihres Rasters führt jedoch nicht zu einer korrekten Summe sollte die Anzahl der Rasterzellen korrigieren, die aus fehlenden Werten bestehen!

Antworten:


9
  1. Erstellen Sie ein Polygon mit Vektor> Recherchetools> Polygon aus der Ebenenausdehnung. Hier ist die Ebene das betreffende Raster.
  2. Aktivieren / Installieren des Zonal Statistics Plugins.
  3. Verwenden Sie das Plugin für zonale Statistiken, bei dem das Raster dasjenige ist, dessen Summe erforderlich ist, und das Polygon dasjenige ist, das Sie aus der Ebenenausdehnung erstellt haben. Geben Sie das Präfix der Ausgabespalte ein (z. B. stats_). Führen Sie das Plugin aus.
  4. Öffnen Sie die Attributtabelle des Polygons. Jetzt haben Sie die Spalte stats_sum zusammen mit anderen Spalten mit dem Präfix stats_.
  5. Ich habe die Werte in GRASS GIS überprüft und die Übereinstimmung ist perfekt.

Dies funktioniert in QGIS 2.18 nicht. Ich bin mir nicht sicher, wie dies jemals hätte funktionieren können, da "Polygon aus Ebenenausdehnung" eine Vektorebene und kein Raster als Eingabe verwendet. Rasterebenen werden nicht in der Dropdown-Liste angezeigt. Wenn Sie die Rasterebene extern laden, ist die resultierende Extent-Ebene leer.
Stephen Bosch

Funktioniert für mich in 2.18.
Mitchus

4

In QGIS 2.x können Sie Rasterstatistiken für die gesamte Ebene (einschließlich der Summe aller Pixelwerte im Band) mithilfe des Rasterebenenstatistikalgorithmus in der Toolbox "Verarbeitung" abrufen.

Verarbeitung | Toolbox (Kontrollkästchen)

Gehen Sie dann zur Verarbeitungs-Toolbox:

QGIS-Geoalgorithmen | Rasterwerkzeuge | Rasterebenenstatistik

Generieren Sie die Statistiken für die Ebene, die Sie untersuchen möchten. Die Ergebnisse werden dann in den Ebenenmetadaten gespeichert, auf die Sie zugreifen können, indem Sie mit der rechten Maustaste auf die Ebene klicken und Eigenschaften auswählen.


1

Ich habe die Frage wie folgt verstanden: Wie erhalte ich die Summe aller Pixelwerte eines Rasters? So etwas wie das Ausführen von Statistiken für die Attribute eines Vektors. Dies kann man einfach über die Programmierung tun. Ich kann mir einen anderen Weg vorstellen, dies über QGIS zu tun. Es wäre ineffizient und etwas ungenau, aber es wird funktionieren.

  • Erstellen Sie eine Punktebene, die jedes Pixel des Rasters darstellt. Sie können dies über Vektor -> Recherchetools -> Regelmäßige Punkte tun. Verwenden Sie die Anzahl der Punkte als x_size * y_size. Verwenden Sie für ein Raster mit einer Breite von 100 Pixel x einer Höhe von 100 Pixel 10000. Geben Sie einen Versatz von (Pixelauflösung) / 2 an, damit Sie die Mitte des Pixels abtasten.
  • Installieren Sie als Nächstes das Point Sampling-Plugin. Mit diesem Plugin können Sie das Raster an allen 10000 Punkten abtasten und einen Attributwert erhalten, der dem Pixelwert entspricht.
  • Führen Sie Vektor -> Analyse -> Grundlegende Statistik für den resultierenden Vektor aus, um die Summe zu erhalten.

1

Sie können gdalinfo verwenden, um die Raster-Statistiken abzurufen, zum Beispiel:

gdalinfo -stats filename.tif

Dadurch erhalten Sie den mittleren Pixelwert und die Rastergröße in Pixel. Sie können diese Daten auch über die Registerkarte Eigenschaften -> Metadaten abrufen.

Dann ist es eine Frage der Arithmetik: Mittelwert x (Höhe in Pixel x Breite in Pixel).

Nick.


4
Das ist falsch. Erstens sind diese Statistiken nicht immer vorhanden (abhängig von der Anwendung, die die Datei geschrieben hat), und wenn sie vorhanden sind, können Sie nicht sicher sein, ob sie tatsächlich korrekt sind. Zweitens ignoriert die Multiplikation die Möglichkeit, dass keine Datenwerte vorhanden sind (in diesem Fall wäre diese Berechnung falsch).
Robert Hijmans

0

Sie können Python verwenden:

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

Ich hoffe, ich habe dich richtig verstanden. Ich habe versucht, Ihr Problem mit einem meiner Raster zu rekonstruieren. Die Summe aller Pixel in einem Raster sind die x-Pixel * y-Pixel, oder? Diesen Wert können Sie auf zwei Arten erhalten: 1) Klicken Sie mit der rechten Maustaste auf die eigentliche Datei (in meinem Fall ein Hinweis). Das Detailfenster sollte diese Informationen enthalten. 2) Klicken Sie im Gis auf Raster-> Verschiedenes-> Informationen. Wählen Sie Ihre Datei-> Bearbeiten-> OK. Dann sollten Sie die beiden Werte multiplizieren, die multipliziert werden müssen. Das Ergebnis ist die Summe aller Pixel in einem Raster.


2
Falsch. Das würde Ihnen die Anzahl der Zellen geben. Nicht die Summe der Zellwerte
Robert Hijmans
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.