Map Algebra How does Map Algebra work? * Map Algebra uses math-like expressions containing operators and functions with raster data. Map Algebra operators, which are relational, Boolean, logical, combinatorial, and bitwise, work with one or more inputs to develop new values. Functions perform specialized tasks, such as computing slope from elevation, and they usually return numeric values. * You don't have to be a programmer to know how to use operators and functions effectively, you just have to be taught how to use them. Map Algebra * Map Algebra is an analysis language based loosely on the map algebra concepts presented by Dr. Dana Tomlin in his book entitled Geographic Information Systems and Cartographic Modeling (Tomlin, 1990). Map Algebra is a high-level computational language used for performing cartographic spatial analysis using raster data. * Simply put, Map Algebra is math applied to rasters, a practice thaťs possible because rasters are geographically referenced arrays of numbers. If you stack rasters on top of each other as if they were a mathematical sandwich, you can perform simple arithmetic to the most sophisticated algorithms with them. You probably know more about Map Algebra operators than you think. Map Algebra operators are generally the same operators found on scientific calculators. The operators used most often (arithmetic, relational, Boolean, and logical) are also the simplest. Two less commonly used operators are combinatorial and bitwise. Map Algebra Arithmetic operators * Arithmetic operators allow addition, subtraction, multiplication, and division. For example, three rasters measuring three different types of fire risk could be added to create an overall risk analysis raster. * Arithmetic operators can also be used to convert values from one measurement to another (e.g., feet x 0.3048 = meters). 43 21 x 2 86 42 = Map Algebra Relational operators * Relational operators allow you to build logical tests, returning values of true (1) and false (0). For example, this type of operator can be used to find vegetation "equal to" Sierra-type mixed coniferous forest. * You can ether use the Relational Operator (=,<,>) of the Abbreviation (EQ,LT, GT) 43 21 EQ 4 10 00 = Map Algebra Boolean operators * Boolean operators such as "and", "or", and "not" allow you to chain logical tests. Like relational operators, Boolean operators return values of true and false. For example, you could find all slopes that are "greater-than" 45 degrees "and" that have an elevation that is "greaterthan" 5000 meters. 4655 2165 Slope 40007500 65005500 Elevation AND 01 01 = Map Algebra Logical operators * The logical operators DIFF, IN, and OVER, also allow you to build logical tests on a cell-by-cell basis, but are implemented with specific rules. ­ A DIFF B: If a cell value in raster A and raster B are different, the cell value in raster A is returned. If the cell values are the same, the value zero is returned. ­ A IN {value list): If a cell value in raster A is in the value list, the cell value in raster A is returned. Otherwise, NoData is returned. ­ A OVER B: If a cell value in raster A is not equal to zero, the cell value is raster A is returned. Otherwise, the cell value in raster B is returned. 43 21 53 25 A B DIFF 40 01 = Understanding logical values Logical values simply keep track of the values, true and false. In Map Algebra, any non-zero input value is considered to be a logical true, and zero is considered a logical false. Some Map Algebra operators and functions evaluate input cell values and return logical 1 values (true) and logical 0 values (false). The relational and Boolean operators all return logical values. In this example, cells are evaluated as to whether their value is greater than 15. The value 1, or logical true, is assigned to those cells that are greater than 15. The value 0, or logical false, is assigned to all other cells. Map Algebra Combinatorial operators * Combinatorial operators combine the attributes of multiple input rasters. These operators find all unique combinations of values and assign a unique ID to each, which is then returned to the output grid. The output VAT will have the Value fields from all the input grids. CAND Operator Map Algebra Functions * The term "functions" might sound like programmers' speak, but whether you realize it or not, you've probably already used them. In the previous module, you derived hillshade, slope, and aspect rasters using choices on the Surface Analysis menu. These choices are simply dialogs that implement Map Algebra functions--programs that perform specific tasks, such as calculating slope. * While you can do a lot through the Spatial Analyst user interface, many more functions are available through Map Algebra. Functions are the major element of the Map Algebra language, and there are over a hundred of them. * The ArcGIS online help system provides a listing of all of the functions and a help topic for each. Here is where you can find a description of what the function does, as well as its syntax. * Most of the functionality available from the Spatial Analyst toolbar are also available as Map Algebra functions. Map Algebra Functions Examples * ASPECT: identifies the direction of maximum rate of change in z value from each cell. * BOUNDARYCLEAN: smoothes the boundary between zones by expanding and shrinking the boundary. * CON: performs one or more conditional if/else evaluations. * EQUALTO: evaluates, on a cell-by-cell basis, the number of times in an argument list that the input grid values are equal to the value specified by the first argument. * GREATERTHAN: evaluates, on a cell-by-cell basis, the number of times in an argument list that the input grid values are greater than the value specified by the first argument. * HILLSHADE: creates a shaded relief grid from a grid by considering the sun illumination angle and shadows. * INT: converts input floating-point values to integer values through truncation. * ISNULL: returns `1' if the input value is NODATA, and `0' if it is not. * LESSTHAN: evaluates, on a cell-by-cell basis, the number of times in an argument list that the input grid values are less than the value specified by the first argument. * MEAN: uses multiple input grids to determine the mean value on a cell-by-cell basis. * MERGE: merges multiple, possibly non-adjacent input grids into a single grid based upon order of input. * MOSAIC: merges multiple adjacent continuous grids and performs interpolation in the overlapping areas. * NIBBLE: replaces areas in a grid corresponding to a mask, with the values of the nearest neighbors. * REGIONGROUP: records for each cell in the output the identity of the connected region to which it belongs. A unique number is assigned to each region. * SETNULL: returns NODATA if the evaluation of the input condition is `TRUE'; if it `FALSE', returns the value specified by the second input argument. * SLICE: `slices' (or changes) a range of values of the input cells by specified ranges, zones of equal area, or zones with equal intervals. * SLOPE: identifies the rate of maximum change in z value from each cell. * ZONALAREA: calculates the area of each zone in the input grid. Building Map Algebra Expressions * You build expressions in the Raster Calculator by typing directly into the expression box, clicking layers in the Layers list, and clicking buttons on the keypad. When you click an element it is added to the expression in the expression box. * If you specify an output grid name in your expression (e.g., NewElev = ), a permanent grid will be created in your working directory. If you do not specify an output name, a grid will be written to your working directory, but the grid will be temporary. * Output grids are either integer or floating point, depending on the expression Raster Calculator Building Expressions Help Building Map Algebra Expressions Building Map Algebra Expressions Building Map Algebra Functions Building Map Algebra Functions Working with NoData * Similar to logical values, NoData values also influence the evaluation of expressions. The NoData value is the only non-zero value that is not interpreted as a true condition. * This special value indicates that there is no information associated with the cell. In general, a Map Algebra expression will return NoData for a cell if any of the corresponding input cells have NoData. In general, Map Algebra expressions assign the value NoData to the output cell if any corresponding input cell is NoData. Summary * While you can do a lot from the Spatial Analyst user interface, most of the power of the Spatial Analyst is found within Map Algebra, which you can access through the Raster Calculator dialog. You can construct a Map Algebra expression using the dialog buttons and controls, or by typing directly into the expression box. The expression processes when you click Evaluate. * Map Algebra is the analysis language for Spatial Analyst. It has a simple syntax similar to any algebra. The inputs to an expression may be as simple as a single raster layer or shapefile, or as complex as a compound expression using many operators, functions, and input data. * With Map Algebra, not only can you access functions not available in the user interface, you can also build complex expressions and process them as a single command. For instance, you can calculate the sine of an input raster dataset or raster layer and add that to two other input raster datasets or raster layers. Like all languages, Map Algebra is defined by rules. By understanding the basic rules, you will be able to use Spatial Analyst in new ways.