I have two 3D Raster surfaces which are flood height surfaces for two different flood heights. They each have XYZ coordinates. I now wish to generate a third surface BETWEEN these two surfaces at particular heights related to the Reference Flood Gauge. Can anyone advise what would be a suitable method?

Surface(top) is the flood surface at a level (say) 10.2m on the gauge and surface(bottom) is at (say) 7.68m. The surfaces extend many kilometres upstream and downstream and are (certainly) not parallel to each other (i.e. the height difference at each Raster point is (mostly) different from the next Raster point).

And I want to end up with a “smooth” looking interpolated surface (i.e. there should be no unusual “peaks” relative to the other surrounding points.

I also have a third Raster layer being the DEM for the ground surface.

  • How are non-flooded points represented in your data? For example, an island within the flooded region?
    – Llaves
    Commented Apr 18, 2021 at 13:20
  • There are no non-flooded points in either layer.
    – Fred Spain
    Commented Apr 19, 2021 at 10:00

2 Answers 2


Raster Calculator. Try something like:

(layer1@Z + layer2@Z) / 2.0

That just calculates the average of the two layers, and isn't very interesting (just calculates the middle surface.

l1@Z + k(l2@Z-l1@Z)    , k in [0,1] 

is more flexible. Set k to give various height values between the layers. For example, if l1 is 4 and l2 is 10 and you want 8,

k = (8-4)/(10 - 4) = 0.66666

two-thirds the way between the two surfaces.

  • By using the above method, I end up with somewhat of an irregular water surface. That is, some water “peaks” relative to the surrounding points. I’m after a “smooth” water surface.
    – Fred Spain
    Commented Apr 19, 2021 at 10:02
  • Yes, I misunderstood your two surfaces. Apologies for that.
    – wingnut
    Commented Apr 19, 2021 at 12:10
  • Actually, I think this method does work. After further inspection, I can live with the small “peaks” in the new water surface. The grid I am working with is at 20meter intervals over a floodplain.
    – Fred Spain
    Commented Apr 20, 2021 at 22:50

The answer from @wingnut does not account for points which are above water at the lower level but below water for the higher level. I do no think a simple point-by-point raster calculation will address these points. You will need a two-phase process. In phase 1 you compute the interpolated value of wingnut's solution for points that are flooded in both cases. You then will need to use something like a brushfire algorithm to extend the flooded region to points that were above water level at the lower level, but are below water level at the interpolated height. Note that it is not sufficient to just compare the DEM height to the interpolated height because 1), water level is not a constant value, so what height do you use? and 2) the water must have a continuous path to that point in which all points are below the water level. Without this latter condition, levees and the like would have no impact on your model.

The brushfire algorithm could rapidly become very complex if the rising water allows the water to flow down a new channel. As you move farther away from the edge of the interpolated surface, you need to decide what water level to use for the next point as the water level is not constant.

  • How would I be able to use a Brushfire algorithm in QGIS to accomplish the extrapolation / extension you mention?
    – Fred Spain
    Commented Apr 19, 2021 at 10:08

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.