bionic (1) r.drain.1grass.gz

Provided by: grass-doc_7.4.0-1_all bug

NAME

       r.drain  - Traces a flow through an elevation model or cost surface on a raster map.

KEYWORDS

       raster, hydrology, cost surface

SYNOPSIS

       r.drain
       r.drain --help
       r.drain  [-cand] input=name  [direction=name]  output=name  [drain=name]   [start_coordinates=east,north]
       [start_points=name[,name,...]]   [--overwrite]  [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:
       -c
           Copy input cell values on output

       -a
           Accumulate input values along the path

       -n
           Count cell numbers along the path

       -d
           The input raster map is a cost surface (direction surface must also be specified)

       --overwrite
           Allow output files to overwrite existing files

       --help
           Print usage summary

       --verbose
           Verbose module output

       --quiet
           Quiet module output

       --ui
           Force launching GUI dialog

   Parameters:
       input=name [required]
           Name of input elevation or cost surface raster map

       direction=name
           Name of input movement direction map associated with the cost surface
           Direction in degrees CCW from east

       output=name [required]
           Name for output raster map

       drain=name
           Name for output drain vector map
           Recommended for cost surface made using knight’s move

       start_coordinates=east,north
           Coordinates of starting point(s) (E,N)

       start_points=name[,name,...]
           Name of starting vector points map(s)

DESCRIPTION

       r.drain traces a flow through a least-cost path in an elevation model or cost surface. For cost surfaces,
       a movement direction map must be specified with the direction option and the -d flag to trace a flow path
       following the given directions. Such a movement direction map  can  be  generated  with  r.walk,  r.cost,
       r.slope.aspect  or  r.watershed provided that the direction is in degrees, measured counterclockwise from
       east.

       The output raster map will show one or more least-cost paths between each user-provided  location(s)  and
       the  minima  (low  category values) in the raster input map. If the -d flag is used the output least-cost
       paths will be found using the direction raster map.  By default, the output will be an integer  CELL  map
       with category 1 along the least cost path, and null cells elsewhere.

       With the -c (copy) flag, the input raster map cell values are copied verbatim along the path. With the -a
       (accumulate) flag, the accumulated cell value from the starting point up to the current cell  is  written
       on  output.  With either the -c or the -a flags, the output map is created with the same cell type as the
       input raster map (integer, float or  double).   With  the  -n  (number)  flag,  the  cells  are  numbered
       consecutively  from  the  starting  point  to  the  final  point.   The -c, -a, and -n flags are mutually
       incompatible.

       For an elevation surface, the path is calculated by choosing the steeper "slope" between adjacent  cells.
       The  slope  calculation  accurately  accounts  for  the variable scale in lat-lon projections. For a cost
       surface, the path is calculated by following the movement direction surface back to the start point given
       in  r.walk  or  r.cost.  The  path  search stops as soon as a region border or a neighboring NULL cell is
       encountered, because in these cases the direction can not be determined (the path could continue  outside
       the current region).

       The  start_coordinates  parameter  consists of map E and N grid coordinates of a starting point. Each x,y
       pair is the easting and northing (respectively) of a starting point from which a least-cost corridor will
       be  developed.   The  start_points parameter can take multiple vector maps containing additional starting
       points.  Up to 1024 starting points can  be  input  from  a  combination  of  the  start_coordinates  and
       start_points parameters.

   Explanation of output values
       Consider the following example:
       Input:                          Output:
         ELEVATION SURFACE               LEAST COST PATH
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 19. 20. 18. 19. 16. 15. 15.    .   .   .   .   .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 20| 19| 17. 16. 17. 16. 16.    .   . 1 . 1 . 1 .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 18. 18. 24. 18. 15. 12. 11.    .   .   .   .   . 1 .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 22. 16. 16. 18. 10. 10. 10.    .   .   .   .   . 1 .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 15. 15. 15. 10. 8 . 8 .    .   .   .   .   .   . 1 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 24. 16. 8 . 7 . 8 . 0 . 12.    .   .   .   .   .   . 1 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 9 . 8 . 7 . 8 . 6 . 12.    .   .   .   .   .   .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .

       The  user-provided  starting location in the above example is the boxed 19 in the left-hand map. The path
       in the output shows the least-cost corridor for moving from the starting box  to  the  lowest  (smallest)
       possible point. This is the path a raindrop would take in this landscape.

       With the -c (copy) flag, you get the following result:
       Input:                          Output:
         ELEVATION SURFACE               LEAST COST PATH
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 19. 20. 18. 19. 16. 15. 15.    .   .   .   .   .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 20| 19| 17. 16. 17. 16. 16.    .   . 19. 17. 16.   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 18. 18. 24. 18. 15. 12. 11.    .   .   .   .   . 15.   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 22. 16. 16. 18. 10. 10. 10.    .   .   .   .   . 10.   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 15. 15. 15. 10. 8 . 8 .    .   .   .   .   .   . 8 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 24. 16. 8 . 7 . 8 . 0 .12 .    .   .   .   .   .   . 0 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 9 . 8 . 7 . 8 . 6 .12 .    .   .   .   .   .   .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       Note that the last 0 will not be put in the null values map.

       With the -a (accumulate) flag, you get the following result:
       Input:                          Output:
         ELEVATION SURFACE               LEAST COST PATH
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 19. 20. 18. 19. 16. 15. 15.    .   .   .   .   .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 20| 19| 17. 16. 17. 16. 16.    .   . 19. 36. 52.   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 18. 18. 24. 18. 15. 12. 11.    .   .   .   .   . 67.   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 22. 16. 16. 18. 10. 10. 10.    .   .   .   .   . 77.   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 15. 15. 15. 10. 8 . 8 .    .   .   .   .   .   . 85.   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 24. 16. 8 . 7 . 8 . 0 .12 .    .   .   .   .   .   . 85.   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 9 . 8 . 7 . 8 . 6 .12 .    .   .   .   .   .   .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .

       With the -n (number) flag, you get the following result:
       Input:                          Output:
         ELEVATION SURFACE               LEAST COST PATH
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 19. 20. 18. 19. 16. 15. 15.    .   .   .   .   .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 20| 19| 17. 16. 17. 16. 16.    .   . 1 . 2 . 3 .   .   .   .
       . .  ---  . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 18. 18. 24. 18. 15. 12. 11.    .   .   .   .   . 4 .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 22. 16. 16. 18. 10. 10. 10.    .   .   .   .   . 5 .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 15. 15. 15. 10. 8 . 8 .    .   .   .   .   .   . 6 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 24. 16. 8 . 7 . 8 . 0 .12 .    .   .   .   .   .   . 7 .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       . 17. 9 . 8 . 7 . 8 . 6 .12 .    .   .   .   .   .   .   .   .
       . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . .
       With  the  -d  (direction)  flag,  the  direction raster is used for the input, rather than the elevation
       surface. The output is then created according to one of the -can flags.
       The directions are recorded as degrees CCW from East:
              112.5     67.5         i.e. a cell with the value 135
       157.5  135   90  45   22.5    means the next cell is to the North-West
              180   x   0
       202.5  225  270  315  337.5
              247.5     292.5

NOTES

       If no direction input map is given, r.drain currently finds only the lowest point (the  cell  having  the
       smallest  category  value) in the input file that can be reached through directly adjacent cells that are
       less than or equal in value to the  cell  reached  immediately  prior  to  it;  therefore,  it  will  not
       necessarily  reach  the  lowest point in the input file. It currently finds pits in the data, rather than
       the lowest point in the entire input map. The r.fill.dir, r.terraflow, and r.basins.fill modules  can  be
       used to fill in subbasins prior to processing with r.drain.

       r.drain  will  not give sane results at the region boundary. On outer rows and columns bordering the edge
       of the region, the flow direction is always directly out of the map. In this case,  the  user  could  try
       adjusting the region extents slightly with g.region to allow additional outlet paths for r.drain.

EXAMPLES

   Path to the lowest point
       In  this example we compute drainage paths from two given points following decreasing elevation values to
       the lowest point.  We are using the full North Carolina sample dataset.  First we create the  two  points
       from  a  text  file  using  v.in.ascii  module (here the text file is CSV and we are using unix here-file
       syntax with EOF, in GUI just enter the values directly for the parameter input):
       v.in.ascii input=- output=start format=point separator=comma <<EOF
       638667.15686275,220610.29411765
       638610.78431373,220223.03921569
       EOF
       Now we compute the drainage path:
       r.drain input=elev_lid792_1m output=drain_path drain=drain start_points=start
       Before we visualize the result, we set a color table for the elevation we  are  using  and  we  create  a
       shaded relief map:
       r.colors map=elev_lid792_1m color=elevation
       r.relief input=elev_lid792_1m output=relief
       Finally we visualize all the input and output data:
       d.shade shade=relief color=elev_lid792_1m
       d.vect map=drain_path color=0:0:61 width=4 legend_label="drainage paths"
       d.vect map=start color=none fill_color=224:0:0 icon=basic/circle size=15 legend_label=origins
       d.legend.vect -b
       Figure: Drainage paths from two points flowing into the points with lowest values

   Path following directions
       To  continue  flow  even  after it hits a depression, we need to supply a direction raster map which will
       tell the r.drain module how to continue from  the  depression.  To  get  these  directions,  we  use  the
       r.watershed module:
       r.watershed elevation=elev_lid792_1m accumulation=accum drainage=drain_dir
       The directions are categorical and we convert them to degrees using raster algebra:
       r.mapcalc "drain_deg = if(drain_dir != 0, 45. * abs(drain_dir), null())"
       Together  with directions, we need to provide the r.drain module with cost values. We don’t have any cost
       to assign to specific cells, so we create a constant surface:
       r.mapcalc "const1 = 1"
       Now we are ready to compute the drainage paths.  We are using the two points from the previous example.
       r.drain -d input=const1 direction=drain_deg output=drain_path_2 drain=drain_2 start_points=start
       We visualize the result in the same way as in the previous example.
       Figure: Drainage paths from two points where directions from r.watershed were used

KNOWN ISSUES

       Sometimes, when the differences among integer cell category values in the r.cost cumulative cost  surface
       output are small, this cumulative cost output cannot accurately be used as input to r.drain (r.drain will
       output bad results).  This problem can be circumvented by making the differences  between  cell  category
       values  in  the  cumulative cost output bigger. It is recommended that if the output from r.cost is to be
       used as input to r.drain, the user multiply the r.cost input cost surface map by the value of  the  map’s
       cell resolution, before running r.cost. This can be done using r.mapcalc. The map resolution can be found
       using g.region.  This problem doesn’t arise with floating point maps.

SEE ALSO

        g.region, r.cost, r.fill.dir, r.basins.fill, r.watershed, r.terraflow, r.mapcalc, r.walk

AUTHORS

       Completely rewritten by Roger S. Miller, 2001
       July 2004 at WebValley 2004, error checking and vector points added by Matteo Franchi (Liceo Leonardo  Da
       Vinci, Trento) and Roberto Flor (ITC-irst, Trento, Italy)

       Last changed: $Date: 2017-11-24 02:35:37 +0100 (Fri, 24 Nov 2017) $

SOURCE CODE

       Available at: r.drain source code (history)

       Main index | Raster index | Topics index | Keywords index | Graphical index | Full index

       © 2003-2018 GRASS Development Team, GRASS GIS 7.4.0 Reference Manual