I would like to build a script tool using Arcpy that reclassifies a raster layer based on a single user input parameter. For example, if the user inputs the number 7, then 0 - 7 would reclassify as 1, anything > 7 would become NoData.
The reason I need this is; I am building a site selection tool which contains many processes. In the middle of the tool there is a Reclassify process. The workflow goes something like this:
Elevation > Slope > Slope + 0.5 > Int > Reclassify > Raster to Polygon - This is the final vector that becomes part of other vector analysis to perform a site selection. It is a polygon of all areas of suitable slope.
I have been playing around with various attempts but to no avail, mostly because the Reclassify tool will not take a variable as part of the input. Everything else in the tool works fine but I don't know to have a user-defined input determine the Reclassify process.
# Import arcpy module import arcpy from arcpy.sa import * # Script arguments Elevation_Data = arcpy.GetParameterAsText(0) Slope_Value = arcpy.GetParameterAsText(1) # Local variables: Slope_1 = "D:\egm722\Data\Scratch.gdb\\Slope_1" Int_Slope = "D:\egm722\Data\Scratch.gdb\\Int_Slope" Reclass = "D:\egm722\Data\Scratch.gdb\\Reclass" RasPoly = "D:\egm722\Data\Scratch.gdb\\RasPoly" # Process: Slope arcpy.gp.Slope_sa(Elevation_Data, Slope_1, "DEGREE", "1", "PLANAR", "METER") # Process: Raster Calculator Slope_2 = Raster(Slope_1) + 0.5 Slope_2.save("D:\egm722\Data\Scratch.gdb\\Slope_2") # Process: Int arcpy.gp.Int_sa(Slope_2, Int_Slope) # Process: Reclassify arcpy.gp.Reclassify_sa(Int_Slope, "VALUE", "0 Slope_Value 1", Reclass, "NODATA") # Process: Raster to Polygon arcpy.RasterToPolygon_conversion(Reclass, RasPoly, "SIMPLIFY", "VALUE")
Here, I have attempted the variable Slope_Value to be the user-defined input as a script tool parameter type 'Long', but of course this does not work.
Traceback (most recent call last): File "D:\egm722\elev.py", line 26, in <module> arcpy.gp.Reclassify_sa(Int_Slope, "VALUE", "0 Slope_Value 1", Reclass, "NODATA") File "c:\program files (x86)\arcgis\desktop10.5\arcpy\arcpy\geoprocessing\_base.py", line 510, in <lambda> return lambda *args: val(*gp_fixargs(args, True)) ExecuteError: ERROR 000622: Failed to execute (Reclassify). Parameters are not valid. ERROR 000628: Cannot set input into parameter remap.
I cannot skip the reclassify process and delete values from the 'Raster to Polygon' output (using Select tool for example) because converting non-reclassified Raster layers using 'Raster to Polygon' takes far too long for it to be considered a viable tool.