Watershed Delineation

In this lesson, you will delineate a watershed and its stream network from a DEM. If you have a set of outlet points (pour points) already mapped, scroll down past Step #18 to find instructions for delineating multiple watersheds from multiple outlet points. Watershed delineation depends on several factors controlled by the user. These include, a.) the DEM resolution (1m vs. 30m vs. 90m), the flow direction algorithm (ArcGIS uses D8, TauDEM uses D-infinity), and the channel initiation threshold value chosen. The location and complexity of DEM-delineated stream networks will typically differ from USGS/NHD bluelines or streamlines interpreted from aerial photos. Review the 7 methods for channel delineation (Heine et al., 2004) and weight the relative merits of each method with respect to your project. The “expert-defined constant flow accumulation” method is shown here.

Download: Watershed Delineation Figure 17″ x 11″ PDF

1.) Acquire a DEM
– See DEM Data Sources.

2.) Use a Projected DEM or Set Data Frame Coordinate System to a PCS
– Your DEM must be in a projected coordinate system, so either set the display coordinate system (View > Data Frame Properties > Coordinate System tab AND the Display Units in the General tab to Meters) or project the DEM (Data Management > Projections and Transformations > Raster > Project Raster tool).

– Input raster = original DEM file (usually in GCS_WGS84 or GCS_NAD83).

– Choose a projected coordinate system, using the BILINEAR method. For Idaho, a good choice would be UTM_NAD83_Zone11N.

– Output = DEM_UTM83z11 or whatever filename makes sense for your projection

* Note: Input and Output filenames are just my suggestions; your filenames may differ.

3.) Fill Holes in the DEM
Run the Fill tool (Spatial Analyst > Hydrology):
– Input raster = DEM
– Output = filled_dem

4.) Flow Direction
Run the Flow Direction tool (Spatial Analyst > Hydrology), which uses the D8 algorithm:
– Input = filled_dem
– Output = flowdir
– Check the box “Flow all edge cells to flow outward”.

5.) Flow Accumulation
Run the Flow Accumulation (Spatial Analyst > Hydrology):
– Input = flowdir
– Output = flowacc
– Output data type = Float (floating point = a number expressed in decimal values)

6.) Reclassify FlowAcc into “Channel” & “Non-channel” Pixels
Create 2 classes (Channel = 1, Non-channel = NoData) using the Reclassify tool (Spatial Analyst Tools > Reclass > Reclassify):


The channel initiation threshold value (or critical area) affects drainage density as well as the number and location of channel heads. Threshold values decrease from left to right in the figure above. A smaller critical area results in more channels and channel heads that occur higher in the watershed (they need fewer pixels to accumulate before a channel forms).

– Click the Classify button…

– Set the channel formation threshold value to something like 100 or 1000 or 5000 depending on the size of your watershed and goals of your analysis (see figure at right). There is no standard threshold value – it will differ by study. The actual location of channel heads should be verified in the field and/or aerial photos.

– Set the lower break value at your chosen value (100, 1000, or 5000 pixels) and leave the upper break value at the maximum value (leave at default).

– Now for the reclassify step. Find the table in the middle of the tool’s window with 2 columns: Old Values and New Values.


The threshold value determines the number of hillslope pixels that must accumulate in order for a channel to form. GRAY AREA are the hillslope accumulation areas (critical areas) upstream of the channel head. Channel heads are located at the first pixel with a flow accumulation value at or above the chosen threshold. Downstream of the channel head values are greater.

– Under New Values, change “1” to “NoData” (type it in). You have just defined the non-channel pixels as a Null class (flowacc values under the threshold of 1000).

– In the next row down, change the number “2” to “1”. This sets all flowacc pixels values large enough to be channels (values above 1000), and assigns all pixels in the class a new value of 1. Don’t use quotes.

– Ignore the third row in the table; it is not important.
– Fill the checkbox for “Change missing values to NoData”. You may have to scroll down to find this.
– Name the output raster reclass_strms.

* Note: Sometimes the resulting reclassified streams raster ends up having 2 classes (Class 0 and Class 1). Class 0 usually contains just a single pixel due to some error in Arc. If this happens, run the Reclassify tool on reclass_strms. Set the Break Values at 0 and maximum (New values at NoData and 1). This should rid your raster of Class 0 pixels, leaving you with just Class 1 (channels). Name output raster reclass_strm2.

* See also Stream to Feature tool (Spatial Analyst > Hydrology), which vectorizes the raster representing the stream network.

7.) One Watershed or Many Watersheds?
– If you are in my GIS class, you are creating one watershed at a time, so skip to Step #8.

– Again, if you are delineating a single watershed from a single pourpoint, skip this step. The formal method of delineating multiple watersheds from multiple pourpoints is provided farther down in this post.

* Note: A quick and dirty multiple-watersheds method: If you are delineating multiple watersheds that fall entirely within your DEM raster, then run the StreamLink tool. Use the reclass_strms (or reclass_strm2) and the flowdir raster as the inputs. Name output raster streamlink. Then use streamlink as the input to the Watershed tool. This identifies many small watersheds directly from the linear stream network raster. If problems arise, look to fill tool issues, fixing "breaks" in the string of channel pixels or to your chosen channel initiation threshold value. In general, the outlet point method works better than Stream Link for small watersheds (single or multiple), but you need to create an outlet point (pourpoint) for each watershed.

8.) Outlet Point – Part I: Create Graphic
The following steps relate to delineation of a single watershed. If you wish to create multiple watersheds, create multiple outlet points (see complete instructions farther down in this post). This is a three-part process: 1.) Create a graphic point, 2.) Convert it to a shapefile, 3.) Convert shapefile to a single-pixel raster.

– Begin by creating the point graphic: Customize menu > Toolbars > Draw toolbar > Marker. The Marker is hidden in the pull down list under the rectangle.

– Zoom way, way in so that you can see individual channel pixels on the reclass_strms layer.

– Place the point a few pixels upstream of the actual confluence. Place the point inside a single channel pixel, preferably near its center. The point will serve as the outlet for your watershed, so it must be located inside a channel pixel.

* Note: If you are trying to calculate flow to a point that is located off of the channel (i.e., charcoal collection site in an ancient hillslope sheet flow deposit), you will need to laterally translate the point to the channel. If that isn't satisfactory, you may try reducing the threshold value (Step #6) so the more dry gullies are delineated (push channel heads uphill, initiate more channels). You will be limited by the DEM resolution at some point. Time to order that LiDAR flight (or see HERE or Google "Lidar Consortium").

9.) Outlet Point – Part II: Convert Point Graphic to Point Feature
– Select the graphic using black arrow

– Right-click on Layers > Convert Graphics to Features, click the checkbox for automatically delete graphic. Make sure you change the Save As Type to Shapefile.

– Output = point_outlet

– Make sure the coordinate system specified is the same as filled_dem (the projected one).

10.) Outlet Point – Part III: Convert Point Feature to Pixel
This step converts the outlet point shapefile to a one-pixel raster located in the same place. You make this change from shapefile to raster in order for Arc to run the Watershed tool successfully.
Run the Hydrology > Snap Pour Point tool using these inputs:
– Input = point_outlet
– Pour point field = FID
– Input raster = reclass_strms (sometimes flowacc works)
– Output = pourpointpix
– Snap distance = 4 cells (you could change this)

– After this runs, zoom way in on the outlet to see if the pixel was created. By “way in”, I mean so you can see pixel boundaries.

11.) Watershed
Run the Hydrology > Watershed tool with these inputs:
– Input raster = flowdir
– Input raster pour point layer = pourpointpix
– Leave the pour point field at the default
– Output = watershed

12.) Create Watershed Boundary Polygon
Convert watershed raster to a watershed-bounding polygon (ArcToolbox > Conversions > From Raster > Raster to Polygon).
– Input = watershed
– Leave Field at the default.
– Optional: Check box for Simplify polygons.
– Output = ws_boundary

13.) Clip DEM to Watershed Boundary
This step is optional, but it facilitates many other watershed-specific calculations.
– Use ArcToolbox > Data Management tools > Raster > Raster Processing > Clip tool. This tool is used to clip rasters with shapefiles. It differs from the Geoprocessing “Clip” tool that is used to clip shapefiles with shapefiles. Please make a note of it.
– Input raster = filled_dem
– Specify the Output Extent (watershed boundary shapefile) = ws_boundary
– Click the first little checkbox for “Use input features for clipping geometry”
– Output = ws_dem

14.) Clip Stream Network Raster to Watershed Boundary
– Use ArcToolbox > Data Management tools > Raster > Raster Processing > Clip tool. This tool is used to clip rasters with shapefiles.
– Input raster =reclass_strms
– Output Extent (watershed boundary shapefile) = ws_boundary
– Click the first little checkbox for “Use input features for clipping geometry”
– Output = ws_network

15.) Order Stream Network
Stream ordering via the Strahler (or Shreve) method breaks the stream network into channels at confluences. Each segment is given an order number.
Run the Hydrology > Stream Order tool with these inputs:
– Input raster = reclass_strms (or reclass_strm2)
– Input flow direction raster = flowdir
– Choose method = Strahler or Shreve
– Output = strm_order

16.) Convert Stream Pixels to Shapefile
This step creates the stream network by converting pixels in the reclassified stream raster to a polyline shapefile.
Convert the strm_order from a raster to a shapefile (ArcToolbox > Conversions > From Raster > Raster to Polyline).
– Field = VALUE.
– Background = NODATA.
– Optional: Check box for Simplify polygons.
– Output = stream_network

17.) Calculate Lengths of Ordered Stream Segments
– Open attribute table for strm_network.
– Add a new field named Length_m in Long Integer format.
– Populate the Length_m field in meters using the proper coordinate system (Right-click header > Calculate Geometry).

18.) Sum Channel Network Length
– Right-click on Length_m field header > Statistics > Sum.


This method uses a point shapefile containing a bunch of outlet locations (pour points) to quickly create several watersheds in one shot.

– Work through Steps #1 through #6 in the single watershed instructions above.

– Begin by creating the points graphic using the same method described for single watersheds. Instead of one pour point, create as many as you wish. There is probably a processing limitation at large numbers of watersheds, but see what happens. They don’t pay you enough to worry about wasted time. Use the Customize menu > Toolbars > Draw toolbar > Marker to create the points. The Marker is hidden in the pull down list under the rectangle.

– With point graphics created, select them all and convert to a single shapefile (same as Step #9 above).

– Now here’s a wrinkle. You need to edit the attribute table in order to add a new field (or overwrite the existing ID field) using Table Options > Add Field (“PourPtID”, short integer) and populate it with unique values. Each point needs a unique number identifying it, so in the Field Calculator, construct the equation: FID+1.

– Continue on from Step #10 in the single watershed instructions.


Search Terms on ‘ArcGIS Resources’ (help.arcgis.com): NoData, Hydrology tools
Heine et al. (2004) Annal of the Association of American Geographers 94, p. 477-490
Tarboton et al. (1991) Hydrological Processes 5, p. 81–100