I have 732 temperature rasters (366 min and 366 max temp) that I want to manipulate depending on if the max temperature was greater than a specified and constant crop category temperature.
import osimport arcpyimport sysif arcpy.CheckExtension("Spatial") == "Available": arcpy.AddMessage("Checking out Spatial Analyst") arcpy.CheckOutExtension("Spatial")else: arcpy.AddError("Unable to get spatial analyst extension") sys.exit(0)'''HU formula if Max Temp > Max Crop Temp HU formula if Max Temp < Max Crop Temp1 85 (85-(MaxTemp - 85) + MinTemp)/2) - 45 ((MaxTemp + MinTemp)/2) - 452 75 (75-(MaxTemp - 75) + MinTemp)/2) - 40 ((MaxTemp + MinTemp)/2) - 403 75 (75-(MaxTemp - 75) + MinTemp)/2) - 45 ((MaxTemp + MinTemp)/2) - 454 80 (80-(MaxTemp - 80) + MinTemp)/2) - 50 ((MaxTemp + MinTemp)/2) - 505 95 (95-(MaxTemp - 95) + MinTemp)/2) - 50 ((MaxTemp + MinTemp)/2) - 506 90 (90-(MaxTemp - 90) + MinTemp)/2) - 50 ((MaxTemp + MinTemp)/2) - 507 90 (90-(MaxTemp - 90) + MinTemp)/2) - 60 ((MaxTemp + MinTemp)/2) - 608 80 (80-(MaxTemp - 80) + MinTemp)/2) - 65 ((MaxTemp + MinTemp)/2) - 659 95 (95-(MaxTemp - 95) + MinTemp)/2) - 65 ((MaxTemp + MinTemp)/2) - 65'''DIR = os.path.dirname(__file__)xlsFilePath = os.path.join(DIR, '..', 'resources', 'xls')INPUT_NORMAL_HEATUNIT_RAST_MAX_FOLDER = os.path.join(DIR, '..', 'resources', 'input', 'max')INPUT_NORMAL_HEATUNIT_RAST_MIN_FOLDER = os.path.join(DIR, '..', 'resources', 'input', 'min')OUTPUT = os.path.join(DIR, '..', 'resources', 'output')for day in range(0, 367): maxNormName = 'Nor_Max_{0}.tif'.format(str(day).zfill(3)) minNormName = 'Nor_Min_{0}.tif'.format(str(day).zfill(3)) maxNormFile = os.path.join(INPUT_NORMAL_HEATUNIT_RAST_MAX_FOLDER, maxNormName) minNormFile = os.path.join(INPUT_NORMAL_HEATUNIT_RAST_MIN_FOLDER, minNormName) categories = [(maxNormFile, minNormFile, 85, 45, str(1)), (maxNormFile, minNormFile, 75, 40, str(2)), (maxNormFile, minNormFile, 75, 45, str(3)), (maxNormFile, minNormFile, 80, 50, str(4)), (maxNormFile, minNormFile, 95, 50, str(5)), (maxNormFile, minNormFile, 90, 50, str(6)), (maxNormFile, minNormFile, 90, 60, str(7)), (maxNormFile, minNormFile, 80, 65, str(8)), (maxNormFile, minNormFile, 95, 65, str(9))]for category in categories: print "Con(\"%{0}%\"> {2}, ((({2}-(\"%{0}%\"-{2}))+\"%{1}%\")/2)-{3}, ((\"%{0}%\"+ \"%{1}%\")/2)-{3})".format( *category) output = 'Nor_HU{0}_{1}.tif'.format(category[4], str(day).zfill(3)) outputLocation = os.path.join(OUTPUT, output) arcpy.gp.RasterCalculator_sa("Con(\"%{0}%\"> {2}, ((({2}-(\"%{0}%\"-{2}))+\"%{1}%\")/2)-{3}, ((\"%{0}%\"+ \"%{1}%\")/2)-{3})".format( *category), outputLocation)
When I run this, I get a type error pointing to the last line where I am using a con statement in raster calculator. My console output is:
Con("%C:\Users\uma.bhandaram\Desktop\Peak\peakseason\normalCalc..\resources\input\max\Nor_Max_000.tif%"> 85, (((85-("%C:\Users\uma.bhandaram\Desktop\Peak\peakseason\normalCalc..\resources\input\max\Nor_Max_000.tif%"-85))+"%C:\Users\uma.bhandaram\Desktop\Peak\peakseason\normalCalc..\resources\input\min\Nor_Min_000.tif%")/2)-45, (("%C:\Users\uma.bhandaram\Desktop\Peak\peakseason\normalCalc..\resources\input\max\Nor_Max_000.tif%"+"%C:\Users\uma.bhandaram\Desktop\Peak\peakseason\normalCalc..\resources\input\min\Nor_Min_000.tif%")/2)-45)
This looks right to me but clearly it's not. Where am I going wrong?