Grouping raster or vector data by attribute in order to SIMPLIFY the OVERLAY process
Need to ask 2 questions first;"With what complexity?" then "How to assign values?"
in order of Increasing Complexity simplification of continuous layers yields discrete categorical layers
- binary layers (yes/no, on/off, 1/0, suitable/unsuitable)
- multiple category layers( yes/maybe/no, on/bordering/off, highly suitable/less suitable/not suitable)
- "index" layers (1, 2, 3, ....10, or 1, 2, 3,...1000, etc)
How does one divide up a continuous variable into discrete categories? (open simplify_elevation.mxd from your ...GIS\Demo\simplify folder)
- Raster Calculator Map Algebra
- "IF" statements (plus "if... then...else") in traditional programming
- BINARY DISRETE CATEGORIES : a simple "Con" statement has this syntaxCon (conditional statement, yesGrid, noGrid) . . . . .see help -- it means "conditional testing"Con("elev" > 500, 1, 0) copy and paste this into the Spatial Analyst Raster Calculator
- MULTIPLE DISCRETE CATEGORIES: a "nested" .Con statement (where the "no" for the first conditional sends you to another conditional test)Con("elev" > 600, 2, Con("elev" > 300, 1, 0))
- Using arithmetic (works for Binary, Multiple, or Index Category Layers)
- Determine the range and divide by the number of categories requiredindex category width = ([range]/[# of divs needed])for our elevation example; 240 to 830 = 590 / 10 classes = 59 m per index level
- subtract the minimum from each cell or attribute value to set the origin of the index at the lowest value([elev] - 240) / 59
- find the next lowest integer (or highest, depending if you want the index valuesto start at 0 or 1) using the Floor or Ceil functionsFloor(([elev] - 240) / 59) however to get it into an INTEGER raster, you must useInt(Floor(([elev] - 240) / 59))which yields 10 categories from 0 to 9orInt(Ceil(([elev] - 240) / 59) )which yields 10 categories from 1 to 10What if you want the same number of cells in each category?
- Reclassify geoprocessing
0 commentaires