Flood extent and flood depths

I am trying to create a flood inundation map in QGIS from known flood volumes at specific points across a raster DEM. I could potentially do this manually for each individual point using contours surrounding the point and estimating the volume of the contours until the contour volume equals the flood volume. However, these would be very tedious, so I'm looking for a tool that would do this automatically.

The attached picture describes what I'm trying to do, except that I am assuming that the water surface elevation is constant for simplicity. I'd apply a volume at a point on a DEM of the ground surface, and would like to extract the flood extent / depths based on that volume.

  • 1
    Can you not just assume a water surface elevation and compute the volume, then iterate until you approach your target volume? Or is your question "How do I compute the volume of a region of a DEM given a water surface elevation?"
    – Jon
    Mar 23, 2020 at 15:04
  • 1
    Jon, your answer seems like what I may need to do. However, I am looking for a tool that will do this for me automatically because there are many different points, and it would be very time consuming to do this manually. Mar 24, 2020 at 12:31
  • 1
    If you can use Python (or R), I think it'd be relatively easy to automate. (1) Draw polygons around your flooded regions and (2) append their volumes as attributes. (3) Using shapely/geopandas, iterate through each polygon, (4) use rasterstats to grab the DEM of the polygon, (5) then write a simple while or for loop to compute volumes for different elevations. I don't know of any tools that would do this out of the box, but I use Python for most of my GIS processing.
    – Jon
    Mar 24, 2020 at 14:13
  • 1
    This is rather simple task, but I do it in ArcGis and Python. Let me know if of interest I'll post a workflow and script.
    – FelixIP
    Mar 28, 2020 at 8:52

1 Answer 1


This might not be something that could solve your problem at once but it might help you further. I modeled such a thing by using GRASS GIS r.plane. Here you could define your water surface level as a (virtual) plane and subtract this from your DEM to estimate the total volume of water.

You might need to define a plane for each point but that depends on your water shed area. You can set a computational region with r.region.


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.