The module produces two vector maps: one representing original segments (where a segment is a streamline where its order remains unchanged) and the second divided into near straight line sectors resulting form segmentation process. Most of the segment and sectors attributes are the same as in r.stream.order vector output.
The main idea comes from works of Horton (1932) and Howard (1971, 1990). The module is designed to investigate network lineaments and calculate angle relations between tributaries and its major streams. The main problem in calculating directional parameters is that streams usually are not straight lines. Therefore as the first step of the procedure, partitioning of streams into near-straight-line segments is required.
The segmentation process uses a method similar to the one used by Van & Ventura (1997) to detect corners and partition curves into straight lines and gentle arcs. Because it is almost impossible to determine exactly straight sections without creating numerous very short segments, the division process requires some approximation. The approximation is made based on three parameters: (1) the downstream/upstream search length, (2) the short segment skipping threshold, and (3) the maximum angle between downstream/upstream segments to be considered as a straight line. In order to designate straight sections of the streams, the algorithm is searching for those points where curves significantly change their direction. The definition of stream segments depends on the ordering method selected by the user, Strahler's, Horton's or Hack's main stream, or the network may remain unordered. All junctions of streams to streams of higher order are always split points, but for ordered networks, streams of higher order may be divided into sections which ignore junctions with streams of lower order. In unordered networks all junctions are always split points. In extended mode the module also calculates the direction of a stream to its higher order stream. If the higher order stream begins at the junction with the current stream (Strahler's ordering only) or if the network is unordered, the direction is calculated as the direction of the line between junction point and downstream point (Howard 1971) within the user-defined global search distance. If a higher order stream continues at the junction, its direction is calculated as the direction of the tangent line to the stream of higher order at the junction point. To avoid local fluctuation, the tangent line is approximated as a secant line joining downstream/upstream points at a distance globally defined by the search length parameter (1). Such a definition of the angle between streams is not fully compatible with Horton's original criterion.
The module can work only if direction map, stream_rast map and region have the same settings. It is also required that stream_rast map and direction map come from the same source. For lots of reason this limitation probably cannot be omitted. This means that if stream_rast map comes from r.stream.extract, also direction map from r.stream.extract must be used. If stream_rast network was generated with MFD method, also MFD direction map must be used.
g.region -p -a raster=elevation r.watershed elevation=elevation threshold=10000 drainage=direction stream=streams r.stream.order stream_vect=streams direction=direction strahler=riverorder_strahler r.stream.segment stream_rast=riverorder_strahler direction=direction \ elevation=elevation segments=river_segment sectors=river_sector
Horton, R. E., (1932). Drainage basin characteristics: Am. Geophys. Union Trans., (3), 350-361.
Howard, A.D. (1971). Optimal angles of stream junction: Geometric, Stability to capture and Minimum Power Criteria, Water Resour. Res. 7(4), 863-873.
Howard, A.D. (1990). Theoretical model of optimal drainage networks Water Resour. Res., 26(9), 2107-2117.
Van, W., Ventura, J.A. (1997). Segmentation of Planar Curves into Straight-Line Segments and Elliptical Arcs, Graphical Models and Image Processing 59(6), 484-494.
See also r.streams.* modules wiki page.
Available at: r.stream.segment source code (history)
Latest change: Monday Jun 28 12:12:08 2021 in commit: c967a5befb428e1a91830b73179e093b248c68f5
Main index | Raster index | Topics index | Keywords index | Graphical index | Full index
© 2003-2023 GRASS Development Team, GRASS GIS 7.8.9dev Reference Manual