3DHP Flow Network Derivatives
The flow network in 3DHP data is what gives it its analytic power. Flow Network Derivatives (FNDs) boost this power by pre-calculating several network characteristics to make network analysis faster and easier. Several of these FNDs are described below.
Note that FNDs are recomputed nationally with each quarterly data release. While many FNDs will not change between releases, any could change.
Browse through topics or go directly to the FND of your choice:
hydrosequence | uphydrosequence and dnhydrosequence | terminalpath | pathlength | startflag and terminalflag | divergence | arbolatesum | rtrndivergence | streamlevel | levelpath | uplevelpath and dnlevelpath
There are several ways to identify network segments so that they can be managed. One way is to start at the top of the list (table) and start counting off so that the first flowline is one, the second is two, and so on. A more “intelligent” approach is to organize the numbers so that all upstream flowlines have a higher number than the current flowline’s number and all downstream flowlines have a lower number than the current flowline’s number. This identifier, hydrosequence, is the foundation of several FNDs.
This is what you need to know about hydrosequence:
- It is a nationally unique sequence number that places each stream flowline in hydrologic order.
- hydrosequence is calculated nationally across the entire 3DHP dataset, so although adjacent segments may have similar hydrosequence values, this is not guaranteed (or even likely).
- At any flowline, all upstream flowlines have higher hydrologic sequence numbers and all downstream flowlines have lower hydrologic sequence numbers
- hydrosequence numbers increase from downstream to upstream
- hydrosequence numbers decrease from upstream to downstream
- Not every flowline with a higher number is upstream, and not every flowline with a lower number is downstream
To illustrate how uphydrosequence and dnhydrosequence work, consider a stream made up of many flowlines. Somewhere in the middle of that stream a particular flowline with the hydrosequence value of “45” has been identified. The next primary upstream flowline is identified as “47” in the uphydrosequence field. There could be two or more flowlines immediately upstream, but only one of them is the primary path. Recalling that hydrosequence values increase upstream, it follows that the uphydrosequence will be a higher number, such as “47”. uphydrosequence doesn’t have to be the next higher number, just a higher number.
The next primary flowline downstream of hydrosequence “45” is identified with the field dnhydrosequence . Again, there may be one or more divergent paths in addition to the primary path. dnhydrosequence doesn’t have to be the next lower number, just a lower number. So, for the particular flowline being examined, the hydrosequence is “45”, the uphydrosequence is “47” and the dnhydrosequence is “44.”
This is what you need to know about uphydrosequence and dnhydrosequence:
- uphydrosequence identifies the next upstream flowline on the primary or “mainstem” path
- dnhydrosequence identifies the next downstream flowline on the primary path
terminalpath is the hydrologic sequence number of the network’s terminal flowline. For example, if the hydrosequence of the flowline that discharges to the Gulf of America on the Mississippi River is “52”, the terminalpath of all flowlines upstream of this flowline will be “52”. This is a handy way of knowing the terminus of any flowline in the network, as well as an easy way to find all flowlines that flow to that network end. (Note if the terminal path comes from a minor path out of a divergence, this method will not identify any flowlines upstream of that divergence.)
This is what you need to know about terminalpath:
- terminalpath identifies the hydrosequence of last or “terminal” flowline in any part of the network.
- terminalpath can be used to identify all the flowlines that flow to a terminal flowline.
The pathlength is the distance from the bottom of a flowline to the bottom of the terminal flowline along the main path as identified in the terminalpath field. There may be many pathways between a flowline and the terminal flowline because of divergences in the network so pathlength is computed by following the main path at each divergence.
This is what you need to know about pathlength:
- pathlength is the distance from the bottom of a flowline to the end of the network and is calculated on the main network path
- pathlength at the terminal Flowline (Isolated, Sinks, Oceans) is equal to zero.
The startflag and terminalflag attributes identify headwater and terminal flowlines, respectively. If the startflag = 1, the flowline is a headwater. If the startflag = 0, the flowline is not a headwater. If the terminalflag = 1, the flowline is a network end. If the terminalflag = 0, the flowline is not a network end. Simple queries can be built using combinations of these FNDs. For example, if both the startflag and the terminalflag = 0 the flowline is neither a headwater nor network end. If both startflag and terminalflag = 1, the flowline is both a headwater and a network end - in other words, it is an isolated flowline.
This is what you need to know about STARTFLAG AND TERMINALFL:
- startflag identifies headwater flowlines
- terminalflag identifies network end flowlines
- Values of 0 indicate the feature is not headwater (startflag) or network end (terminalflag)
- Values of 1 indicate the feature is a headwater (startflag) or network end (terminalflag)
Divergence is used to identify divergent flow in the network. If divergence = 0, the flowline is not part of a divergence. If divergence = 1, the flowline is the main path of the divergence. If divergence = 2, the flowline is a minor path from the divergence. Thus, if divergence = 2, the flowline may be a canal or ditch that is taking water out of a stream or lake and diverting it for some use such as irrigation, or it may be a side channel around an island. Divergences can be very common, particularly in farming and ranching country of the western United States. When there are more than two paths from a divergence, the main divergent flowline has divergence = 1 and all of the remaining divergent flowlines have divergence = 2.
This is what you need to know about divergence:
- divergence identifies divergent flow like canals, ditches, braided streams or other flow splits
- divergence identifies major and minor divergent flowlines using codes 1 and 2, respectively
arbolatesum
arbolatesum takes advantage of the LengthKM field , which measures the length of the flowline in kilometers. arbolatesum is determined by accumulating the length of all the upstream flowlines from the bottom of the current flowline and so provides the total length of the upstream drainage network from the bottom of the current flowline.
This is what you need to know about arbolatesum:
- arbolatesum is the total length of the upstream drainage network from the bottom of the current flowline
rtrndivergence
rtrndivergence identifies where divergences return to the network. If rtrndivergence = 0, no upstream divergences return at the top of the flowline. If rtrndivergence = 1, then one or more upstream divergences return to the network at the top of the flowline feature.
rtrndivergence plays an important role during accumulation of network attributes. Generally, accumulation is done by processing flowlines in decreasing hydrosequence order. For example, for each flowline where rtrndivergence = 0, adding the accumulated arbolatesum values from the immediately upstream flowlines to the lengthkm for a flowline provides the accumulated arbolatesum value for that flowline. Using this method, when a divergence leaves the network, it also gets the accumulated arbolatesum value. However, if a divergent path later returns to the network, (rtrndivergence = 1), this method would double-count the accumulated arbolatesum value from above the first divergence. To avoid double-counting, an upstream navigation including tributaries should be done, and the lengthkm for each upstream flowline added to the lengthkm of the current flowline, to get the correct value for arbolatesum.
This is what you need to know about rtrndivergence:
- rtrndivergence identifies flowlines that receive flow from upstream divergences
- For flowlines with rtrndivergence = 0, a value can be accumulated downstream by processing in decreasing hydrosequence order, adding the value for the current flowline to any accumulated value from flowlines immediately upstream.
- For flowlines with rtrndivergence = 1, adding an accumulated value from the flowlines immediately upstream would cause double-counting of accumulated values. In these cases, an upstream navigation including tributaries should be done, and values for each flowline upstream totaled and added to the current flowline value to get the accumulated value.
streamlevel
streamlevel is a simple and powerful concept that enhances network navigation. All 3DHP Flowlines draining immediately into the ocean are coded as streamlevel =1. The value of 1 is assigned to flowlines upstream following the main path until the top of the main path is reached. The main path is determined generally by following a stream name or, where there is no name, following the largest ARBOLATESU. The rules that are used actually are somewhat more complex and involve FCode, but when necessary, ARBOLATESU is used to determine the main path.
All flowlines flowing immediately into Level 1 flowlines are coded as streamlevel = 2. Then the value of 2 is assigned to flowlines upstream following the main path until the top of the main path is reached. This process continues with Level 3 flowlines flowing into level 2 flowlines, and so on, until all flowlines have been assigned a streamlevel value.
For example, all flowlines making up the Mississippi River, from Lake Itaska in Minnesota (the headwater of the Mississippi River) to the Mississippi River delta, are set to streamlevel =1. All flowline segments of the Missouri River are set to streamlevel = 2. All flowline segments of the Platte River, which flows into the Missouri, are set to streamlevel = 3.
When navigating upstream on the Mississippi River, a convergence will be encountered at the junction with the Missouri River. If you wish to follow the main path - the Mississippi River, the correct choice is to take the next Level 1 flowline. The streamlevel concept is particularly useful for following the main path where streams have no names.
Using the Mississippi River example to illustrate, if the river splits around an island, with waterbody connectors flowing on both sides of the island, one flowline will carry the name Mississippi River and be coded as streamlevel = 1. The other flowline will be coded as streamlevel = 2. For the purpose of the navigation a choice must be made - choosing the next Level 1 flowline will keep the navigation route on the main path.
While streams flowing directly into the ocean (Atlantic, Pacific, and Gulf of America) start with streamlevel = 1, streams flowing into closed basins, such as the Great Salt Lake, begin their coding with streamlevel = 4. Note that not all Level 4 streams end in closed basins; most simply flow into Level 3 streams.
The concept works very cleanly for classic dendritic drainage systems. Where the drainage becomes very complex, such as in braided streams, with diversion canals mixed in, the streamlevel /divergence system creates order out of chaos. While difficult to encode, once done, streamlevel creates a logical stream routing system and makes complex hydrography adhere to a set of logical rules.
This is what you need to know about streamlevel:
- streamlevel = 1 for all flowlines draining to the ocean and to all upstream paths following the main path until the top of the main path is reached
- Flowlines flowing into Level 1 flowlines are assigned streamlevel = 2 and the value of 2 is assigned to flowlines upstream, following the main path until the top of the main path is reached.
- The above process continues until all flowlines in the network have been assigned a streamlevel value
- Streams flowing into closed basins begin with streamlevel = 4
levelpath is a nationally unique identifier assigned to the set of flowlines that compose a stream from its headwater to its mouth (i.e. where it flows into a path of a lower stream level or where the network terminates). The Mississippi River has a unique levelpath, the Ohio River has a unique levelpath, the Tennessee River has a unique levelpath, and so on. levelpath is the hydrologic sequence number of the furthest downstream flowline on the existing level path. If the furthest downstream flowline on the Ohio River is hydrosequence = 48, then every flowline on the Ohio River will have a levelpath of 48. This is a handy way of knowing the level path terminus of any flowline on the Ohio.
This is what you need to know about levelpath:
- levelpath is the hydrologic sequence number of the furthest downstream flowline on the existing level path.
- levelpath is a nationally unique identifier assigned to the set of flowlines that compose a stream from its headwater to its mouth
For a particular flowline, the uplevelpath and dnlevelpath identify the levelpath of the mainpath flowline immediately upstream, and the levelpath of the mainpath flowline immediately downstream, respectively.
To illustrate how these codes function, imagine navigating upstream from a minor path on a divergence (i.e. DIVERGENCE = 2). In this instance, the uplevelpath will be different from the current levelpath, and will be on the main path.
When dnlevelpath is different from levelpath, the flowline is the most downstream flowline on its Level Path.
This is what you need to know about uplevelpath and dnlevelpath:
- uplevelpath identifies the levelpath of the mainpath flowline immediately upstream
- dnlevelpath identifies the levelpath of the mainpath flowline immediately downstream
- The same levelpath is assigned to the path followed by the streamlevel. For example, if the East Branch Black River and West Branch Black River converge and form the Black River, either the East Branch or the West Branch (whichever has the largest arbolatesum) will have the same streamlevel, and same levelpath, as the Black River.