I followed @Micha's instruction and successfully used the modules in GRASS.

I use r.watershed to get the basin raster and the drainage line: enter image description here

and I use r.water.outlet to get the watershed of one outlet: enter image description here

I got the whole basin area of the green outlet point, but all I want is the little part of the original basin area, like this:part B is what I want enter image description here

This schematic photo shows the idea of what I want: enter image description here

Can I achieve this goal using r.water.outlet or other modules in GRASS? Or all I can do is using the intersect tool in Geoprocessing tools in QGIS?

I want to find the watershed area, but using QGIS.

I have following files to work with:

  1. stream network shapefile(polyline)
  2. point shapefile clipped from the polyline shapefile
  3. a whole island(the stream is inside the island) DEM(I got 2 types:.lan & .tiff)

I want to find the total watershed area located upstream of every point in the network, here's the schematic diagram:

enter image description here

the green, red, and yellow line enclose the watershed of each point(here I only take 3 points as the example), and I want to calculate their area.

I already got the DEM file, and I must cut the region that contains the stream off, should I polygonize it first?

Can I directly use this form(.lan or .tiff) to work with GRASS?


3 Answers 3


You will definitely need an elevation raster (DEM) to do what you want. With the DEM you can use two GRASS modules to get individual drainage areas for points along the river network as follows: First calculate a flow direction grid from the DEM with r.watershed:

r.watershed elev=DEM thresh=<your threshold> drain=flow_dir_grid

See the r.watershed manual for more details Next loop thru the X-Y values of the points along the river network to calculate each watershed with the r.water.outlet module.

r.water.outlet drain=flow_dir_grid basin=basin1 easting=X1 northing=Y1

Details in the r.water.outlet manu page

For doing the loop, you might be able to get some ideas in this post

  • now I am using r.watershed and having this problem:gis.stackexchange.com/questions/83795/…
    – Heinz
    Commented Jan 24, 2014 at 6:39
  • 1
    I seems, from the error you linked to, that you are trying to use the tif format directly. That's not how GRASS works. You first import the tiff raster into GRASS using the r.in.gdal module. Then use that GRASS raster in the r.watershed command.
    – Micha
    Commented Jan 25, 2014 at 12:21
  • Thanks again! But I used to use GRASS in gui form in sextante toolbox under QGIS interface, and I could not find the r.in.gdal module in the toolbox, how can I do to successfully use r.watersheds?
    – Heinz
    Commented Jan 27, 2014 at 10:41
  • now I am stuck in the problem of this post:gis.stackexchange.com/questions/84456/…, could you give some advices? Thank you!
    – Heinz
    Commented Jan 28, 2014 at 5:06
  • 1
    The r.watershed command needs at least two input parameters: the DEM raster (as a GRASS map) and the threshold (integer). You also specify at least one (probably more) output parameters: the flow accumulation, drainage direction, basins and streams. You specify them either in the GUI or on the command line. Can I suggest you have a look at the GRASS manual pages?
    – Micha
    Commented Jan 28, 2014 at 7:05

r.stream.basins would do what you are after. https://grass.osgeo.org/grass70/manuals/addons/r.stream.basins.html

But since it is (currently) a GRASS addon, it is not available in QGIS. It might be added as a core module to later versions of GRASS...


There is a new tool available made by Hans van der Kwast. This plugin creates a vector watershed for every pour point. Here it looks like. This tool creates a separate shapefile for every pour point.

A manual from the developer is available on Youtube

enter image description here

Tested in QGIS 3.14 on Windows 10

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.