Is there a way to calculate from the DEM the total perimeter of all lakes (+reservoirs, etc.)? In other words, I need to calculate the total length of lake banks and so far could only determine the total lakes area, which is of no use in this case.
Is there a way to calculate from the DEM the total perimeter of all lakes (+reservoirs, etc.)? In other words, I need to calculate the total length of lake banks and so far could only determine the total lakes area, which is of no use in this case.
From a DEM directly? No, not that I know. How would you determine what is a lake, and what is a flat land area? How did you get the area?? Furthermore, sometimes lakes have a slight slope...
Maybe have a look at r.param.scale:
r.param.scale in=dem out=terrain param=feature s_tol=0.01
(or some other very small value)
This creates terrain features: peaks, channels, saddles and flat areas. The s_tol (slope tolerance) sets how flat an area needs to be before it's classified as flat.
Once you have devised a method to identify the lakes, then convert those raster areas to a vector, and the v.to.db module will give you the perimeter.
It would go something like: