This tool takes a layer of snapped points with a distance field and generates a reach polyline in the selected direction. The user can choose to create a polyline is an upstream direction, downstream direction or in both directions. RivEX can extract the end points (nodes) of the generated reaches, this is optional.

Upstream and Downstream reaches

Upstream and Downstream reaches generated by RivEX

Such reach polylines could represent zones of sedimentation upstream of a structure, downstream impact of a dam or a reach over a survey site which you want to extract out the local slope.  Once the polyline has been created it can be simply visualised or used in subsequent geo-processing such as buffering and intersecting with other riparian related datasets.

The end points are useful if you intend to compute a local slope value. You could use them to query a DEM and generate a slope over the reach length.

Reaches and there end points

Reach end points coloured by which end of the reach they are extracted from.  Purple squares are the sites. 

Note the reach on the left is truncated thus the Upstream end point is also the source of the headwater stream

When traversing in an upstream direction RivEX always follows the network where the source ID of the polyline matches the source ID of the polyline that the site is on. When a bifurcation (loop) is reached the first valid row in the FeatureClass is used, this means that the reach may not follow the main river.  If a bifurcation is met whilst travelling in a downstream direction RivEX will choose a path based upon first valid row in the FeatureClass which can mean it may not choose the main river.  As the path RivEX follows is influenced by the topology and row order this behaviour can lead to unexpected reaches as shown in the following example, the user should be aware of these scenarios.

In the example below the network is labelled in blue text with polyline ID, site ID's are in red and their downstream reaches are in red. Site 953 has it's reach selected and displaying in cyan. What makes this data unexpected is that the Sites were created by RivEX and were created 500 m apart and the downstream reaches are 500 m long.  It is clear that the 953 reach overlaps site 952. How can this be when the sites are generated 500m apart? The answer to this is the row order. When generating the sites RivEX would have followed the branch with polyline ID 488 as that is the first in row order when deciding which side of the loop to follow. Thus site 953 is 500 m upstream of site 951. When generating the downstream reaches it followed the polyline 489 as that is the first in row order. As this branch is less sinuous the 500m reach terminates downstream of site 952.

Reaches influenced by row order

The influence of network row order on computing a downstream reach can produce unexpected reaches.

RivEX uses the distance value in a field. For this tool to run the field must exist and be populated with valid values. The distance values could be constant, scaled by some other variable (e.g. Strahler order) or individual for each point, the choice is yours.

WarningThe distance value encoded into the site must be in the units of the river network. For example your river dataset is in meters but your distance value encoded into your point layer may be miles, these would need converting to meters before running the tool.

Your network must have source ID encoded into the network, this is achieved using this tool.

Sites must be snapped to the network and the Distance and ID fields must be numeric. All values in the distance field must be greater than zero.

The Create reaches dialog

If a selection on the input site layer exists RivEX will enable the check box Use only selected sites. If you need to process only a sub set of your sites in the input layer then make sure you check this. 

Select the direction of the reach polyline. If you select an Upstream direction then the Flip upstream reach check box enables. If you tick this on then the resulting polyline is flowing from the upstream limit of the reach towards the site which would be at the downstream end. You would flip the polyline if you intend to do further analysis which requires a downstream flowing polyline.

If you are creating a downstream reach then the option Clip Downstream reach by Source ID will enable.  The default is not to clip by source ID. If you tick this on then the reach will stop at a change in source ID encoded in the river network, this will generate a reach shorter than the length specified in the distance field. For further information on this option click here.

You could create a reach from the site all the way to the river mouth by deliberately setting the values in the distance field to a large value. The computed reach will get truncated at the mouth resulting in the desired affect. A worked example of this "trick" is discussed on this page.

If you tick on Extract reach end points a second dataset will be created which are the end points (nodes) of the reach polylines.

The reach layer is stored in the File GeoDatabase fGDB_Reaches.gdb which is found in the ..\RivEX_Workspace\Output folder.

The name of the layer depends upon your choice of direction. It is the name of the point layer with the suffix _USReaches or _DSReaches or _USDSReaches. For example you have processed a point dataset called weirs for upstream polyline reaches; the resulting output layer name would be weirs_USReaches in the fGDB_Reaches.gdb File GeoDatabase.

If you chose to extract end points then this dataset is created in the same File GeoDatabase as the reaches and takes on the name of XXX_Reach_Nodes where XXX is the name of the site layer.

The Reach output FeatureClass will contain the following fields:

Field Name



The row ID


The Polyline geometry


The ID of the site


The direction of the polyline, this will only ever be DS, US or BOTH


A Y/N flag indicating if the reach was truncated 


The ID of the polyline the site was snapped to


The sinuosity of the line, computed as described below


The length of the polyline

A reach may be truncated and this is indicated by the Yes/No Truncated field. This occurs when the required reach distance as defined in the distance field cannot be achieved. For example a site has a distance value of 600m and the user has requested downstream polylines to be created but the site is only 200m away from the network mouth. In this example as RivEX generates the downstream polyline it runs out of network after 200m and is truncated thus missing 400m of reach.

The Direction field indicates the direction the polyline was generated and can be used to symbolize this fact. It will only ever contain the codes: DS for downstream, US for upstream and BOTH for both directions

Sinuosity of the reach line is computed as reach length divided by straight line path, an example is shown below.

Computing sinuosity

If have chosen to extract end points this FeatureClass will contain the following fields:

Field Name



The row ID


The Point geometry


The ID of the site


Which end of the reach polyline the point is extracted from (will only every be DS or US)


The length of the reach polyline, thus the distance between the end points

WarningDuring processing sites can be rejected if they do not intersect the network or have a distance value equal to or less than zero. Sites that are found snapped to a tributary junction are rejected and the site ID's recorded in the error log file RejectedReachSites.txt which is stored in the error log folder.