Mehr

Python Code Multiraster zonale Statistik


env.workspace = "C:UsersDocumentspythonMODISextract" # Lokale Variablen setzen inZoneData = "mask.shp" zoneField = "Classes" inValueRaster = "mi1511171_clip.tif" outTable = "zonalstattblout02.dbf" # ZonalStatisticsAsTable ausführen outZSaT = ZonalStatisticsAsTable(inZoneData, zoneField, inValueRaster, outTable, "NODATA", "MEAN")

Ich habe mehrere Modis-Bilder und eine Ebenenmaske für 3 regionale Feldklassen. Ich möchte zonale Statistiken in allen Raster-Datensätzen iterieren, eine zusammenfassende dbf-Tabelle abrufen, aber jeden Rasternamen, Mittelwert, Min., Max. nach Regionsklasse beibehalten.

Ich hatte einmal für jedes Bild ausgeführt, aber ich möchte alle Bilder zusammen iterieren. Ich frage mich, ob ich eine Rasterliste im Arbeitsbereich definieren und diese in outZsat einschließen muss

Ich brauche etwas Hilfe mit dem Code.


Sie können die Ausgaben in einer Liste halten und im Nachhinein zusammenführen.

inRasterFolder = r"… " arcpy.env.workspace = inRasterFolder tables = [] für Raster in arcpy.ListRasters(): outTable = "table_" + str(uuid.uuid4()).replace("-", "") [0:8] + ".dbf" tables.append(outTable) outZSaT = ZonalStatisticsAsTable(inZoneData, zoneField, raster, outTable, "DATA", "ALL") arcpy.Merge_management(tables, "finalDbf.dbf")

Der Kürze halber werden die üblichen Importe, Vars, Cleanup usw. nicht angezeigt. Wenn Sie benutzerdefinierte Spalten hinzufügen müssen (mir ist nicht ganz klar, wie Sie mit den verschiedenen Klassen in Ihrem zoneField umgehen möchten), können Sie Felder direkt nach dem Befehl ZonalStatsAsTable hinzufügen und dann berechnen.


Schau das Video: Batch Processing in QGIS using Python. Zonal Statistics (Oktober 2021).