I wonder if there is a way to perform an operation similar to r.carve, but instead of carving in the stream based on the low elevation on the extremes of a line, it fills a barrier based on the high elevation of the extremes of a line. The purpose is hydrology, to play with the streams to change the stream network.

  • Did you try to just use a negative value for the depth parameter?
    – markusN
    Sep 12, 2020 at 17:18

1 Answer 1


I would:

  1. digitize (as a vector) the line that you want to carve
  2. and give it an attribute column "height" with the value you want to add as a barrier
  3. Then convert to raster, where the height column is used to set the raster cell values. (all other cells will be null)
  4. You need to use r.null to set all other cells to zero (instead of NULL)
  5. and finally use r.mapcalc to add it to the elevation raster.
  • The nice part of r.carve is that it reads the elevation data at both ends, so it gives us a bit more than just defining a height of a digitized line
    – Marco
    Sep 3, 2020 at 15:00
  • I though about i) inverting the elevation (negative elevations), ii) perform the r.carve and iii) inverting back the result of elevation. I think it should work, but I am always struggling with the raster malipulation, so I have not tried
    – Marco
    Sep 3, 2020 at 15:02

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.