The module fills a lake to a target water level from a given start point. The user can think of it as r.grow with additional checks for elevation. The resulting raster map contains cells with values representing lake depth and NULL for all other cells beyond the lake. Lake depth is reported relative to specified water level (specified level = 0 depth).
This module uses a 3x3 moving window approach to find all cells that match three criteria and to define the lake:
The water level must be in DEM units.
The module will create a new map (lake=foo) or can be set to replace the input (seed=bar) map if the -o flag is used. The user can use -o flag to create animations of rising water level without producing a separate map for each frame. An initial seed map must be created to start the sequence, and will be overwritten during subsequent runs with resulting water levels maps (i.e., a single file serves for both input and output).
Negative output (the -n flag) is useful for visualisations in NVIZ. It equals the mapcalc's expression "negative = 0 - positive".
${seedmap} = if( ${dem}, \ if( if( isnull(${seedmap}),0,${seedmap}>0), ${wlevel}-${dem}, \ if( \ if(isnull(${seedmap}[-1,0]),0, ${seedmap}[-1,0]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[-1,1]),0, ${seedmap}[-1,1]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[0,1]), 0, ${seedmap}[0,1]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[1,1]), 0, ${seedmap}[1,1]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[1,0]), 0, ${seedmap}[1,0]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[1,-1]),0, ${seedmap}[1,-1]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[0,-1]),0, ${seedmap}[0,-1]>0 && ${wlevel}>${dem}) ||\ if(isnull(${seedmap}[-1,-1]),0, ${seedmap}[-1,-1]>0 && ${wlevel}>${dem}),\ ${wlevel}-${dem}, null() )))
g.region rast=elev_lid792_1m -p # water accumulation next to street dam r.lake elev_lid792_1m xy=638759.3,220264.1 wl=113.4 lake=flooding # draw resulting lake map over shaded terrain map r.shaded.relief elev_lid792_1m d.rast elev_lid792_1m.shade d.rast -o flooding d.vect streets_wake d.vect bldg_cmcl_pol type=area
Last changed: $Date$