National Hydrography

Value-Added Attributes (VAAs)

The flow network embedded in the NHD is what gives it its analytic power. A set of NHDPlus HR attributes called the Value-Added Attributes (VAAs) boost this power by pre-calculating a number of network characteristics to make network analysis easier and richer. Several of these VAAs are described below.

Browse through topics or go directly to the VAA of your choice:

 

Hydrologic Sequence

HYDROSEQ -- (Alias: HydrologicSequence)

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, HYDROSEQ, is the foundation of  the VAA system.

This is what you need to know about HYDROSEQ: 

  • It is a nationally unique sequence number that places each stream flowline in hydrologic order  

  • It is generally a compact numbering system within an NHDPlus HR vector processing unit (VPU), meaning the numbers are in sequence without large gaps between them

  • At any flowline, all upstream flowlines have higher hydrologic sequence numbers and all downstream flowlines have lower hydrologic sequence numbers  

  • HYDROSEQ numbers increase from downstream to upstream  

  • HYDROSEQ 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

Click image to enlarge

 

Upstream Main Path Hydro Seq and Downstream Main Path Hydro Seq

UPHYDROSEQ and DNHYDROSEQ -- (Aliases: UpstreamMainPathHydroSeq and DownstreamMainPathHydroSeq)

To illustrate how UPHYDROSEQ and DNHYDROSEQ work, consider a stream made up of many flowlines. Somewhere in the middle of that stream a particular flowline with the HYDROSEQ value of “45” has been identified. The next upstream flowline is identified as “47” in the UPHYDROSEQ - (Upstream Mainstem Hydrologic Sequence Number) - field. The term “mainstem” in this instance means the primary path. There could be two or more flowlines immediately upstream, but only one of them is the primary or mainstem path. Recalling that HYDROSEQ values increase upstream, it follows that the UPHYDROSEQ will be a higher number, such as “47”. UPHYDROSEQ  doesn’t have to be the next higher number, just a higher number.

The next flowline downstream of HYDROSEQ “45” is identified with the field DNHYDROSEQ - (Downstream Mainstem Hydrologic Sequence Number.) Again, mainstem has meaning because downstream could have a divergent path as well as a primary or mainstem path. DNHYDROSEQ doesn’t have to be the next lower number, just a lower number. So, for the particular flowline being examined, the HYDROSEQ is “45”, the UPHYDROSEQ is “47” and the DNHYDROSEQ is “44.”

This is what you need to know about UPHYDROSEQ AND DNHYDROSEQ:

  • UPHYDROSEQ identifies the next upstream flowline on the primary or “mainstem” path
  • DNHYDROSEQ identifies the next downstream flowline on the primary path

Click image to enlarge

 

Downstream Minor Hydro Sequence

DNMINORHYD -- (Alias: DownstreamMinorHydroSequence)

As a compliment to DNHYDROSEQ, DNMINORHYD is used to identify the downstream hydrologic sequence number on the minor or divergent path (DIVERGENCE = 2). In the example below, from the first divergence at HYDROSEQ 89, DNHYDROSEQ is 78 and DNMINORHYD is 82. From the second divergence at HYDROSEQ 73, DNHYDROSEQ is 71 and DNMINORHYD is 72.

NHDPlus HR doesn’t include an upstream minor hydrologic sequence number. Minor paths are rarely used to navigate upstream, but if necessary, upstream minor paths can be identified using DNHYDROSEQ. For example, in the diagram in the previous section, if the navigation is residing on mainstem HYDROSEQ = “45”, then all flowlines immediately upstream will have a DNHYDROSEQ = “45”. All of these will be minor paths upstream except for the mainstem upstream identified using UPHYDROSEQ field. If a node has both multiple inflows and multiple outflows, the logic would need to account for this possibility.

You wouldn’t want to have to figure this all out in your head, but the computer can calculate this in nanoseconds, making Network VAA navigation extremely fast and very powerful.

This is what you need to know about DNMINORHYD:

  • DNMINORHYD identifies the downstream minor hydrologic sequence number on the minor or divergent flowline. Note: When a divergence has more than one minor downstream flowline, all the downstream flowlines can be found by querying the NHDPlusMegaDiv table for the segment immediately upstream of the divergence.  If there are three flowlines downstream of the divergence (one major and two minor), NHDPlusMegaDiv will contain 3 records.
  • NHDPlus HR doesn’t include a related upstream minor path identifier

Click image to enlarge

 

blank white square

DNDRAINCOU -- (Alias: DownstreamDrainageCount)

DNDRAINCOU works with DNMINORHYD and DNHYDROSEQ to identify the number of flowlines located immediately downstream of the current flowline. For example, DNDRAINCOU = 2 if there is one main path and one minor path downstream. DNDRAINCOU = 3 if there is one main path and two minor paths downstream. Note only one of the two minor path downstream features will be identified by the DNMINORHYD value. If DNDRAINCOU > 2, there are additional outflows immediately downstream. These additional flowpaths can be identified by looking  at the NHDPlusFlow table or the NHDPlusMegaDiv table.

 This is what you need to know about DNDRAINCOU:

  • DNDRAINCOU identifies the number of flowlines located immediately downstream of a flowline

Click image to enlarge

 

Terminal Path Identifier

TERMINALPA -- (Alias: TerminalPathIdentifier)

TERMINALPA is the hydrologic sequence number of the network’s terminal flowline. For example, if the HYDROSEQ of the flowline that discharges to the Gulf of Mexico on the Mississippi River is “52”, the TERMINALPA 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 TERMINALPA:

  • TERMINALPA identifies the HYDROSEQ of last or “terminal” flowline in any part of the network.
  • TERMINALPA can be used to identify all the flowlines that flow to a terminal flowline.

Click image to enlarge

 

Path Length

PATHLENGTH -- (Alias: PathLength)

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 TERMINALPA 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.

Click image to enlarge

 

blank white square

STARTFLAG and TERMINALFL -- (Aliases: IsHeadwater and IsNetworkEnd)

The STARTFLAG and TERMINALFL 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 TERMINALFL = 1, the flowline is a network end. If the TERMINALFL = 0, the flowline is not a network end. Simple queries can be built using combinations of these VAAs. For example, if both the STARTFLAG and the TERMINALFL = 0 the flowline is neither a headwater nor network end. If both STARTFLAG and TERMINALFL = 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

  • TERMINALFL identifies network end flowlines

  • Values of 0 indicate the feature is not headwater (STARTFLAG) or network end (TERMINALFL)

  • Values of 1 indicate the feature is a headwater (STARTFLAG) or network end (TERMINALFL)

 

Divergence Code

DIVERGENCE -- (Alias: DivergenceCode)

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 

Click image to enlarge

 

 

 

 

Upstream Cumulative Stream Km

ARBOLATESU -- (Alias: UpstreamCumulativeStreamKm)

ARBOLATESU takes advantage of the LengthKM field in NHDFlowline, which measures the length of the flowline in kilometers. ARBOLATESU 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 ARBOLATESU:

  • ARBOLATESU is the total length of the upstream drainage network from the bottom of the current flowline

Click image to enlarge

 

 

 

Has Returning Divergence

RTNDIV -- (Alias: HasReturningDivergence)

RTNDIV identifies where divergences return to the network. If RTNDIV = 0, no upstream divergences return at the top of the flowline. If RTNDIV = 1, then one or more upstream divergences return to the network at the top of the flowline feature. 

RTNDIV plays an important role during accumulation of network attributes. Generally, accumulation is done by processing flowlines in decreasing HYDROSEQ order. For example, for each flowline where RTNDIV = 0, adding the accumulated ARBOLATESU values from the immediately upstream flowlines to the LENGTHKM for a flowline provides the accumulated ARBOLATESU value for that flowline. Using this method, when a divergence leaves the network, it also gets the accumulated ARBOLATESU value. However, if a divergent path later returns to the network, (RTNDIV = 1), this method would double-count the accumulated ARBOLATSU 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 ARBOLATESU. 

This is what you need to know about RTNDIV:

  • RTNDIV identifies flowlines that receive flow from upstream divergences

  • For flowlines with RTNDIV = 0, a value can be accumulated downstream by processing in decreasing HYDROSEQ order, adding the value for the current flowline to any accumulated value from flowlines immediately upstream. 

  • For flowlines with RTNDIV = 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 totalled and added to the current flowline value to get the accumulated value.

Click image to enlarge

 

From Node/To Node

FROMNODE and TONODE -- (Aliases: FromNode and ToNode)

The flow network of the NHD is made up of a series of connecting lines. The endpoints of these lines are identified using conceptual endpoints called “nodes” - each with a unique identifier. There are no actual node features - they are conceptual only. The node at the top, or upstream, end of a flowline is the FROMNODE and the node at the bottom, or downstream, end of the flowline is the TONODE. From- and to- nodes make it possible to construct a table of node identifiers for virtual network navigation by pairing the TONODE of the upstream line with the FROMNODE of the downstream line. These relationships can be one-to-one; many-to-one – as in the case of convergences; one-to-many – as in the case of divergences; and many-to-many – as in the case of convergences and divergences at the same node. In addition, navigation on "non-geometric connections" can be included -- even when the endpoints of the features don’t touch but the NHDPlusFlow table shows a connection between the features, the TONODE of the From-feature is equal to the FROMNODE of the to-features. 

This is what you need to know about FROMNODE and TONODE:

  • Endpoints of flowlines are nodes and each node is identified by a unique number

  • Nodes are conceptual and not expressed in a feature class

  • FROMNODE is the upstream end of a flowline

  • TONODE is the downstream end of a flowline

  • The relationship between from- and to-nodes can be used to navigate the network 

Click image to enlarge

 

Stream Level

STREAMLEVE -- (Alias: StreamLevel)

STREAMLEVE is a simple and powerful concept that enhances network navigation. All NHD Flowlines draining immediately into the ocean are coded as STREAMLEVE =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 STREAMLEVE = 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 STREAMLEVE 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 STREAMLEVE =1. All flowline segments of the Missouri River are set to STREAMLEVE = 2. All flowline segments of the Platte River, which flows into the Missouri, are set to STREAMLEVE = 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 STREAMLEVE 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 artificial path flowlines flowing on both sides of the island, one flowline will carry the name Mississippi River and be coded as STREAMLEVE = 1. The other flowline will be coded as STREAMLEVE = 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 Mexico) start with STREAMLEVE = 1, streams flowing into closed basins, such as the Great Salt Lake, begin their coding with STREAMLEVE = 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 STREAMLEVE/DIVERGENCE system creates order out of chaos. While difficult to encode, once done, STREAMLEVE 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 STREAMLEVE:

  • STREAMLEVE = 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 STREAMLEVE = 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 STREAMLEVE value

  • Streams flowing into closed basins begin with STREAMLEVE = 4

Click image to enlarge

 

blank white square

LEVELPATHI -- (Alias: LevelPathIdentifier)

LEVELPATHI 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 LEVELPATHI, the Ohio River has a unique LEVELPATHI, the Tennessee River has a unique LEVELPATHI, and so on. LEVELPATHI 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 HYDROSEQ = 48, then every flowline on the Ohio River will have a LEVELPATHI 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 LEVELPATHI:

  • LEVELPATHI is the hydrologic sequence number of the furthest downstream flowline on the existing level path. 

  • LEVELPATHI is a nationally unique identifier assigned to the set of flowlines that compose a stream from its headwater to its mouth

 

blank white square

UPLEVELPAT and DNLEVELPAT  -- (Aliases: UpstreamMainPathLevelPathID and DownstreamMainPathLevelPathID)

For a particular flowline, the UPLEVELPAT and DNLEVELPAT identify the LEVELPATHI of the mainpath flowline  immediately upstream, and the LEVELPATHI 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 UPLEVELPAT will be different from the current LEVELPATHI, and will be on the main path. 

When DNLEVELPAT is different from LEVELPATHI, the flowline is the most downstream flowline on its Level Path. 

This is what you need to know about UPLEVELPAT and DNLEVELPAT:

  • UPLEVELPAT identifies the LEVELPATHI of the mainpath flowline immediately upstream

  • DNLEVELPAT identifies the LEVELPATHI of the mainpath flowline immediately downstream

  • The same LEVELPATHI is assigned to the path followed by the STREAMLEVE. 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 ARBOLATSU) will have the same STREAMLEVE, and same LEVELPATHI, as the Black River.

 

blank white square

DNLEVEL -- (Alias: DownstreamMainPathStreamLevel)

Recall that STREAMLEVE organizes flow networks into a hierarchy. A STREAMLEVE = 1 river will flow into the ocean. For example, the Mississippi River is a STREAMLEVE = 1 river and all NHDFlowlines making up the mainstem of the Mississippi River are assigned STREAMLEVE = 1. A STREAMLEVE = 2 river will flow into a Level 1 River. For example, the Ohio River is a STREAMLEVE = 2 river. A STREAMLEVE = 3 river will flow into that. For example, the Tennessee River is a STREAMLEVE = 3 river. The process continues upstream.

DNLEVEL, or “down level”, is the STREAMLEVE of the mainstem downstream flowline. For example, the flowline that is the mouth of the Ohio River will be assigned DNLEVEL =1 which is the STREAMLEVE of the Mississippi.

 This is what you need to know about DNLEVEL:

  • DNLEVEL is the STREAMLEVE of the mainstem downstream flowline