HOW TO

Berechnen von zonalen Statistiken für überlappende Zonen

Last Published: February 20, 2021

Zusammenfassung

Hinweis: Dieser Artikel bezieht sich auf die Retired-ArcGIS-Versionen 9.x und 10.0. Höhere Versionen von ArcGIS enthalten möglicherweise andere Funktionalität sowie andere Namen für Menüs, Befehle und Geoverarbeitungswerkzeuge, die sich auch an anderen Orten befinden können.

In der folgenden Anleitung wird ein einfaches Python-Skript beschrieben, mit dem zonale Statistiken für überlappende Zonen berechnet werden können.

Werden im Werkzeug "Zonale Statistiken als Tabelle" Polygon-Features als Eingabezonen verwendet, dann werden die Vektor-Features vom Werkzeug gerastert. Dies führt zu einem Datenverlust, wenn überlappende Polygone im Zonen-Feature vorhanden sind.

Mithilfe von Python können die Einschränkungen des Werkzeugs überwunden werden, indem jedes Feature iterativ verarbeitet wird, um ein solches Problem zu vermeiden.

Vorgehensweise

import arcpy, os, sys, string from arcpy import env arcpy.CheckOutExtension("spatial") def CreateDirectory(DBF_dir): if not os.path.exists(DBF_dir): os.mkdir(DBF_dir) print "created directory {0}".format(DBF_dir) def ZonalStasAsTable(fc,DBF_dir,raster,zoneField): for row in arcpy.SearchCursor(fc): lyr = "Zone_{0}_lyr".format(row.OBJECTID) tempTable = DBF_dir + os.sep + "zone_{0}.dbf".format(row.OBJECTID) arcpy.MakeFeatureLayer_management(fc, lyr, "\"OBJECTID\" = {0}".format(row.OBJECTID)) print "Creating layer {0}".format(lyr) out_layer = DBF_dir + os.sep + lyr + ".lyr" arcpy.SaveToLayerFile_management(lyr, out_layer, "ABSOLUTE") print "Saved layer file" arcpy.gp.ZonalStatisticsAsTable_sa(out_layer, zoneField, raster, tempTable, "DATA", "ALL") print "Populating zonal stats for {0}".format(lyr) del row, lyr def MergeTables(DBF_dir,zstat_table): arcpy.env.workspace = DBF_dir tableList = arcpy.ListTables() arcpy.Merge_management(tableList,zstat_table) print "Merged tables. Final zonalstat table {0} created. Located at {1}".format(zstat_table,DBF_dir) del tableList if __name__ == "__main__": ws = "C:/TEMP" DBF_dir = ws + os.sep + "DBFile" fc = "C:/TEMP/zone/zone_data/zones.gdb/zones" raster = r"C:/TEMP/zone/raster/zonalstat_DEM.img" zoneField = "ZoneID" zstat_table = DBF_dir + os.sep + "Zonalstat.dbf" CreateDirectory(DBF_dir) ZonalStasAsTable(fc,DBF_dir,raster,zoneField) MergeTables(DBF_dir,zstat_table)
 
 

Artikel-ID:000011385

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Weitere Informationen zu diesem Thema erkunden