Wie kann ich Summen, Durchschnitte usw. von Rasterpunkten (Multiband) pro Polygon einer Vektorebene berechnen? Mir wurde gesagt, dass dies "Zonenstatistik" genannt wird. Ich habe das zuerst mit QGIS versucht.
Es gibt einen Weg, dies zu tun, aber der ist viel zu langsam (Raster in Vektor umwandeln, Schnittmenge mit zweiter Vektorebene, Geometrie berechnen, Zahlen exportieren, Statistiken mit Tabellenkalkulation oder einem anderen Programm berechnen, Ergebnisse erneut importieren, für mich ewig dauern 350.000 Rasterpunkte).
Mir wurde auch der Hinweis gegeben, Saga-Gis zu benutzen. Das hat "zonale Statistiken", aber diese basieren auf Kategorien aus einem Raster-Band, nicht auf Polygonen aus einem Vektor-Layer. Um dies zu nutzen, müsste ich meine Vektorebene in ein Raster konvertieren und dann die Statistik berechnen.
Dies scheint der falsche Weg zu sein, um dies zu lösen. Es gibt keine Möglichkeit, Rasterpunkte zu berücksichtigen, die zu zwei oder mehr Polygonen gehören, da sie von der Polygongrenze geschnitten werden. Ich gehe davon aus, dass polygonbasierte Statistiken damit umgehen können sollten, und gehe daher auch davon aus, dass ich noch nicht das richtige Modul gefunden habe.
Saga-gis hat wirklich viele Module. Bitte lassen Sie mich wissen, welches für diese Anwendung das richtige ist.
quelle
Antworten:
Ich hatte Mühe, genau dasselbe zu tun, aber aus verschiedenen Gründen bin ich der Verwendung von QGIS verpflichtet. Ich habe versucht, v.rast.stats mit dem GRASS-Plugin und auch mit dem Sextante-Plugin zu verwenden. Letzterer Ansatz ist fehlgeschlagen, da er die Statistiken an eine temporäre Vektorebene anzuhängen scheint, die dann gelöscht wird. Das GRASS-Plugin hat funktioniert, behandelt aber keine überlappenden Polygone.
Nach einigem Herumstöbern (in der Quelle des vielversprechend klingenden ZonalStats-Plugins) stellte ich fest, dass QGIS tatsächlich in die API integrierte Methoden für zonale Statistiken enthält, die auch Python-Bindungen enthalten. Solange Sie nur suchen
count
,sum
undmean
Statistiken für Ihre Polygon - Features, die Python - Konsole (Plugins> Python - Konsole) ist derzeit der einfachste Weg , die Statistiken auf die Polygon - Attributtabelle zu befestigen.Wählen Sie Ihren Raster-Layer im Inhaltsverzeichnis aus und geben Sie Folgendes in die Konsole ein (der Name der Quelldatei Ihres Raster-Layers wird abgerufen).
>>> rasterfile = qgis.utils.iface.mapCanvas().currentLayer().source()
Wählen Sie Ihre Vektorebene aus und führen Sie den folgenden Befehl in der Konsole aus (die Vektorebene selbst wird erfasst).
>>> vectorlayer = qgis.utils.iface.mapCanvas().currentLayer()
Führen Sie die folgenden drei Befehle in der Konsole aus (sie übergeben die Vektorebene und die Rasterdatei an den in QGIS integrierten Zonenstatistikrechner).
>>> import qgis.analysis
>>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)
>>> zonalstats.calculateStatistics(None)
Die Ergebnisse werden als zusätzliche Felder in der Polygonebene angehängt.
Beachten Sie, dass Sie, wenn Sie den neuen Feldern ein Präfix hinzufügen möchten (anstatt sie nur als Summe, Mittelwert und Anzahl zu haben), den ersten Befehl in Schritt 3 durch den folgenden ersetzen würden (vorausgesetzt, Sie möchten 'zonal_' als verwenden) das Präfix:
quelle
Endlich gefunden: Öffnen Sie in Saga-GIS Kategorie-Polygone und Datengitter und dann Formen-> Gitter-> Gitterwert-> Gitterstatistik für Polygone
quelle
Mit PostGIS geht das ganz einfach. Siehe dieses Tutorial: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01
quelle
Dieses Problem scheint schon vor einiger Zeit gelöst worden zu sein, aber ich werde trotzdem meinen Löffel in die Suppe geben, da ich vor kurzem selbst einige Rasterstatistiken brauchte.
Die von rudivonstaden beschriebene QGIS-Methodik hat wie ein Zauber funktioniert, danke für den Tipp. In meinem Fall wollte ich jedoch auch die minimalen und maximalen Werte und die Standardwerte für die Rasterwerte in meinen Polygonen kennen, und diese Funktionalität konnte ich in QGIS nicht finden. Ich fand eine Lösung durch die Funktion isectpolyrst in GME , die für die Lösung von GIS-Problemen bei mir am beliebtesten ist. Diese Funktion gab mir genau die Statistiken, die ich brauchte, und zwar ziemlich schnell.
PS. GME hat eine bedauerliche Abhängigkeit (ArcGIS). Obwohl das Programm selbst für alle frei verfügbar ist, benötigen Sie ArcGIS, um es auszuführen. Wenn Sie jedoch über ArcGIS (eine beliebige Lizenzstufe) verfügen, sollten Sie es ausprobieren.
BEARBEITEN:
Ich habe die Statistiken bekommen, die ich wollte, aber später habe ich herausgefunden, dass ich nach dem Betrachten der tatsächlichen Zahlen ein wenig hastig zu Schlussfolgerungen gekommen bin. Sie erhalten Statistiken, ja, aber nur für die erste Band in einem Raster. Wenn Sie also mit einem 3-Band-Rasterbild arbeiten, sind die Statistiken unvollständig. Ich hätte in meinem ursprünglichen Beitrag auf die Anzahl der Kanäle hinweisen sollen. Verwenden Sie SAGA-GIS am besten wie oben beschrieben, wenn Sie mit Multiband-Rasterbildern arbeiten.
quelle
berechnet standardmäßig nur Count, Sum und Mean (wie Sie
Raster -> Zonal Statistics
in QGIS Desktop sehen können, kann es viel mehr).Wenn Sie zum Beispiel nur den Mittelwert berechnen möchten, müssen Sie Folgendes verwenden:
Siehe API für alle Optionen.
quelle