Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Update#1: Thanks, Micha, I have followed your instruction and successfully use 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?

As title, 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?

share|improve this question

1 Answer 1

up vote 2 down vote accepted

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

share|improve this answer
now I am using r.watershed and having this problem:gis.stackexchange.com/questions/83795/… –  Heinz Jan 24 '14 at 6:39
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 Jan 25 '14 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 Jan 27 '14 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 Jan 28 '14 at 5:06
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 Jan 28 '14 at 7:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.