Opened 9 years ago

Closed 5 years ago

#2719 closed defect (invalid)

r.watershed + D8 (unexpected results)

Reported by: 180875 Owned by: grass-dev@…
Priority: normal Milestone: 7.0.7
Component: Raster Version: svn-trunk
Keywords: r.watershed Cc: Jörg, Robl
CPU: x86-64 Platform: Linux

Description (last modified by martinl)

Dear GRASS Gurus,

During the last days I've discovered a strange behaviour of r.watershed and D8. The used DEM is the result from a landscape evolution model and there are no depressions. I cannot use MFD as the D8-FlowDirections input data of a variety of tools I’ve written during the last years.

I got obviously wrong values for the flow accumulation of r.watershed and D8. The number of cells in the Flow Accumulation grid at the outlet point was significantly smaller than the area of the analyzed catchment (spatial resolution in north south and east west direction is 1) also computed with GRASS using r.water.outlet and a conversion to Vector (Area). I checked Flow Accumulation at the the outlet with an alternative code of a colleague and the contributing drainage area was exactly the value of the catchment size computed with r.water.outlet.

I further found some deviations in the flow direction grid. In some cases the flow routing leads to the lowest neighbouring cell which however might not be the steepest decent. r.watershed chooses sometimes a diagonal flow direction while the local channel gradient would be greater in horizontal direction. I started some test runs with very simple geometries. I've defined a ramp with r.mapcalc that dips in north direction and I expected that this will also be shown by the flow direction of r.watershed. However, this is not the case. The synthetic DEM features a watershed!!! See attachment. It seems that r.watershed fills the region (without need). This strange behavior disappears by applying the "multiple flow direction" algorithm.

I have tested with the latest versions grass70 , grass71 and grass645. Here is a test simple test case (grass71) that documents the misbehavior of r.watershed and D8.

g.region w=0 e=1000 s=0 n=1000 res=1 -p
r.mapcalc "DEM = 1000 - y()"
r.watershed -s elevation=DEM@PERMANENT accumulation=ACC drainage=DIR

Attachments (1)

acc.png (14.0 KB ) - added by 180875 9 years ago.
Flow Accumulation of the case (ramp)

Download all attachments as: .zip

Change History (11)

by 180875, 9 years ago

Attachment: acc.png added

Flow Accumulation of the case (ramp)

comment:1 by martinl, 9 years ago

Description: modified (diff)
Keywords: r.watershed added
Milestone: 7.0.1

comment:2 by neteler, 8 years ago

Milestone: 7.0.17.0.3
Version: unspecifiedsvn-trunk

in reply to:  description ; comment:3 by mmetz, 8 years ago

Replying to 180875:

Dear GRASS Gurus,

During the last days I've discovered a strange behaviour of r.watershed and D8. The used DEM is the result from a landscape evolution model and there are no depressions. I cannot use MFD as the D8-FlowDirections input data of a variety of tools I’ve written during the last years.

I got obviously wrong values for the flow accumulation of r.watershed and D8. The number of cells in the Flow Accumulation grid at the outlet point was significantly smaller than the area of the analyzed catchment (spatial resolution in north south and east west direction is 1) also computed with GRASS using r.water.outlet and a conversion to Vector (Area). I checked Flow Accumulation at the the outlet with an alternative code of a colleague and the contributing drainage area was exactly the value of the catchment size computed with r.water.outlet.

This could only happen if the catchment is not fully covered by the DEM. In this case, edge cells are not contributing to the catchment because for edge cells it is not possible to say where the drain to.

I further found some deviations in the flow direction grid. In some cases the flow routing leads to the lowest neighbouring cell which however might not be the steepest decent. r.watershed chooses sometimes a diagonal flow direction while the local channel gradient would be greater in horizontal direction. I started some test runs with very simple geometries. I've defined a ramp with r.mapcalc that dips in north direction and I expected that this will also be shown by the flow direction of r.watershed. However, this is not the case. The synthetic DEM features a watershed!!! See attachment. It seems that r.watershed fills the region (without need). This strange behavior disappears by applying the "multiple flow direction" algorithm.

I have tested with the latest versions grass70 , grass71 and grass645. Here is a test simple test case (grass71) that documents the misbehavior of r.watershed and D8.

g.region w=0 e=1000 s=0 n=1000 res=1 -p
r.mapcalc "DEM = 1000 - y()"
r.watershed -s elevation=DEM@PERMANENT accumulation=ACC drainage=DIR

The correction for diagonal flow bias missed two special cases. Fixed in trunk r67189, please test.

in reply to:  3 comment:4 by mlennert, 8 years ago

Replying to mmetz:

Replying to 180875:

I further found some deviations in the flow direction grid. In some cases the flow routing leads to the lowest neighbouring cell which however might not be the steepest decent. r.watershed chooses sometimes a diagonal flow direction while the local channel gradient would be greater in horizontal direction. I started some test runs with very simple geometries. I've defined a ramp with r.mapcalc that dips in north direction and I expected that this will also be shown by the flow direction of r.watershed. However, this is not the case. The synthetic DEM features a watershed!!! See attachment. It seems that r.watershed fills the region (without need). This strange behavior disappears by applying the "multiple flow direction" algorithm.

I have tested with the latest versions grass70 , grass71 and grass645. Here is a test simple test case (grass71) that documents the misbehavior of r.watershed and D8.

g.region w=0 e=1000 s=0 n=1000 res=1 -p
r.mapcalc "DEM = 1000 - y()"
r.watershed -s elevation=DEM@PERMANENT accumulation=ACC drainage=DIR

The correction for diagonal flow bias missed two special cases. Fixed in trunk r67189, please test.

I tested with above test case and the results now seem coherent (i.e. homogenous direction and accumulation from top to bottom).

comment:5 by neteler, 8 years ago

Milestone: 7.0.3

Ticket retargeted after milestone closed

comment:6 by neteler, 8 years ago

Milestone: 7.0.4

Ticket retargeted after 7.0.3 milestone closed

comment:7 by martinl, 8 years ago

Milestone: 7.0.47.0.5

comment:8 by neteler, 8 years ago

Milestone: 7.0.57.0.6

comment:9 by neteler, 6 years ago

Milestone: 7.0.67.0.7

comment:10 by martinl, 5 years ago

Resolution: invalid
Status: newclosed
Note: See TracTickets for help on using tickets.