kpzimmer

Error Parsing Argument for Add Message when running scripts again or sequentially

Discussion created by kpzimmer on Apr 1, 2011
Latest reply on Apr 3, 2011 by Dan_Patterson
Hello all,

I've built a series of scripts that run great in Pythonwin, but I've recently ran into an error after bringing them in as ArcGIS tools. All the scripts/tools work fine the first time when I run them, but for some reason I am getting an attribute error when I either run the script again or run the next script in the analysis sequence. All my scripts have the same structure so I suspect once I solve this issue for one I'll solve it for them all.  The exact error reads:

Executing: 4ReclassifySnowto12 J:\MODIS_Test\SnowCloudFill\HEB_SNOW_GEO_RUN6_NibbleFill J:\Scratch J:\MODIS_Test\SnowCloudFill\HEB_SNOW_GEO_RUN7_ReclassSnow1
  Start Time: Fri Apr 01 19:18:54 2011
  Running script 4ReclassifySnowto12...
  <type 'exceptions.AttributeError'>: Object: Error in parsing arguments for AddMessage
  Failed to execute (4ReclassifySnowto12).
  End Time: Fri Apr 01 19:18:54 2011 (Elapsed Time: 0.00 seconds)
 
If I click cancel and try running the script again it works fine. It just seems to fail every second time I try to run the script, but I can't figure out what Argument is not parsing correctly.  Any help would be great. Attached is a sample script code:

# Con_sample.py
# Description: Performs a conditional if/else evaluation on each cell of an input raster.
# Requirements: None
# Author: ESRI
# Date: 12/01/03

# Import system modules
import sys, string, os, arcgisscripting,time,datetime

# Create the Geoprocessor object
gp = arcgisscripting.create(9.3)

# Load required toolboxes...
gp.AddToolbox("C:/Program Files (x86)/ArcGIS/ArcToolbox/Toolboxes/Spatial Analyst Tools.tbx")
##gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Spatial Analyst Tools.tbx")

# Check out Spatial Analyst extension license
gp.CheckOutExtension("spatial")
print " got extensions"

gp.OverWriteOutput = 1

start = time.clock()
print "Time starting"
gp.AddMessage ("Time Starting")

# workspace containing raw MODIS rasters
##gp.workspace = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_RUN4"
gp.workspace = sys.argv[1]
print "Workspace with Original rasters is = " + gp.workspace
gp.AddMessage("Workspace with Original rasters is = " + gp.workspace)

# Set location of Scratch Directory
gp.scratchworkspace = r"J:\Scratch"
gp.scratchworkspace = sys.argv[2]
print "Scratch Workspace = " + gp.scratchworkspace
gp.AddMessage("Scratch Workspace = " + gp.scratchworkspace)

##outputFolder = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_RUN6_NibbleFill"
outputFolder = sys.argv[3]
print "Output Directory for Nibble Filled Raster will be" + outputFolder
gp.AddMessage("Output Directory for Nibble Filled Raster will be " + outputFolder)

##RasterDirectory = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_RUN5_ReclassNodata"
RasterDirectory = sys.argv[4]
print "Directory with Raster Mask for Nibble Filled Raster will be" + RasterDirectory
gp.AddMessage("Directory with Raster Mask for Nibble Filled Raster will be" + RasterDirectory)

##OutputDirACC4 = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_ACC_4"
OutputDirACC4 = sys.argv[5]
print "Output Directory for Assumption Raster 4 will be" + OutputDirACC4
gp.AddMessage("Output Directory for Assumption Raster 4 will be = " + OutputDirACC4)

try:
  
    # Start raster list of all rasters in the original raster workspace   
    rsList = gp.ListRasters("*")
    # begin looping through rasters
    ##rs = rsList.Next()
    for rs in rsList:
       # Creat the name for the output raster including output directory location
        ##InRaster = rs
        InRaster = gp.workspace + "\\" + rs
        print "Input Raster = " + InRaster

        #outputFolder = "J:/GEOG683/SnowCloudFill/HEB_SNOW_GEO_RUN6_FocalFill"
        ##outputFolder = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_RUN6_NibbleFill"
        OutRaster = outputFolder + "\Nib" + rs    
        
        ##RasterDirectory = r"J:\GEOG683\SnowCloudFill\HEB_SNOW_GEO_RUN5_ReclassNodata"
        InRasterMask = RasterDirectory + "\\RclND_" + rs
        print "InRaster Mask = " + InRasterMask
           
        print "Output Raster = "+ OutRaster
        print " ......................."

        # Process: FocalStatistics
        #InExpression = "con("+ gp.workspace + "\\" + InRaster + " == 50, focalmajority(" + gp.workspace + "\\" + rs + ", Rectangle, 3,3),"+ gp.workspace + "\\" + InRaster + ")"
        #print InExpression

        ##gp.Nibble_sa(Fill50AfterOnly_Montana_Canada_Maximum_Snow_Extent_A2000D065_tif, tests_tif, Nibble_Fill51, "DATA_ONLY")
        gp.Nibble_sa(InRaster, InRasterMask, OutRaster, "DATA_ONLY")
        print "Nibble Fill Succuess"
        ##rs = rsList.Next()

        AccuracyOutput4 = OutputDirACC4 + "\\" + "Acc4" + rs
        print "ACC4 " + AccuracyOutput4
        gp.AddMessage ("ACC4 " + AccuracyOutput4)
        print "Acc input " + InRaster
        gp.AddMessage("Acc input " + InRaster)
        print "Acc output " + OutRaster
        gp.AddMessage("Acc output " + OutRaster)
        
        Accuracyexpression4 = "con("+ InRaster +" == " + OutRaster + ",0, 4 )"
        print "Accuracy4 expression = "+ Accuracyexpression4
        gp.AddMessage ("Accuracy4 expression = "+ Accuracyexpression4)
        
        gp.SingleOutputMapAlgebra_sa(Accuracyexpression4, AccuracyOutput4)
        print "Accuracy 4 is completed"
        gp.AddMessage("Accuracy 4 is completed")

   
# Error checker           
except:
    print " Does not work"
    gp.getmessage()
    
# Stop Time Clock
end = time.clock()
print "Processing time:", (end-start)/60, "minutes"
gp.AddMessage("Processing time:", (end-start)/60, "minutes")   
Thanks in Advance

Outcomes