#Cost distance for all hubs #by rangermry, 7-11-2013 using Python 2.6.5 import arcpy, os from arcpy.sa import * from arcpy import env #User inputs #Input Rasters Location Folder inputFolder=arcpy.GetParameterAsText(0) #Cost Raster a.k.a. Impedence Layer inCostRaster=arcpy.GetParameterAsText(1) #Derived inputs #Make output folder #Take input folder name as variable. rootFolName=str(inputFolder.split("\\")[-1]) #Take input folder name off of root folder path. newRoot=inputFolder.replace(rootFolName,"") outputFolder=os.path.join(newRoot,"Cost_Distance") if not os.path.isdir(outputFolder): os.makedirs(outputFolder) arcpy.AddMessage("-Folder made for output : "+outputFolder+'\n') #Environmental Workspace env.workspace=inputFolder #Get all Raster Items from inputFolder as workspace rasterList=arcpy.ListRasters() arcpy.AddMessage("-Obtaining all raster inputs\n.") try: for rast in rasterList: if not rast=="imped": fullpath = os.path.join(inputFolder, rast) arcpy.AddMessage("-Processing file : "+rast+'\n') #Set Local Variables inSourceData=fullpath outBkLinkRaster=outputFolder+"\\BkLk_"+rast.replace("value","") outDistRaster=outputFolder+"\\CD_"+rast.replace("value","") #Execute CostDistance arcpy.AddMessage("Proceeding to cost distance.\n") #Check out Spatial Analyst Licesne arcpy.CheckOutExtension("spatial") arcpy.gp.CostDistance_sa(inSourceData,inCostRaster,outDistRaster,"",outBkLinkRaster) arcpy.AddMessage("-Processed file: "+rast+"Saving file...") arcpy.AddMessage("-Saved file! \n ") except IOError: #Print traceback error. tb=sys.exc_info()[2] tbinfo=traceback.format_tb(tb)[0] arcpy.AddMessage("PYTHON ERRORS:\nTraceback info: "+tbinfo+"\nError Info:"+str(sys.exc_info()[1]))
Solved! Go to Solution.
It makes the files for the first value and then takes all day and does not finish. If I do one value manually, it takes 2-3 hours.
Does anyone know any kind of monitoring I can build in this or any ideas of why this script seems to stall out?
import os import arcpy from arcpy.sa import * from arcpy import env # Check out Spatial Analyst License first (once) arcpy.CheckOutExtension("spatial") # User inputs # Parameter 0: Input Rasters Location Folder inputFolder = arcpy.GetParameterAsText(0) # Parameter 2: Cost Raster a.k.a. Impedance Layer inCostRaster = arcpy.GetParameterAsText(1) # Derived inputs # Make output folder # Take input folder name as variable. rootFolName = os.path.basename(inputFolder) # Take input folder name off of root folder path. newRoot = os.path.dirname(inputFolder) outputFolder = os.path.join(newRoot,"Cost_Distance") if not os.path.isdir(outputFolder): os.makedirs(outputFolder) arcpy.AddMessage("-Folder made for output : {}\n".format(outputFolder)) # Environmental Workspaces env.workspace = env.scratchWorkspace = inputFolder #Get all Raster Items from inputFolder as workspace rasterList = arcpy.ListRasters() arcpy.AddMessage("-Obtaining all raster inputs\n.") env.workspace = env.scratchWorkspace = outputFolder try: for rast in rasterList: if rast !="imped": fullpath = os.path.join(inputFolder, rast) arcpy.AddMessage("-Processing file : {}\n".format(rast)) #Set Local Variables inSourceData = fullpath outBkLinkRaster = "BkLk_{}".format(rast.replace("value","")) outDistRaster = "CD_{}".format(rast.replace("value","")) #Execute CostDistance arcpy.AddMessage("Proceeding to cost distance.\n") # set raster environment env.extent = inSourceRaster env.snapRaster = inSourceRaster env.cellSize = inSourceRaster ras = CostDistance(inSourceData,inCostRaster,"",outBkLinkRaster) arcpy.AddMessage("-Processed file: {}\n".format(rast)) ras.save(outDistRaster) arcpy.AddMessage("-Saved file! \n ") except IOError: #Print traceback error. tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] arcpy.AddMessage( "PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:{1}".format( (tbinfo,sys.exc_info()[1])))
It makes the files for the first value and then takes all day and does not finish. If I do one value manually, it takes 2-3 hours.
Does anyone know any kind of monitoring I can build in this or any ideas of why this script seems to stall out?
import os import arcpy from arcpy.sa import * from arcpy import env # Check out Spatial Analyst License first (once) arcpy.CheckOutExtension("spatial") # User inputs # Parameter 0: Input Rasters Location Folder inputFolder = arcpy.GetParameterAsText(0) # Parameter 2: Cost Raster a.k.a. Impedance Layer inCostRaster = arcpy.GetParameterAsText(1) # Derived inputs # Make output folder # Take input folder name as variable. rootFolName = os.path.basename(inputFolder) # Take input folder name off of root folder path. newRoot = os.path.dirname(inputFolder) outputFolder = os.path.join(newRoot,"Cost_Distance") if not os.path.isdir(outputFolder): os.makedirs(outputFolder) arcpy.AddMessage("-Folder made for output : {}\n".format(outputFolder)) # Environmental Workspaces env.workspace = env.scratchWorkspace = inputFolder #Get all Raster Items from inputFolder as workspace rasterList = arcpy.ListRasters() arcpy.AddMessage("-Obtaining all raster inputs\n.") env.workspace = env.scratchWorkspace = outputFolder try: for rast in rasterList: if rast !="imped": fullpath = os.path.join(inputFolder, rast) arcpy.AddMessage("-Processing file : {}\n".format(rast)) #Set Local Variables inSourceData = fullpath outBkLinkRaster = "BkLk_{}".format(rast.replace("value","")) outDistRaster = "CD_{}".format(rast.replace("value","")) #Execute CostDistance arcpy.AddMessage("Proceeding to cost distance.\n") # set raster environment env.extent = inSourceRaster env.snapRaster = inSourceRaster env.cellSize = inSourceRaster ras = CostDistance(inSourceData,inCostRaster,"",outBkLinkRaster) arcpy.AddMessage("-Processed file: {}\n".format(rast)) ras.save(outDistRaster) arcpy.AddMessage("-Saved file! \n ") except IOError: #Print traceback error. tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] arcpy.AddMessage( "PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:{1}".format( (tbinfo,sys.exc_info()[1])))