I would like to extract lakes and sea from a DEM (SRTM) and save them as a separate layer.

Is this possible?

I have tried to extract flat areas with the Raster Calculator, but that did not work.


You need to extract the slope first from the DEM using the Raster -> Terrain Analysis -> Slope OR Raster -> Analysis -> DEM (Terrain Models). Then use the slope raster to extract the lakes or sea where the slope = 0

Using Raster Calculator, it will be like this:

"Slope@1" = 0 

Where "Slope@1" is the raster name. So The general form is "RasterName@1" = 0

Here is the input:

enter image description here

Here is the output after applying the above expression:

enter image description here

The green color is the lakes extracted from the slope raster.

  • the additional step would be vectorisation of of the raster so you get the lakes as a vector layer – LaughU Jul 19 '17 at 5:42
  • @LaughU Thanks for your input. I forgot to mention this in my answer. – ahmadhanb Jul 19 '17 at 6:50
  • 1
    This might give you false results, since there are also flat areas (slope=0) that are not lakes or water – Miron Jul 19 '17 at 7:31
  • 1
    @Miron Are you down voting because there are other areas that could be flat without being lake or sea. This is true, but if you have better automatic solution with zero error I am glad to see it. The OP can easily filter lakes/sea by different ways, which is out of this scope. – ahmadhanb Jul 19 '17 at 7:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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