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.


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.


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


  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).
  • duplicate? gis.stackexchange.com/questions/49727/…
    – Mapperz
    Commented Sep 3, 2014 at 13:55
  • 1
    related, but not exactly duplicate. my input is a volume of water, not only a rise in meters
    – HC Haase
    Commented Sep 4, 2014 at 7:28
  • don't anyone have an opinion on this matter??
    – HC Haase
    Commented Sep 24, 2014 at 7:19

2 Answers 2


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.


Thanks for sharing that idea. I thought about a similar case few month ago but let it rest so far because I also didn't have a clue (was more aiming at using discharge amount of a river as input param). I think your approach is quite interesting, because it is very generic.

Just a few thoughts from my side:

  • If your model floods a previously flooded area such as a river, you might want to have a clear idea on what is your reference level, you fill water on. If your model tells you, releasing an amount x of water has the effect of rising the water level to DEM height y. Then this is not true in nature, if your current water level did change compared to your model.
  • The slope of your terrain is a crucial factor to consider in terms of the model bias. E.g. lets imagine, your terrain is an empty top-down cone (eg. sink, karst, whatever) with 45 degree of slope. If you calculate the content of your first polygon, in 1m height, you get an (polygon) area of PI m^2. You use it to approximise the volume your area will hold, which is then PI m^3 according to your assumption (your step 3). The real content of your cone is actually just PI/3 m^3. This results in an underestimation of your model by 66% in this special case! In words: you assume, putting PI m^3 of water will result in a water level of 1m. Actually the water level will be much higher, as you just need PI/3 m^3 to reach a water level of 1m in your cone. What I want to say is, you should make the intervals at which to calculate intermediate polygons (I think your step 4) dependent on terrain slope to achieve a more accurate approximation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.