This page could contribute to the Downstream Navigation pages, depending on the solutions built.
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).
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.
Use the Esri Geometric Network which comes in NHD geodatabases generically.
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:
ESRI World Imagery, Bing maps. Area has been channelized.