RivEX will generate a dBase file listing all downstream sites in one layer against the input layer.  Sites that have no sites downstream of themselves are coded with a -1.  Therefore all sites are returned in the output as either -1 or a list of downstream IDs. During processing sites are sorted into catchments based upon the catchment ID encoded into the network. Sites are only linked within the same catchment ID, this avoids the tool reporting sites downstream of the input site that may exist in another catchment which are linked by a bifurcation.

Sites must be snapped to the network and the ID field must be numeric (Integer); a field of type double or float will not display in the drop down list.

Information If you want to find what is downstream of what within a single layer then simply set the Sites to search and Downstream sites to find as the same layer.

WarningIf both layers are different datasets it is strongly recommended that the numeric ID values of the sites do not overlap. For example sites from the first layer may range from 1 to 10 and sites from the second layer should be something like 100 to110. You want to avoid having sites with ID values of 1 to 10 in both datasets.

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.  Any selection on the downstream sites layer is ignored.

Find downstream sites dialog

All RivEX generated fields must exist before this tool can be used. Click OK and the tool will execute.

RivEX will first check if the sites intersect the polylines of the network. If any are found not to be intersecting it will drop these from the analysis and the ID's written to an error log file. The error log file is written to ..\RivEX_Workspace\ErrorLogs\FailedSites_SiteLayerName.txt.

Output is written to a dBase file and stored in the networks RivEX_Workspace\Output folder. The name given to this file is the name of the point layer with the suffix of "_DownstreamSites".  The field headings have to be 10 characters or less to be a valid dBase field therefore abbreviations are used and are described below.

Field name



Object ID (ESRI default)


The site ID number from the input layer


The catchment ID the site is within


The ID of an downstream site


The distance from network mouth for the downstream site


The distance from the site to the downstream site

In the screen shot below is a typical table generated by the tool. Site 4890 which is found in catchment 285 has eight sites downstream of it, the nearest being site 1171. Site 4891has no sites downstream of it hence the -1.

Downstream sites table

WarningIf you sort the table by SiteID and DSSite_D2M you will get the sequence the sites are visited as RivEX traversed the network from each input site towards the network mouth. Be aware of data that has points on each side of a loop, this is discussed below.

In the scenario where you have downstream sites of either side of a braid (2 & 4 in the below image) RivEX does not treat them as mutually exclusive.  RivEX does not know which side of the braid you want to travel down and there is usually no coding within the network that defines main channel.  If your river network has bifurcations within bifurcations then the combinations of routes from site to river mouth can be large.  Currently the only way to resolve this is to simplify your downstream site data so that you only ever consider a single point on any branch of a braiding or anastomosing channel.  Alternatively you could simplify your network into a single channelled network and drop the points that do not sit on a polyline. Imagine you are studying fish migration and you have weirs on both branches of a bifurcation, this would be important to know but RivEX would report them as if they were sequential.

Braiding example

A traverse downstream will pick up sites on either side of any braid, thus in the example above the sequence reported by RivEX for site 1 could be 2, 4 & 3. The sequence is dictated by the sites distance from river mouth. If 2 and 4 happened to be exactly the same distance from the river mouth then the reporting sequence will be dependent upon the order the polylines were digitised. 

If you have downstream sites in exactly the same location as you input sites (stacked points) then these will be counted as downstream.

WarningThe DSSite_Dis field is not calculated using a "classic" shortest path search it is calculated by subtracting the distance from network mouth of the TO site from the distance to network mouth of the FROM site. In river networks without loops this will always yield an accurate measure. In networks where the sites are separated by network that contain loops it is possible for RivEX to over estimate the distance between sites if the upstream site distances to network mouth was calculated by traversing another route through the multi-threaded section. Such over estimates are generally trivial but if the multi-threaded sections of the network are highly sinuous this may generate an unacceptable error. More information can be found here.