This allows e.g. to decrease the number of streams in dry areas and increase the number of streams in wet areas by setting weight to smaller than 1 in dry areas and larger than 1 in wet areas.
Another possibility is to restrict channel initiation to valleys determined from terrain morphology. Valleys can be determined with r.param.scale param=crosc (cross-sectional or tangential curvature). Curvature values < 0 indicate concave features, i.e. valleys. The size of the processing window determines whether narrow or broad valleys will be identified (See example below).
# set region g.region -p rast=elev_ned_30m@PERMANENT # calculate flow accumulation r.watershed ele=elev_ned_30m@PERMANENT acc=elevation.10m.acc # curvature to get narrow valleys r.param.scale input=elev_ned_30m@PERMANENT output=tangential_curv_5 size=5 param=crosc # curvature to get a bit broader valleys r.param.scale input=elev_ned_30m@PERMANENT output=tangential_curv_7 size=7 param=crosc # curvature to get broad valleys r.param.scale input=elev_ned_30m@PERMANENT output=tangential_curv_11 size=11 param=crosc # create weight map r.mapcalc "weight = if(tangential_curv_5 < 0, -100 * tangential_curv_5, \ if(tangential_curv_7 < 0, -100 * tangential_curv_7, \ if(tangential_curv_11 < 0, -100 * tangential_curv_11, 0.000001)))" # weigh accumulation map r.mapcalc "elev_ned_30m.acc.weighed = elev_ned_30m.acc * weight" # copy color table from original accumulation map r.colors map=elev_ned_30m.acc.weighed raster=elev_ned_30m.accDisplay both the original and the weighed accumulation map.
# extract streams r.stream.extract elevation=elev_ned_30m@PERMANENT \ accumulation=elev_ned_30m.acc.weighed \ threshold=1000 \ stream_rast=elev_ned_30m.streams # extract streams using the original accumulation map r.stream.extract elevation=elev_ned_30m@PERMANENT \ accumulation=elev_ned_30m.acc \ threshold=1000 \ stream_rast=elev_ned_30m.streams.noweight
Last changed: $Date$