[GIS] Simplified flood “model” / estimation from elevation data

demfloodqgis

The goal is to present an estimation of potential flooded area. But still keeping it simple.

I know this will not be accurate. The question is:

  • will it be good enough for at gestimate / rough guideline? I am aware this is a crude method.

I am using QGIS.

Output

I want to create flood area polygons of n m^3 of water. e.g. polygons showing the max. area that will be flooded if xx m^3 water is released.

Input

  • raster DEM
  • m^3 of water to be released

Process

  1. convert DEM raster layer to polygons based on elevation (in steps on 1m because of the DEM resolution).
  2. set the area of the polygons as an attribute
  3. create an volume attribute (area * 1m^3) to get an estimate of how much water the area will hold.
  4. optionally rescaling the polygons to get estimations for volumes lesser than the polygon but greater than the "inner" smaller polygon (e.g. in fractions of 10).

Best Answer

I can think of a very simple iterative solution.

Given a DEM and a 'seed' point, use the flood fill algorithm to fill pixels below an arbitrarily selected start elevation. Modify the algorithm to compute the flooded volume above each pixel and return the sum of these volumes. This is (roughly) the total flooded volume at that elevation. If the volume is less than the input volume, fill again at a higher elevation until you reach the target. You can refine the process (reduce the step elevation) so that it approaches the target volume to within some tolerance.

Polygonize the flooded region to create a polygon and associate the volume with it, as an attribute.

It seems like a bit of a Rube Goldberg solution, but flood fill is so simple and efficient that in practice, unless you're filling the Great Lakes at 2m resolution, it would take little time to get results. I used a similar strategy for this.

Finally: I've never used Surfer, but my hydrologist friends seem to use it for everything. It can probably do this easily.