Very often catchment delineations are required for several processes in hydrological analysis. The GIS offers a lot of flexible tools in order to derive these products, using as main input a Digital Elevation Model (DEM) of a study area. Several tools are available to achieve this purpose, even tools not directly related to GIS like Matlab or Python scripts, but definitely GIS applications are the most widely used in these kind of tasks.
In this very short and basic tutorial I will show you how to delineate a catchment using as main income a DEM from ASTER and a point feature, also indirectly other products like the accumulation flow raster and the drainage direction raster will be derived, yet these are not the main points of this exercise.
We will start with a DEM for a region in Europe downloaded directly from the ASTER-DEM website it must be pointed, that prior to the utilization of this information, it must be reprojected into UTM coordinates, since the ASTER products are delivered using a geographic coordinates. In this case I am using the reprojected information into UTM ellipsoid WGS84, zone 31 North.
We can summarize the steps for catchment delineation as follows:
These steps are a generic scheme, which I had used it does not necessarily mean that it is correct a-priori, and It will depend in a number of external factors. Yet, I will follow the described logic since I have experience following that order.
Filling the voids
With a naked eye, the following DEM does not seem to have holes/gaps were information could be missing or be erroneous:
Yet, sometimes due to a number of factors, DEM includes artifacts and errors which can give us troubles when delineating the catchments. For this reason, it is necessary, first to ‘fill’ the DEM in order to avoid later errors.
The objective of this step is to turn the DEM into a ‘hydrologically correct’ DEM which means that the sinks which can alter the water flow in our study area have been filled and hence the streams and other products will be correct or at least will behave logically according to hydrological rules, like water always flowing downstream and not disappearing into false sinks.
The correction is done in QGIS using the GRASS tool r.fill.dir which filters and generates a depressionless elevation raster with a given input DEM (GRASS GIS, 2016).
The only required input is the DEM to be processed (Elevation) and the outputs are: the corrected DEM (Depressionless DEM) the flow direction raster (Flow direction) and the identified areas with problems (Problem areas), as we need only the corrected DEM, the other outputs can be unselected and the algorithm run. [The algorithm parameters are indicated in parentheses and if a parameter is not mentioned it should be left as it comes by default].
After running the algorithm, a new layer is created with the filled DEM which we will use in the following steps.
Deriving the flow direction and flow accumulation rasters
With the filled DEM, we can now derive the flow direction and accumulation rasters using the GRASS GIS tool r.watershed tool. This tool allows the calculation of several parameters which in turn can be used to perform several other analyses, in our case we will use it only to derive the flow accumulation and direction rasters.
As you can realize, this tool presents a lot of inputs and outputs, but we will focus only in a couple of them. As input (Elevation), we will use we will use the corrected DEM, then we will skip the parameters until the ‘Minimum size of exterior watershed basin’ which in order to run the tool it requires to be filled.
This parameter determines the minimum size of a catchment in order to be identified by the algorithm, in other words it defines the minimum size of an individual basin to be considered as an individual entity, if it is too small, the basin will be merged with the contiguous basins, until the minimum size if completed. This parameter can be tricky to define and it depends on several factors like the desired minimum size of our catchment, the DEM’s pixel size and so on. But in this case, since we do not want to derive the basins using this tool, we need to find a value in order to run the tool. You can try with values, for example 1000 and the run the tool, if it crashes try with another number. Obviously this tool is very useful, and deeper analysis is required, but in this case since we need the rasters we will omit the details. In any case a lot information is available for the tool if further details are required.
Then, the rest of parameters are left blank/default and we move to the outputs. Untick all the outputs but the rasters: ‘Number of cells that drain through each cell’ which defines the flow accumulation raster and the ‘Drainage direction’ which defines the flow direction raster. Define a correct name and path and execute the tool.
Depending on the size of your study area and pixel size, the execution of the tool will take more or less time, take that into account when using extensive DEMs.
The final product should be 2 rasters: the flow accumulation and flow direction, which after the execution of the tool will be automatically loaded into the map view.
NOTE: for some reason, the flow direction generated with the r.fill.dir tool cannot be used in the following steps, for that reason the drainage direction raster must be generated using instead the r.watershed tool as described in the previous section.
Define the outlet
So far we have corrected the DEM, and derived the drainage direction raster which are the inputs we need for this step.
The drainage direction should look like this:
While the ‘Number of cells that drain through each cell’ or flow accumulation raster will look initially totally black:
But after modifying the visualization properties, readjusting the real minimum and maximum values to be displayed, the appearance will change to:
As you can notice, in the flow accumulation raster, some patterns are now noticeable, in summary this raster represents the number of cells or pixels which, because of their location, drain towards each pixel. In this way seems logical to think that the pixels located in the lower parts (valley bottoms) will show the highest values of pixels flowing into them if compared with the pixels of the upper parts where the accumulation values will be low. You can check this inquiring some values across the recently defined raster.
Being not part of this tutorial a deep explanation about the particular meaning and interpretation of these rasters I will stop here, and continue to the next steps. Just keep in mind that you need both the Drainage direction and flow accumulation rasters in order to continue to the next step.
Normally, when delineating catchments, the closing points are known, for example you have a sampling point, discharge point, or a hydrological station and the you want to define the area draining to that point.
In order to obtain the delineation of a catchment draining towards a particular point, the tool r.water.outlet from GRASS GIS is used. To use this tool, you require the drainage direction raster and the coordinates of the closing point:
NOTE: The coordinates must be expressed in the same units as the map.
The use of this tool is very straightforward and once the Drainage raster and the coordinates are indicated, the tool can be directly run. As result, the tool produces a raster containing all the pixels draining towards the indicated pixel (coordinates).
In the previous figure, the result is shown for a specified coordinate within my study area, the delineated catchment appears in blue.
With the catchment delineated, as you can realize, it is a raster layer. Usually before using it, it is required to vectorize it (in order to calculate the area/perimeter for example), which can be easily done using the r.to.vect tool from GRASS GIS. The final results should look as follows.
In green you can see the delineated catchment.
Conclusion and tips
Coming next: Stream network delineation and the batch mode in QGIS.
Written by: Marlon Calispa