r.watershed.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521
  1. <h2>DESCRIPTION</h2>
  2. <em>r.watershed</em> generates a set of maps indicating:
  3. 1) flow accumulation, drainage direction, the location of streams and watershed basins, and
  4. 2) the LS and S factors of the Revised Universal Soil Loss Equation (RUSLE).
  5. <p>
  6. <!-- Interactive mode not activated in GRASS 7.
  7. <em>r.watershed</em> can be run either interactively or non-interactively.
  8. The interactive version of
  9. <em>r.watershed</em> can prepare inputs to lumped-parameter hydrologic models.
  10. After a verbose interactive session, <em>r.watershed</em> will query the user
  11. for a number of
  12. map layers. Each map layer's values will be tabulated by watershed basin and sent
  13. to an output file. This output file is organized to ease data entry into a
  14. lumped-parameter hydrologic model program. The non-interactive version of
  15. <em>r.watershed</em> cannot create this file.
  16. -->
  17. <h2>OPTIONS</h2>
  18. <dl>
  19. <dt><em>-m</em>
  20. <dd>Without this flag set, the entire analysis is run in memory
  21. maintained by the operating system. This can be limiting, but is
  22. very fast. Setting this flag causes the program to manage memory
  23. on disk which allows very large maps to be processed but is slower.
  24. <dt><em>-s</em>
  25. <dd>Use single flow direction (SFD, D8) instead of multiple flow direction (MFD).
  26. MFD is enabled by default.
  27. <dt><em>-4</em>
  28. <dd>Allow only horizontal and vertical flow of water.
  29. Stream and slope lengths are approximately the same as outputs from default
  30. surface flow (allows horizontal, vertical, and diagonal flow of water).
  31. This flag will also make the drainage basins look more homogeneous.
  32. <dt><em>-a</em>
  33. <dd>Use positive flow accumulation even for likely underestimates. When this
  34. flag is not set, cells with a flow accumulation value that is likely to be
  35. an underestimate are converted to the negative. See below for a detailed
  36. description of flow accumulation output.
  37. <dt><em>memory</em>
  38. <dd>Maximum amount of memory in MB to be used with -m set. More memory
  39. speeds up the processes.
  40. <dt><em>convergence</em>
  41. <dd>Convergence factor for MFD. Lower values result in higher divergence,
  42. flow is more widely distributed. Higher values result in higher convergence,
  43. flow is less widely distributed, becoming more similar to SFD.
  44. <dt><em>elevation</em>
  45. <dd>Input map: Elevation on which entire analysis is based. NULL (nodata)
  46. cells are ignored, zero and negative values are valid elevation data.
  47. Gaps in the elevation map that are located within the area of interest
  48. must be filled beforehand, e.g. with <em>r.fillnulls</em>, to avoid
  49. distortions.
  50. <dt><em>depression</em>
  51. <dd>Input map: Map layer of actual depressions or sinkholes in the
  52. landscape that are large enough to slow and store surface runoff from
  53. a storm event. All cells that are not NULL and not zero indicate
  54. depressions. Water will flow into but not out of depressions.
  55. <dt><em>flow</em>
  56. <dd>Input map: amount of overland flow per cell. This map indicates the
  57. amount of overland flow units that each cell will contribute to the
  58. watershed basin model. Overland flow units represent the amount of
  59. overland flow each cell contributes to surface flow. If omitted, a
  60. value of one (1) is assumed.
  61. <dt><em>disturbed_land</em>
  62. <dd>Raster map input layer or value containing the percent of disturbed
  63. land (i.e., croplands, and construction sites) where the raster or input
  64. value of 17 equals 17%. If no map or value is given, <em>r.watershed</em>
  65. assumes no disturbed land. This input is used for the RUSLE calculations.
  66. <dt><em>blocking</em>
  67. <dd>Input map: terrain that will block overland surface flow. Terrain
  68. that will block overland surface flow and restart the slope length
  69. for the RUSLE. All cells that are not NULL and not zero indicate blocking
  70. terrain.
  71. <dt><em>threshold</em>
  72. <dd>The minimum size of an exterior watershed basin in cells, if no flow
  73. map is input, or overland flow units when a flow map is given.
  74. Warning: low threshold values will dramactically increase run time and
  75. generate difficult to read basin and half_basin results.
  76. This parameter also controls the level of detail in the <em>stream</em>
  77. segments map.
  78. <dt><em>max_slope_length</em>
  79. <dd>Input value indicating the maximum length of overland surface flow
  80. in meters. If overland flow travels greater than the maximum length,
  81. the program assumes the maximum length (it assumes that landscape
  82. characteristics not discernible in the digital elevation model exist
  83. that maximize the slope length). This input is used for the RUSLE calculations
  84. and is a sensitive parameter.
  85. <dt><em>accumulation</em>
  86. <dd>Output map: The absolute value of each cell in this output map layer is
  87. the amount of overland flow that traverses the cell. This value will be
  88. the number of upland cells plus one if no overland flow map is given. If
  89. the overland flow map is given, the value will be in overland flow units.
  90. Negative numbers indicate that those cells possibly have surface runoff
  91. from outside of the current geographic region. Thus, any cells with
  92. negative values cannot have their surface runoff and sedimentation yields
  93. calculated accurately.
  94. <dt><em>tci</em>
  95. <dd>Output map: The topographic index TCI is computed as
  96. <em>ln(&alpha; / tan(&beta;))</em> where &alpha; a is the cumulative
  97. uplsope area draining through a point per unit contour length and
  98. tan(&beta;) is the local slope angle. The TCI reflects the tendency of
  99. water to accumulate at any point in the catchment and the tendency for
  100. gravitaional forces to move that water downslope (Quinn et al. 1991).
  101. This value will be negative if &alpha; / tan(&beta;) &lt; 1.
  102. <dt><em>drainage</em>
  103. <dd>Output map: drainage direction. Provides the "aspect" for each
  104. cell measured CCW from East. Multiplying positive values by 45 will give
  105. the direction in degrees that the surface runoff will travel from that
  106. cell. The value 0 (zero) indicates that the cell is a depression area
  107. (defined by the depression input map). Negative values indicate that
  108. surface runoff is leaving the boundaries of the current geographic
  109. region. The absolute value of these negative cells indicates the
  110. direction of flow.
  111. <dt><em>basin</em>
  112. <dd>Output map: Unique label for each watershed basin. Each basin will
  113. be given a unique positive even integer. Areas along edges may not
  114. be large enough to create an exterior watershed basin. 0 values
  115. indicate that the cell is not part of a complete watershed basin
  116. in the current geographic region.
  117. <dt><em>stream</em>
  118. <dd>Output map: stream segments. Values correspond to the watershed
  119. basin values. Can be vectorized after thinning (<em>r.thin</em>) with
  120. <em>r.to.vect</em>.
  121. <dt><em>half_basin</em>
  122. <dd>Output map: each half-basin is given a unique value. Watershed
  123. basins are divided into left and right sides. The right-hand side
  124. cell of the watershed basin (looking upstream) are given even values
  125. corresponding to the values in basin. The left-hand side
  126. cells of the watershed basin are given odd values which are one less
  127. than the value of the watershed basin.
  128. <dt><em>length_slope</em>
  129. <dd>Output map: slope length and steepness (LS) factor for the Revised
  130. Universal Soil Loss Equation (RUSLE). Equations taken from <em>Revised
  131. Universal Soil Loss Equation for Western Rangelands</em>
  132. (Weltz et al. 1987). Since the LS factor is a small number (usually less
  133. than one), the GRASS output map is of type DCELL.
  134. <dt><em>slope_steepness</em>
  135. <dd>Output map: slope steepness (S) factor for the Universal Soil
  136. Loss Equation (RUSLE). Equations taken from article entitled
  137. <em>Revised Slope Steepness Factor for the Universal Soil
  138. Loss Equation</em> (McCool et al. 1987). Since the S factor is a small
  139. number (usually less than one), the GRASS output map is of type DCELL.
  140. </dd>
  141. </dl>
  142. <h2>NOTES</h2>
  143. <h3>A<sup>T</sup> least-cost search algorithm</h3>
  144. <em>r.watershed</em> uses an A<sup>T</sup> least-cost search algorithm
  145. (see <a href="#references">REFERENCES</a> section) designed to minimize
  146. the impact of DEM data errors. Compared to <em>r.terraflow</em>, this
  147. algorithm provides more accurate results in areas of low slope as well
  148. as DEMs constructed with techniques that mistake canopy tops as the
  149. ground elevation. Kinner et al. (2005), for example, used SRTM and IFSAR
  150. DEMs to compare <em>r.watershed</em> against <em>r.terraflow</em>
  151. results in Panama. <em>r.terraflow</em> was unable to replicate stream
  152. locations in the larger valleys while <em>r.watershed</em> performed
  153. much better. Thus, if forest canopy exists in valleys, SRTM, IFSAR, and
  154. similar data products will cause major errors in <em>r.terraflow</em>
  155. stream output. Under similar conditions, <em>r.watershed</em> will
  156. generate better <b>stream</b> and <b>half_basin</b> results. If
  157. watershed divides contain flat to low slope, <em>r.watershed</em>
  158. will generate better basin results than <em>r.terraflow</em>.
  159. (<em>r.terraflow</em> uses the same type of algorithm as ESRI's ArcGIS
  160. watershed software which fails under these conditions.) Also, if watershed
  161. divides contain forest canopy mixed with uncanopied areas using SRTM, IFSAR,
  162. and similar data products, <em>r.watershed</em> will generate better basin
  163. results than <em>r.terraflow</em>.
  164. The algorithm produces results similar to those obtained when running
  165. <em><a href="r.cost.html">r.cost</a></em> and
  166. <em><a href="r.drain.html">r.drain</a></em> on every cell on the map.
  167. <h3>Multiple flow direction (MFD)</h3>
  168. <em>r.watershed</em> offers two methods to calculate surface flow:
  169. single flow direction (SFD, D8) and multiple flow direction (MFD). With
  170. MFD, water flow is distributed to all neighbouring cells with lower
  171. elevation, using slope towards neighbouring cells as a weighing factor
  172. for proportional distribution. The A<sup>T</sup> least-cost path is
  173. always included. As a result, depressions and obstacles are traversed
  174. with a gracefull flow convergence before the overflow. The convergence
  175. factor causes flow accumulation to converge more strongly with higher
  176. values. The supported range is 1 to 10, recommended is a convergence
  177. factor of 5 (Holmgren, 1994). If many small sliver basins are created
  178. with MFD, setting the convergence factor to a higher value can reduce
  179. the amount of small sliver basins.
  180. <h3>In-memory mode and disk swap mode</h3>
  181. There are two versions of this program: <em>ram</em> and <em>seg</em>.
  182. <em>ram</em> is used by default, <em>seg</em> can be used by setting
  183. the <em>-m</em> flag.
  184. <br>
  185. The <em>ram</em> version requires a maximum of 31 MB of RAM for 1 million
  186. cells. Together with the amount of system memory (RAM) available, this
  187. value can be used to estimate whether the current region can be
  188. processed with the <em>ram</em> version.
  189. <br>
  190. The <em>ram</em> version uses virtual memory managed by the operating
  191. system to store all the data structures and is faster than the <em>seg</em>
  192. version; <em>seg</em> uses the GRASS segmentation library which manages
  193. data in disk files. <em>seg</em> uses only as much system memory (RAM) as
  194. specified with the <em>memory</em> option, allowing other processes to
  195. operate on the same system, even when the current geographic region is huge.
  196. <br>
  197. Due to memory requirements of both programs, it is quite easy to run out of
  198. memory when working with huge map regions. If the <em>ram</em> version runs
  199. out of memory and the resolution size of the current geographic region
  200. cannot be increased, either more memory needs to be added to the computer,
  201. or the swap space size needs to be increased. If <em>seg</em> runs out of
  202. memory, additional disk space needs to be freed up for the program to run.
  203. The <em>r.terraflow</em> module was specifically designed with huge
  204. regions in mind and may be useful here as an alternative, although disk
  205. space requirements of <em>r.terraflow</em> are several times higher than
  206. of <em>seg</em>.
  207. <h3>Large regions with many cells</h3>
  208. The upper limit of the <em>ram</em> version is 2 billion
  209. (2<sup>31</sup> - 1) cells, whereas the upper limit for the <em>seg</em>
  210. version is 9 billion billion (2<sup>63</sup> - 1) cells.<br>
  211. In some situations, the region size (number of cells) may be too large for
  212. the amount of time or memory available. Running <em>r.watershed</em> may
  213. then require use of a coarser resolution. To make the results more closely
  214. resemble the finer terrain data, create a map layer containing the
  215. lowest elevation values at the coarser resolution. This is done by:
  216. 1) Setting the current geographic region equal to the elevation map
  217. layer with <em>g.region</em>, and 2) Use the <em>r.neighbors</em> or
  218. <em>r.resamp.stats</em> command to find the lowest value for an area
  219. equal in size to the desired resolution. For example, if the resolution
  220. of the elevation data is 30 meters and the resolution of the geographic
  221. region for <em>r.watershed</em> will be 90 meters: use the minimum
  222. function for a 3 by 3 neighborhood. After changing to the resolution at
  223. which <em>r.watershed</em> will be run, <em>r.watershed</em> should be run
  224. using the values from the <em>neighborhood</em> output map layer that
  225. represents the minimum elevation within the region of the coarser cell.
  226. <h3>Basin threshold</h3>
  227. The minimum size of drainage basins, defined by the <em>threshold</em>
  228. parameter, is only relevant for those watersheds with a single stream
  229. having at least the <em>threshold</em> of cells flowing into it.
  230. (These watersheds are called exterior basins.)
  231. Interior drainage basins contain stream segments below multiple tributaries.
  232. Interior drainage basins can be of any size because the length of
  233. an interior stream segment is determined by the distance between the
  234. tributaries flowing into it.
  235. <h3>MASK and no data</h3>
  236. <p>
  237. The <em>r.watershed</em> program does not require the user to have the
  238. current geographic region filled with elevation values. Areas without
  239. elevation data (masked or NULL cells) are ignored. It is NOT necessary to
  240. create a raster map (or raster reclassification) named <tt>MASK</tt> for
  241. NULL cells. Areas without elevation data will be treated as if they are
  242. off the edge of the region. Such areas will reduce the memory necessary
  243. to run the program. Masking out unimportant areas can significantly
  244. reduce processing time if the watersheds of interest occupy a small
  245. percentage of the overall area.
  246. <p>
  247. Gaps (NULL cells) in the elevation map that are located within the area
  248. of interest will heavily influence the analysis: water will
  249. flow into but not out of these gaps. These gaps must be filled beforehand,
  250. e.g. with <em>r.fillnulls</em>.
  251. <p>
  252. Zero (0) and negative values will be treated as elevation data (not no_data).
  253. <h3>Further processing of output layers</h3>
  254. <p>
  255. Problem areas, i.e. those parts of a basin with a likely underestimate of
  256. flow accumulation, can be easily identified with e.g.
  257. <div class="code"><pre>
  258. r.mapcalc "problems = if(flow_acc &lt; 0, basin, null())"
  259. </pre></div>
  260. If the region of interest contains such problem areas, and this is not
  261. desired, the computational region must be expanded until the catchment
  262. area for the region of interest is completely included.
  263. <p>
  264. To isolate an individual river network using the output of this module,
  265. a number of approaches may be considered.
  266. <ol>
  267. <li>Use a resample of the basins catchment raster map as a MASK.<br>
  268. The equivalent vector map method is similar using <em>v.select</em> or
  269. <em>v.overlay</em>.
  270. <li>Use the <em>r.cost</em> module with a point in the river as a starting
  271. point.
  272. <li>Use the <em>v.net.iso</em> module with a node in the river as a
  273. starting point.
  274. </ol>
  275. All individual river networks in the stream segments output can be
  276. identified through their ultimate outlet points. These points are all
  277. cells in the stream segments output with negative drainage direction.
  278. These points can be used as start points for <em>r.water.outlet</em> or
  279. <em>v.net.iso</em>.
  280. <p>
  281. To create <i>river mile</i> segmentation from a vectorized streams map,
  282. try the <em>v.net.iso</em> or <em>v.lrs.segment</em> modules.
  283. <p>
  284. The stream segments output can be easily vectorized after thinning with
  285. <em>r.thin</em>. Each stream segment in the vector map will have the
  286. value of the associated basin. To isolate subbasins and streams for a
  287. larger basin, a MASK for the larger basin can be created with
  288. <em>r.water.outlet</em>. The stream segments output serves as a guide
  289. where to place the outlet point used as input to <em>r.water.outlet</em>.
  290. The basin threshold must have been sufficiently small to isolate a
  291. stream network and subbasins within the larger basin.
  292. <h2>EXAMPLES</h2>
  293. <i>These examples use the Spearfish sample dataset.</i>
  294. <p>
  295. Convert <em>r.watershed</em> streams map output to a vector layer.
  296. <p>
  297. If you want a detailed stream network, set the threshold option
  298. small to create lots of catchment basins, as only one stream is
  299. presented per catchment. The r.to.vect -v flag preserves the
  300. catchment ID as the vector category number.
  301. <div class="code"><pre>
  302. r.watershed elev=elevation.dem stream=rwater.stream
  303. r.to.vect -v in=rwater.stream out=rwater_stream
  304. </pre></div>
  305. <br>
  306. <p>
  307. Set a different color table for the accumulation map:
  308. <div class="code"><pre>
  309. MAP=rwater.accum
  310. r.watershed elev=elevation.dem accum=$MAP
  311. eval `r.univar -g "$MAP"`
  312. stddev_x_2=`echo $stddev | awk '{print $1 * 2}'`
  313. stddev_div_2=`echo $stddev | awk '{print $1 / 2}'`
  314. r.colors $MAP col=rules &lt;&lt; EOF
  315. 0% red
  316. -$stddev_x_2 red
  317. -$stddev yellow
  318. -$stddev_div_2 cyan
  319. -$mean_of_abs blue
  320. 0 white
  321. $mean_of_abs blue
  322. $stddev_div_2 cyan
  323. $stddev yellow
  324. $stddev_x_2 red
  325. 100% red
  326. EOF
  327. </pre></div>
  328. <br>
  329. <p>
  330. Create a more detailed stream map using the accumulation map and convert
  331. it to a vector output map. The accumulation cut-off, and therefore fractal
  332. dimension, is arbitrary; in this example we use the map's mean number of
  333. upstream catchment cells (calculated in the above example by <em>r.univar</em>)
  334. as the cut-off value. This only works with SFD, not with MFD.
  335. <div class="code"><pre>
  336. r.watershed elev=elevation.dem accum=rwater.accum
  337. r.mapcalc 'MASK = if(!isnull(elevation.dem))'
  338. r.mapcalc "rwater.course = \
  339. if( abs(rwater.accum) > $mean_of_abs, \
  340. abs(rwater.accum), \
  341. null() )"
  342. r.colors -g rwater.course col=bcyr
  343. g.remove MASK
  344. # <i>Thinning is required before converting raster lines to vector</i>
  345. r.thin in=rwater.course out=rwater.course.Thin
  346. r.colors -gn rwater.course.Thin color=grey
  347. r.to.vect in=rwater.course.Thin out=rwater_course feature=line
  348. v.db.dropcolumn map=rwater_course column=label
  349. </pre></div>
  350. <!-- can't set line attribute to catchment it is in as v.what.rast and
  351. v.distance only work for point features. Could create endpoint node
  352. points map and upload to that ?? -->
  353. <!-- Note value column containing accumulation cells in output vector
  354. may not necessarily reference the downstream end of the line! drop it? -->
  355. <br>
  356. <p>
  357. Create watershed basins map and convert to a vector polygon map
  358. <div class="code"><pre>
  359. r.watershed elev=elevation.dem basin=rwater.basin thresh=15000
  360. r.to.vect -s in=rwater.basin out=rwater_basins feature=area
  361. v.db.dropcolumn map=rwater_basins column=label
  362. v.db.renamecolumn map=rwater_basins column=value,catchment
  363. </pre></div>
  364. <br>
  365. <p>
  366. Display output in a nice way
  367. <div class="code"><pre>
  368. r.shaded.relief map=elevation.dem
  369. d.shadedmap rel=elevation.dem.shade drape=rwater.basin bright=40
  370. d.vect rwater_course color=orange
  371. </pre></div>
  372. <br>
  373. <a name="references"></a>
  374. <h2>REFERENCES</h2>
  375. Ehlschlaeger C. (1989). <i>Using the A<sup>T</sup> Search Algorithm
  376. to Develop Hydrologic Models from Digital Elevation Data</i>,
  377. <b>Proceedings of International Geographic Information Systems (IGIS)
  378. Symposium '89</b>, pp 275-281 (Baltimore, MD, 18-19 March 1989).<br>
  379. URL: <a href="http://chuck.ehlschlaeger.info/older/IGIS/paper.html">
  380. http://chuck.ehlschlaeger.info/older/IGIS/paper.html</a>
  381. <p>
  382. Holmgren P. (1994). <i>Multiple flow direction algorithms for runoff
  383. modelling in grid based elevation models: An empirical evaluation.</i>
  384. <b>Hydrological Processes</b> Vol 8(4), 327-334.<br>
  385. DOI: <a href="http://dx.doi.org/10.1002/hyp.3360080405">10.1002/hyp.3360080405</a>
  386. <p>
  387. Kinner D., Mitasova H., Harmon R., Toma L., Stallard R. (2005).
  388. <i>GIS-based Stream Network Analysis for The Chagres River Basin,
  389. Republic of Panama</i>. <b>The Rio Chagres: A Multidisciplinary Profile of
  390. a Tropical Watershed</b>, R. Harmon (Ed.), Springer/Kluwer, p.83-95.<br>
  391. URL: <a href="http://skagit.meas.ncsu.edu/%7Ehelena/measwork/panama/panama.html">
  392. http://skagit.meas.ncsu.edu/~helena/measwork/panama/panama.html</a>
  393. <p>
  394. McCool et al. (1987). <i>Revised Slope Steepness Factor for the Universal
  395. Soil Loss Equation</i>, <b>Transactions of the ASAE</b> Vol 30(5).
  396. <p>
  397. Metz M., Mitasova H., Harmon R. (2011). <i>Efficient extraction of
  398. drainage networks from massive, radar-based elevation models with least
  399. cost path search</i>, <b>Hydrol. Earth Syst. Sci.</b> Vol 15, 667-678.<br>
  400. DOI: <a href="http://dx.doi.org/10.5194/hess-15-667-2011">10.5194/hess-15-667-2011</a>
  401. <p>
  402. Quinn P., K. Beven K., Chevallier P., Planchon O. (1991). <i>The
  403. prediction of hillslope flow paths for distributed hydrological modelling
  404. using Digital Elevation Models</i>, <b>Hydrological Processes</b> Vol 5(1),
  405. p.59-79.<br>
  406. DOI: <a href="http://dx.doi.org/10.1002/hyp.3360050106">10.1002/hyp.3360050106</a>
  407. <p>
  408. Weltz M. A., Renard K.G., Simanton J. R. (1987). <i>Revised Universal Soil
  409. Loss Equation for Western Rangelands</i>, <b>U.S.A./Mexico Symposium of
  410. Strategies for Classification and Management of Native Vegetation for
  411. Food Production In Arid Zones</b> (Tucson, AZ, 12-16 Oct. 1987).
  412. <a name="seealso"></a>
  413. <h2>SEE ALSO</h2>
  414. <em>
  415. <a href="g.region.html">g.region</a>,
  416. <a href="r.cost.html">r.cost</a>,
  417. <a href="r.drain.html">r.drain</a>,
  418. <a href="r.fillnulls.html">r.fillnulls</a>,
  419. <a href="r.flow.html">r.flow</a>,
  420. <!-- <a href="r.flowmd.html">r.flowmd</a>, -->
  421. <a href="r.mask.html">r.mask</a>,
  422. <a href="r.neighbors.html">r.neighbors</a>,
  423. <a href="r.param.scale.html">r.param.scale</a>,
  424. <a href="r.resamp.interp.html">r.resamp.interp</a>,
  425. <a href="r.terraflow.html">r.terraflow</a>,
  426. <a href="r.topidx.html">r.topidx</a>,
  427. <a href="r.water.outlet.html">r.water.outlet</a>
  428. </em>
  429. <h2>AUTHORS</h2>
  430. Original version:
  431. Charles Ehlschlaeger, U.S. Army Construction Engineering Research Laboratory
  432. <br>
  433. Faster sorting algorithm and MFD support:
  434. Markus Metz &lt;markus.metz.giswork at gmail.com&gt;
  435. <p>
  436. <i>Last changed: $Date$</i>