Branched from: Calculate zonal mean for multiple rasters using Python
I found a solution to the same problem. This solution will allow you to process all of the raster files in a selected folder instead of naming the raster files individually. I had 936 rasters I needed to analyze, so the ability to loop through all of the available rasters was a necessity for me.
The script below is my modificaiton of the discussion in the following post: arcpy - Python Script Zonal Stats as Table Loop Question - Geographic Information Systems Stack Exch...
The output from this script is an individual .dbf file (and associated files) for each of the rasters that you process.
import arcpy, os, arcinfo
from arcpy import env
from arcpy.sa import *
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("Spatial")
env.workspace =
"C:\\Users\\davebetts\\GIS\\project\\rasters"
watershedFeat =
"C:\\Users\\davebetts\\GIS\\project\\zones_polygons.shp"
outDir =
"C:\\Users\\davebetts\\GIS\\project\\rasters\\tables\\"
x = arcpy.ListRasters()
for raster in arcpy.ListRasters()[0:]:
print raster
ndx = x.index(raster)
print ndx
outTable = outDir + raster + ".dbf"
arcpy.gp.ZonalStatisticsAsTable_sa(watershedFeat,
"FID",
raster,
outTable,
"NODATA","MEAN")
arcpy.CheckInExtension("Spatial")
!!! This script is still stopping several times partway through the total number of rasters I'm processing. I have to restart the process using the most recent results from the "prnt ndx" replacing the '0' in line 30. !!!
The script needs improvement. I would love to get rid of the pauses and having to restart.
I also want to combine this script with the scripts that I use before and after into a single script. The steps I follow and a link to the location of these scripts are as follows:
Kriging and zonal statistics
- Kriging of gridded climate data over multiple time steps. Individual rasters are produced for each time step.
- Zonal statistics of ALL rasters in the selected folder (produced by Step 1)
- Combine all .dbf files (zonal tables) in working directory (produced by Step 2) into a single table.
- Columns = zones
- Rows = time steps