Provided by: grass-doc_6.4.3-3_all 

NAME
r.terraflow - Flow computation for massive grids (float version).
KEYWORDS
raster, hydrology
SYNOPSIS
r.terraflow
r.terraflow help
r.terraflow [-sq] elevation=name filled=name direction=name swatershed=name accumulation=name tci=name
[d8cut=float] [memory=integer] [STREAM_DIR=string] [stats=string] [--overwrite] [--verbose]
[--quiet]
Flags:
-s
SFD (D8) flow (default is MFD)
-q
Quiet
--overwrite
Allow output files to overwrite existing files
--verbose
Verbose module output
--quiet
Quiet module output
Parameters:
elevation=name
Name of elevation raster map
filled=name
Name for output filled (flooded) elevation raster map
direction=name
Name for output flow direction raster map
swatershed=name
Name for output sink-watershed raster map
accumulation=name
Name for output flow accumulation raster map
tci=name
Name for output topographic convergence index (tci) raster map
d8cut=float
Routing using SFD (D8) direction
If flow accumulation is larger than this value it is routed using SFD (D8) direction (meaningfull
only for MFD flow)
Default: infinity
memory=integer
Maximum runtime memory size (in MB)
Default: 300
STREAM_DIR=string
Directory to hold temporary files (they can be large)
stats=string
Name of file containing runtime statistics
Default: stats.out
DESCRIPTION
r.terraflow takes as input a raster digital elevation model (DEM) and computes the flow direction raster
and the flow accumulation raster, as well as the flooded elevation raster, sink-watershed raster
(partition into watersheds around sinks) and tci (topographic convergence index) raster.
r.terraflow computes these rasters using well-known approaches, with the difference that its emphasis is
on the computational complexity of the algorithms, rather than on modeling realistic flow. r.terraflow
emerged from the necessity of having scalable software able to process efficiently very large terrains.
It is based on theoretically optimal algorithms developed in the framework of I/O-efficient algorithms.
r.terraflow was designed and optimized especially for massive grids and is able to process terrains which
were impractical with similar functions existing in other GIS systems.
Flow directions are computed using either the MFD (Multiple Flow Direction) model or the SFD (Single Flow
Direction, or D8) model, illustrated below. Both methods compute downslope flow directions by inspecting
the 3-by-3 window around the current cell. The SFD method assigns a unique flow direction towards the
steepest downslope neighbor. The MFD method assigns multiple flow directions towards all downslope
neighbors.
Flow direction to steepest
downslope neighbor (SFD). Flow direction to all
downslope neighbors (MFD).
The SFD and the MFD method cannot compute flow directions for cells which have the same height as all
their neighbors (flat areas) or cells which do not have downslope neighbors (one-cell pits).
On plateaus (flat areas that spill out) r.terraflow routes flow so that globally the flow goes towards
the spill cells of the plateaus. On sinks (flat areas that do not spill out, including one-cell pits)
r.terraflow assigns flow by flooding the terrain until all the sinks are filled and assigning flow
directions on the filled terrain.
In order to flood the terrain, r.terraflow identifies all sinks and partitions the terrain into sink-
watersheds (a sink-watershed contains all the cells that flow into that sink), builds a graph
representing the adjacency information of the sink-watersheds, and uses this sink-watershed graph to
merge watersheds into each other along their lowest common boundary until all watersheds have a flow path
outside the terrain. Flooding produces a sink-less terrain in which every cell has a downslope flow path
leading outside the terrain and therefore every cell in the terrain can be assigned SFD/MFD flow
directions as above.
Once flow directions are computed for every cell in the terrain, r.terraflow computes flow accumulation
by routing water using the flow directions and keeping track of how much water flows through each cell.
If flow accumulation of a cell is larger than the value given by the d8cut option, then the flow of this
cell is routed to its neighbors using the SFD (D8) model. This option affects only the flow accumulation
raster and is meaningful only for MFD flow (i.e. if the -s flag is not used); If this option is used for
SFD flow it is ignored. The default value of d8cut is infinity.
r.terraflow also computes the tci raster (topographic convergence index, defined as the logarithm of the
ratio of flow accumulation and local slope).
For more details on the algorithms see [1,2,3] below.
NOTES
One of the techniques used by r.terraflow is the space-time trade-off. In particular, in order to avoid
searches, which are I/O-expensive, r.terraflow computes and works with an augmented elevation raster in
which each cell stores relevant information about its 8 neighbors, in total up to 80B per cell. As a
result r.terraflow works with intermediate temporary files that may be up to 80N bytes, where N is the
number of cells (rows x columns) in the elevation raster (more precisely, 80K bytes, where K is the
number of valid (not no-data) cells in the input elevation raster).
All these intermediate temporary files are stored in the path specified by the STREAM_DIR option. Note:
STREAM_DIR must contain enough free disk space in order to store up to 2 x 80N bytes.
The memory option can be used to set the maximum amount of main memory (RAM) the module will use during
processing. In practice its value should be an underestimate of the amount of available (free) main
memory on the machine. r.terraflow will use at all times at most this much memory, and the virtual memory
system (swap space) will never be used. The default value is 300 MB.
The internal type used by r.terraflow to store elevations can be defined at compile-time. By default,
r.terraflow is compiled to store elevations internally as floats. A version which is compiled to store
elevations internally as shorts is available as r.terraflow.short. Other versions can be created by the
user if needed.
r.terraflow.short uses less space (up to 60B per cell, up to 60N intermediate file) and therefore is more
space and time efficient. r.terraflow is intended for use with floating point raster data (FCELL), and
r.terraflow.short with integer raster data (CELL) in which the maximum elevation does not exceed the
value of a short SHRT_MAX=32767 (this is not a constraint for any terrain data of the Earth, if elevation
is stored in meters).
Both r.terraflow and r.terraflow.short work with input elevation rasters which can be either integer,
floating point or double (CELL, FCELL, DCELL). If the input raster contains a value that exceeds the
allowed internal range (short for r.terraflow.short, float for r.terraflow), the program exits with a
warning message. Otherwise, if all values in the input elevation raster are in range, they will be
converted (truncated) to the internal elevation type (short for r.terraflow.short, float for
r.terraflow). In this case precision may be lost and artificial flat areas may be created.
For instance, if r.terraflow.short is used with floating point raster data (FCELL or DCELL), the values
of the elevation will be truncated as shorts. This may create artificial flat areas, and the output of
r.terraflow.short may be less realistic than those of r.terraflow on floating point raster data. The
outputs of r.terraflow.short and r.terraflow are identical for integer raster data (CELL maps).
The stats option defines the name of the file that contains the statistics (stats) of the run. The
default name is stats.out (in the current directory).
EXAMPLES
Spearfish sample data set:
g.region rast=elevation.10m -p
r.terraflow elev=elevation.10m filled=elevation10m.filled \
dir=elevation10m.mfdir swatershed=elevation10m.watershed \
accumulation=elevation10m.accu tci=elevation10m.tci
g.region rast=elevation.10m -p
r.terraflow elev=elevation.10m filled=elevation10m.filled \
dir=elevation10m.mfdir swatershed=elevation10m.watershed \
accumulation=elevation10m.accu tci=elevation10m.tci d8cut=500 memory=800 \
stats=elevation10mstats.txt
SEE ALSO
r.flow, r.basins.fill, r.drain, r.topidx, r.topmodel, r.water.outlet, r.watershed
AUTHORS
Original version of program: The <a
href="http://www.cs.duke.edu/geo*/terraflow/">TerraFlow project, 1999, Duke University.
Lars Arge, Jeff Chase, Pat Halpin, Laura Toma, Dean Urban, Jeff Vitter, Rajiv Wickremesinghe.
Porting for GRASS, 2002:
Lars Arge, Helena Mitasova, Laura Toma.
Contact: Laura Toma
REFERENCES
1
The TerraFlow project at Duke University
2 <A NAME="arge:drainage"
HREF="http://www.cs.duke.edu/geo*/terraflow/papers/alenex00_drainage.ps.gz"> I/O-efficient
algorithms for problems on grid-based terrains. Lars Arge, Laura Toma, and Jeffrey S. Vitter. In
Proc. Workshop on Algorithm Engineering and Experimentation, 2000. To appear in Journal of
Experimental Algorithms.
3 <A NAME="terraflow:acmgis01"
HREF="http://www.cs.duke.edu/geo*/terraflow/papers/acmgis01_terraflow.pdf"> Flow computation on
massive grids. Lars Arge, Jeffrey S. Chase, Patrick N. Halpin, Laura Toma, Jeffrey S. Vitter,
Dean Urban and Rajiv Wickremesinghe. In Proc. ACM Symposium on Advances in Geographic Information
Systems, 2001.
4 <A NAME="terraflow:geoinformatica"
HREF="http://www.cs.duke.edu/geo*/terraflow/papers/journal_terraflow.pdf"> Flow computation on
massive grid terrains. Lars Arge, Jeffrey S. Chase, Patrick N. Halpin, Laura Toma, Jeffrey S.
Vitter, Dean Urban and Rajiv Wickremesinghe. In GeoInformatica, International Journal on Advances
of Computer Science for Geographic Information Systems, 7(4):283-313, December 2003.
Last changed: $Date: 2011-11-08 03:29:50 -0800 (Tue, 08 Nov 2011) $
Full index
© 2003-2013 GRASS Development Team
GRASS 6.4.3 r.terraflow(1grass)