Map algebra

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Map algebra is a set-based algebra for manipulating geographic data, proposed by Dr. Dana Tomlin in the early 1980s. It is a set of primitive operations in a geographic information system (GIS) which allows two or more raster layers ("maps") of similar dimensions to produce a new raster layer (map) using algebraic operations such as addition, subtraction etc.

Depending on the spatial neighborhood, GIS transformations are categorized into four classes: local, focal, global, and zonal. Local operations works on individual raster cells, or pixels. Focal operations work on cells and their neighbors, whereas global operations work on the entire layer. Finally, zonal operations work on areas of cells that share the same value. The input and output for each operator being map, the operators can be combined into a procedure or script, to perform complex tasks.[1]

When map algebra is performed in cells from local operations, different types of operations can be used:

  • Arithmetic operations uses basic mathematical functions like addition, subtraction, multiplication and division.
  • Statistical operations uses statistical operations such as minimum, maximum, average and median.
  • Relational operations compares cells using functions such as greater than, smaller than or equal to.
  • Trigonometric operations uses sine, cosine, tangent, arcsine between two or more raster layers.
  • Exponential and logarithmic operations use exponent and logarithm functions.[2]

Several major GIS systems use map algebra concepts, including ERDAS Imagine and ArcGIS. ArcGIS 10 implements Map Algebra in Python; functions are imported Python methods and Python's overloading capability[3] is used for operators. For example, rasters can be multiplied using the "*" arithmetic operator.[4]

Here are some examples, in MapBasic:

# demo for Brown's Pond data set
# Give layers
#  altitude
#  development  0: vacant, 1: major, 2: minor, 3: houses, 4: buildings, 5 cement
#  water  0: dry, 2: wet, 3: pond

# calculate the slope at each location based on altitude
slope = IncrementalGradient of altitude

# identify the areas that are too steep
toosteep = LocalRating of slope
  where 1 replaces 4 5 6
  where VOID replaces ...

# create layer unifying water and development
occupied = LocalRating of development
  where water replaces VOID

notbad = LocalRating of occupied and toosteep
  where 1 replaces VOID and VOID
  where VOID replaces ... and ...

roads = LocalRating of development
  where 1 replaces 1 2
  where VOID replaces ...

nearread = FocalNeighbor of roads at 0 ... 10

aspect = IncrementalAspect of altitude

southface = LocalRating of aspect
  where 1 replaces 135 ... 225
  where VOID replaces ...

sites = LocalMinimum of nearroad and southface and notbad

sitenums = FocalInsularity of sites at 0 ... 1

sitesize = ZonalSum of 1 within sitenums

bestsites = LocalRating of sitesize
  where sitesize replaces 100 ... 300
  where VOID replaces ...

External links[edit]


  1. ^ Longley; et al. Geographic Information Systems and Science. John Wiley & Sons, Inc. pp. 414–7. ISBN 978-0-470-72144-5.
  2. ^ GISGeography. "Map Algebra-Global, Zonal, Focal and Local Functions".
  3. ^ "3.4. Special method names¶". The Python Language Reference. Retrieved 3 May 2015.
  4. ^ Esri, Inc. "ArcGIS 10.0 Help".
  • B. E. Davis GIS: A Visual Approach (2001 Cengage Learning) pp. 249ff.