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

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln