I'm not specialist in hydrology, and I would be very grateful if you answer my question:

What is flow accumulation in hydrology? Why algorithms used to calculate it over a raster DEM don't take rainfall rate into consideration? For example when I use richdem python library to plot flow accumulation what is the range and unit of values shown ?


1 Answer 1


The flow accumulation algorithm essentially determines the upstream contributing area of every grid cell; in other words, what area or how many other cells will drain into a given cell. The flow accumulation algorithm is independent of rainfall as it simply determines which areas drain where, which will later be used to determine how much water actually flows based on the rainfall event and the area on which the rain actually occurs. However, the first step is just to figure out the flow directions.

The flow accumulation is typically done as part of a series of algorithms with a given DEM to determine where the river network exists and what the catchment boundaries are. This type of analysis is required in order to delineate watersheds (i.e. determine where the watershed boundaries are and how large they are) and create the building blocks for a hydrologic model, which is used to simulate the rainfall-runoff response and flows at given points, among other processes.

The flow accumulation algorithm typically used is the D8 algorithm, although if you look into the literature there are lots of versions and variations on determining flow accumulation. I am not familiar with the richdem python algorithm, but the units will be some measure of either upstream contributing area or number of upstream units in every grid cell. You will notice that the areas downstream and near outlets of watersheds have higher values, indicating that those areas receive larger contributing areas from the rest of the watershed. The next step in the analysis, likely a flow network tool, will use the grid cells with the largest flow accumulation values to determine the existence of a river network based on high accumulation values (with some value as a threshold).

The ESRI page has a good discussion on how flow accumulation works as well.


Watershed delineation can be done automatically from a DEM layer, and there are a huge number of tools to do so. Here are some tutorials and guides with GIS software, other tools exist in R or python (as you pointed out).

ArcGIS Watershed Delineation Tutorial with Arc 10.2

QGIS Watershed Delineation Example

Note that prior to the use of DEM tools, contour maps would be used to delineate watersheds by hand. This is done essentially by drawing outlines which cross contours perpendicularly through high areas, and encompass the watershed. A couple examples of that here for you as well. Note that these will not have flow accumulation since that cannot be done easily by hand, that is only a step using the computational tools.

US Department of Agriculture Example

Miscellaneous contour example and slides

  • $\begingroup$ Thank you so much Rob :) $\endgroup$
    – Nour
    Commented Apr 8, 2019 at 19:19
  • 1
    $\begingroup$ Please Rob; can you give a practical example on how to use flow network and thresholding to predict flood occurence ? $\endgroup$
    – Nour
    Commented Apr 9, 2019 at 14:01
  • $\begingroup$ Added some examples to the answer provided above. Flood occurrence is a separate question, but the watershed delineation examples (using automatic delineation tools) do go through the flow accumulation and deriving stream networks. $\endgroup$
    – Rob
    Commented Apr 9, 2019 at 14:22
  • $\begingroup$ Thanks alot 👍🏻 $\endgroup$
    – Nour
    Commented Apr 9, 2019 at 18:57
  • 1
    $\begingroup$ Of course, the flow accumulation is only as good as the accuracy of the DEM. This is a particular problem when the catchment divide is relatively flat, which can lead to some significant errors. $\endgroup$
    – haresfur
    Commented Apr 9, 2019 at 21:47

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.