I am trying to reclassify a DEM into three classes based on elevation and for some reason, it keeps returning decidedly NOT what I was trying to accomplish. However, when I clip it down, it works fine. At first I thought the problem was just because the DEM is fairly large. I then noticed that under classification statistics the count reads as a negative number. I have never encountered this issue before. I have done something similar with the same DEM a few years ago and didn't have this issue. What is really perplexing to me is that if I clip the raster, no problem. Is there a way I can remedy this issue? Please, any help would be much appreciated!
I am currently using ArcGIS Pro but I went back to ArcMap to test this and had the same issue.
This is what is returned when I try to reclassify the entire DEM
This is what is returned, and what I want, with a clipped portion of the DEM.
Prior to reclassifying, I go into symbology and classify the the DEM into three classes, and then from there I use the reclassify tool.
Again, any help would be immensely, greatly apprecaited!
Solved! Go to Solution.
What is the bit type of the raster?
I have seen this when the bit type (and hence its range) is too small to account for an operation.
Here is an example (so I don't have to load an image).
The bit type for a sequence of 10,000 integers and their sums. Numbers get rolled/reused when they exceed the possible range of values (see lines 1-3) and the sum or counts are meaningless.
As you move up bit type, then the possible range of values increases until such time that going to a higher bit type doesn't result in a change of counts/sum etc since the values are all within range.
a = np.arange(10000, dtype=np.int8) # the numbers wrap around themselves a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ..., 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], dtype=int8) np.sum(a) # hence the sum is off -4872 # --- move to 16 bit # now you can see all the numbers a = np.arange(10000, dtype=np.int16) a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ..., 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999], dtype=int16) np.sum(a) 49995000 # --- move to 32 bit just to check a = np.arange(10000, dtype=np.int32) a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ..., 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999]) np.sum(a) 49995000
So... probably the same thing, which is why when you clipped the extent, the size got into a manageable range
32 bit, floating point. It just seems bizarre to me that I was able to do the exact same thing I am currently trying to on the exact same DEM a couple years ago and had no issues.