Confluence Retirement

In an effort to consolidate USGS hosted Wikis, myUSGS’ Confluence service is scheduled for retirement on January 27th, 2023. The official USGS Wiki and collaboration space is now SharePoint. Please migrate existing spaces and content to the SharePoint platform and remove it from Confluence at your earliest convenience. If you need any additional information or have any concerns about this change, please contact Thank you for your prompt attention to this matter.
Skip to end of metadata
Go to start of metadata

This page could contribute to the Downstream Navigation pages, depending on the solutions built.

Problem Statement

I am looking for a way to generically add an attribute or a name to unnamed flowlines that will tell a user which named flowline the unnamed flowline eventually flows into.  I would like to generically do this with a statewide dataset (Montana). Thus, an unnamed flowline that flows into Cow Creek would get the name or attribute of (Tributary of Cow Creek).  

Solution 1: Combination vector/raster

Step 1: Join catchment dataset to flowline dataset
Step 2: Select catchments for all streams that have a GNIS name = 'Null' and have a water right of interest
Step 3*: Select by location all catchments that share a boundary with the 'Null' catchments identified in step 1
Step 4: Clip flowlines in catchments from step 3
Step 5: Extract endpoints from flowlines in step 4
Step 6: Delineate watersheds using endpoints from step 5 (using a unique reach ID as the gridcode)
Step 7: Identify gridcodes from step 6 that each water right location (assuming lat/longs are available) falls within, join back to flowline table, and record GNIS Name.

At step 3, there might need to be some iterative use of the dissolve and append tools if there are instances where unnamed tribs flow into unnamed features. But if this is the case, I think I have a rough mental map of how to do that.

Solution 2: Esri Geometric Network

Use the Esri Geometric Network which comes in NHD geodatabases generically. 

Solution 3: NHDPlus Value-Added Attributes

Use Value Added Attributes (VAAs) that are part of NHDPlus HR. 

See Gist here for code.

Basic Logic: (the word flowline is used here for incremental units of NHDPlus but catchment or row could also be used)

Using attributes: COMID, GNIS_NAME, GNIS_ID, LevelPathID, Hydroseq, DnHydroseq

Loop over all unique LevelPathIDs smallest to largest.

Grab entire level path of interest.

If the level path has more than one name and one of them is empty

Set downstream unnamed flowlines to "Downstream of first name upstream"

Set upstream unnamed flowlines to "Upstream of first name downstream"

If the level path has no names

Find the name of the flowline downstream of the level path's outlet.

If the downstream flowline is unnamed set name to "Unnamed Outlet" because this is a terminal level path with no name any where.

Remove any modification to name found e.g. "Upstream of"

Set the name to "Trubutary of downstream name"

The attached zip contains the code from the gist above and the resulting "only_modified_nhdplusv2_names.tsv" and "unhandled_modified_nhdplusv2_names.tsv". See code for methods and checks that have been applied. These data have not been visualized – only checked for basic logical consistency. Two catchments were unhandled:





Squaw Creek



ESRI World Imagery, Bing maps. Area has been channelized. 

  • No labels