This is from my research project and one of the objectives is to find the river reach that corresponds to the streamflow gauge. In this project, two datasets are available, one is the gauge metadata, including the attributes such as location coordinates, gauge names and drainage area etc. The other is the river reach polylines in a geodatabase, including the reach lines and attributes, such as upstream drainage area. Therefore, two key attributes of the streamflow gauge metadata are used to search the corresponding river reaches: gauge locations and drainage area. The river reach must be in 2km of the gauge location and the difference between the reported gauge drainage area and the upstream drainage area cannot exceed 50%. This is implemented in search_river_reach.py. Then, the upstream and downstream reaches that may have significant impacts on the streamflow characteristics are also searched.
The major criteria include: 1. These up- and downstream reaches must be in 10 km of the gauge location; 2. The reach’ upstream drainage area must be incremental (i.e., not have significant difference), otherwise they are not directly in up or down stream relationship; 3. The up or downstream must exist in the rive reach network. These criteria are implemented in find_updown_stream_reaches.py. This script will generate two products: all the river centerlines for the corresponding gauge drainage basin; the points along the river centerlines that are in equal distance (100 m), which are used for extracting the topographic characteristics of the channel profile for further analysis.