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() )))
The ${seedmap}
variable is replaced by seed map names, ${dem}
with DEM map name, and ${wlevel}
with target water level. To get
single water level, this code block is
called with same level numerous times (in a loop) as the lake grows by single cells
during single run.
r.lake -n
cannot be used
as input in the next run.g.region raster=elev_lid792_1m -p # water accumulation next to street dam r.lake elev_lid792_1m coordinates=638759.3,220264.1 water_level=113.4 lake=flooding # draw resulting lake map over shaded terrain map r.relief input=elev_lid792_1m output=elev_lid792_1m_shade d.rast elev_lid792_1m_shade d.rast flooding d.vect streets_wake