RivEX could over or under estimate the distance between sites if your network contains loops. RivEX typically generates distances between sites by simply subtracting the, distant from network mouth value, of the downstream site away from the, distant from network mouth, of the upstream site. This is a value encoded into the network by RivEX. This approach means distances can be rapidly computed without the need of traversing a network and computing the shortest route.
If your network contained no loops or multi-threaded sections then this value would always be accurate. Such a network would typically be derived from a raster network converted into a vector network. A good example would be HydroSHEDS.
If your network contains looped or multi-threaded section between the sites then it is possible for RivEX to over\under estimate the distance. These over estimations would typically be trivial but if the 2 sites in question are separated by many loops then this may introduce an unacceptable error. To understand the issue review the image below.
•Site A and B are separated by a section of network that contains a loop. Black lines indicate a distance from network mouth in Km. One side of the loop is more sinuous.
•Above the bifurcating node (green) the next marked distance is 3Km, yet if we had travelled up the right side of the loop (as we look at it) we have already passed the 3Km limit!
•This illogical situation occurs because when RivEX was labelling the network with distance from network mouth it travelled up the shorter left hand side of the loop first. It travelled up this branch of the loop first because this was the row in the FeatureClass table it happened to process first and this is dictated by the order in which polylines where digitized.
•The more sinuous right hand side of the loop is likely to be the main channel and the left hand side a cut- through, but as there is no field in the dataset indicating "this is the main channel" RivEX can only process the network in the order of polylines it meets as it traverses up the network.
•The distance between sites would be calculated as (3.8Km - 0.5Km) 3.3Km because the encoding of the distance to mouth in the network is following the left hand side of the loop. If if had followed the right hand side it would be (4.8km - 0.5km) 4.3Km
•If there were many looped sections between sites A and B then the error could accumulate.
•This example shows an extreme situation (which can occur) but loops are often very similar lengths so the error is trivial.