Reclassify raster - floating point to categorical

4828
2
Jump to solution
05-26-2015 11:00 PM
Leo_KrisPalao
New Contributor II

Dear Arcpy Users,

I am reclassifying my raster data but I cannot get the output that I want. The case is, I have a floating point raster, in which, I want to reclassify it into categorical values. It is quite weird that some of my values are reclassified outside the range of values that I set. For instance,

output categorical raster          original raster

1                                                 1.24941356103

1                                                 0.944287159553

1                                                 0.70514940818

0                                                 0.0177492300117

0                                                 2.72532446104e-07

250                                             -6.0889773748

This is the reclassification method that I want to do.

-50 to -2.58 = 6

-2.58 to -1.96 = 5

-1.96 to -1.65 = 4

-1.65 to -1.29 = 3

-1.29 to 2.58 = 2

2.58 to 50 = 1

other pixels = No data

Here is the code that I am running.

import arcpy, os, sys
from arcpy import env
from arcpy.sa import *

arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("Spatial")
arcpy.env.extent = "MAXOF"

arcpy.env.workspace = r'directory\of\rasters\test'
rasters = arcpy.ListRasters("*","TIF")

out_ws = 'output/directory/Reclass/'
if not os.path.exists(out_ws):
  os.makedirs(out_ws)

for raster in rasters:
  name, ext = raster.split(".")
  fileout = out_ws + name + "_reclass" + ".tif"
  outReclass = Reclassify(raster, "Value", RemapRange([[-50.0,-2.58,6],[-2.58,-1.96,5],\
  [-1.96,-1.65,4],[-1.65,-1.29,3],[-1.29,2.58,2],[2.58,50.0,1]]),"NODATA")
   
  outReclass.save(fileout)
0 Kudos
1 Solution

Accepted Solutions
DanPatterson_Retired
MVP Emeritus

looks fine, but try removing the \ at the end of the first line in your​ RemapRange list, it is

nt needed or wanted

View solution in original post

0 Kudos
2 Replies
DanPatterson_Retired
MVP Emeritus

looks fine, but try removing the \ at the end of the first line in your​ RemapRange list, it is

nt needed or wanted

0 Kudos
curtvprice
MVP Esteemed Contributor

A really nice feature of python is that if you are inside ( ) or [ ], newlines will be ignored.

Isn't Python, just, well, beautiful?

remap = RemapRange([[-50.0, -2.58, 6],
                    [-2.58, -1.96, 5],
                    [-1.96, -1.65, 4],
                    [-1.65, -1.29, 3],
                    [-1.29, 2.58, 2],
                    [2.58, 50.0, 1]])
out_reclass = Reclassify(raster, "Value", remap, "NODATA")