suhaibfarhan

How to Execute "Batch Zone Stats as Table" Python file in ArcGIS 9.2

Discussion created by suhaibfarhan on Sep 22, 2012
Latest reply on Sep 22, 2012 by suhaibfarhan
Hello Everyone

I'm fairly new to python scripting but I downloaded and modified Batch Zonal Statistics as Table script.

I'm trying to obtain statistics within 10 zonal areas from roughly 5000 rasters. But actually i really dont know how to execute the below mentioned python file. What i did yet:


In ArctoolBox (ArcGIS 9.2) add a new toolbox and then add a new script to the tool, but when i run this python file it gives me this error message "This tool has no parameters". Kindly help in this regard to let me know how to add or execute this script into arctool box. thanks in advance



The Python Script is as below:


# Create the Geoprocessor object
import win32com.client, sys, os, string

gp = win32com.client.Dispatch("esriGeoprocessing.GPDispatch.1")
# Check out Spatial Analyst extension license
gp.CheckOutExtension("Spatial")
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
gp.OverwriteOutput = 1

try:
gp.Workspace = "d:/test" #set workspace folder
InZonalLayer = "d:/test/data/uib.gdb/catchment" #input zone layer, zone layer is a raster
InZonalValueField = "Name" #specify which field to be used from zone layer
#set output workspace
OutWorkSpace = "d:/test/data/uib.gdb/tables"

#Get the raster datasets in the input workspace and loop through them from the start
InputRasters = gp.ListRasters()
InputRasters.reset()
InputRaster = InputRasters.next()

while InputRaster:

strInputRaster = str(InputRaster) #string from raster file name
strDate = strInputRaster[19:-7] #date obtained from raster file name
print strDate

strOutputTableName = strInputRaster[0:-4]#output table name from raster

strOutTablePath = OutWorkSpace + "/" + strOutputTableName + ".dbf"
print strOutTablePath


# Process: Zonal Statistics as Table
gp.ZonalStatisticsAsTable_sa(InZonalLayer, InZonalValueField, InputRaster, strOutTablePath, "DATA")

#add new field to dbf table
strFieldName = "RAST_DATE" # variable becomes a string
strDataType = "TEXT" # variable becomes a string
strAlias = "DATE" # variable becomes a string
intFieldLength = 20 # variable becomes an integer
gp.AddField_Management(strOutTablePath,strFieldName,strDataType,"","",intFieldLength,strAlias,"NON_NULLABLE","NON_REQUIRED","")

#Add new field and populate the field with date from rasters
gp.CalculateField_management(strOutTablePath,"RAST_DATE", strDate,"VB")


#append to gdb table already created
gp.Append_management(strOutTablePath,"d:/test/data/uib.gdb/tables","NO_TEST")


#go to the next raster and loop again
InputRaster = InputRasters.next()
except:
gp.AddMessage(gp.GetMessages(2))
print gp.GetMessages(2)

Outcomes