Instrução

Calcular estatísticas zonais para zonas sobrepostas

Last Published: February 20, 2021

Resumo

Nota: Este artigo se aplica às versões antigas do ArcGIS 9.x e 10.0. Versões posteriores do ArcGIS podem conter diferentes funcionalidades, bem como diferentes nomes e locais para menus, comandos e ferramentas de geoprocessamento.

As instruções fornecidas descrevem um script Python de amostra que pode ser usado para calcular estatísticas zonais para zonas sobrepostas.

Ao usar feições poligonais como zonas de entrada na ferramenta Estatística Zonal como Tabela, a ferramenta rasteriza as feições vetoriais. Isso resulta em perda de dados se polígonos sobrepostos estiverem presentes na feição de zona.

Com a utilização do Python, as limitações da ferramenta podem ser superadas pelo processamento iterativo de cada feição para superar esse problema.

Procedimento

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. Tabela zonalstat final {0} criada. Localizado em {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)
 
 

ID do Artigo:000011385

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com suporte técnico

Baixe o Esri Support App

Ir para opções de download

Descubra mais sobre este tema