-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Thalweg Profile Tool and lateral Thalweg Adjustment Threshold #417
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BrianAvant
added
bug
Something isn't working
enhancement
New feature or request
CatFIM
NWS Flood Categorical HAND FIM
labels
Jun 14, 2021
@BradfordBates-NOAA I might get you to run this tool to test it. I have moved some things around and would like to make sure I didn't break something in the process. |
BradfordBates-NOAA
approved these changes
Jun 21, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug
Something isn't working
CatFIM
NWS Flood Categorical HAND FIM
enhancement
New feature or request
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adding a thalweg profile tool that checks for significant elevation drops along thalweg. Also setting lateral thalweg adjustment threshold in hydroconditioning. Resolves #408, Resolves #18, and Resolves #409
Additions
thalweg_drop_check.py
checks the elevation along the thalweg for each stream path downstream of MS headwaters within a HUC8.Outputs
Tool Args
fim_dir
: directory of FIM outputsoutput_dir
: directory of tool outputsstream_type
: stream layer to define thalweg. Options arederived
and 'burnline'. Using the 'burnline' option involves extra steps to add verticies for every cell along the thalweg. The 'derived' option is recommended for use in post-processing. The 'burnline' option is only useful for updating thalweg cell values during the hydroconditioning inrun_by_unit.sh
and has not been fully tested.point_density
: elevation sample density. Options are 'all_points' or 'midpoints'.th
: significant elevation drop threshold in meters.j
: number of jobs to run in parallelExample call
python foss_fim/tools/thalweg_drop_check.py -fim_dir /data/outputs/test -output_dir /data/tools/thalweg_profile_comparison/single_pixel_hucs_gpd -stream_type derived -point_density all_points -th 3.0 -j 12
Plots
Removals
clip_vectors_to_wbd.py
.Changes
split_flows.py
to make it more readable.reduce_nhd_stream_density.py
andadjust_headwater_streams.py
were refactored to limit MS headwater point inagg_nhd_headwaters_adj.gpkg
.adjust_thalweg_lateral.py
where change in elevation between thalweg and lateral elevations where limited by threshold and updated this threshold to 3 meters.aggregate_vector_inputs.py
to identify anomalies when preprocessing NHDPlus HR stream network and updated attributes to match newnws_lid.gpkg
layer.output_cleanup.py
-p whitelist to include layers forthalweg_drop_check.py
tool. (dem_lateral_thalweg_adj.tif
,dem_thalwegCond.tif
,dem_meters.tif
,demDerived_reaches_split.gpkg
,nhd_headwater_points_subset.gpkg
,wbd.gpkg
,NHDPlusBurnLineEvent_subset.gpkg
)Testing
Evaluation metrics were calculated for this feature branch as part of the standard practice but most of the sites that show single pixel inundation are not included in the list of sites with evaluation data. Sites flagged as having single pixel inundation were observed from a qualitative review of the CatFIM outputs as well as through feedback from the field offices. The list of flagged sites from previous CatFIM outputs was used to identify and categorize the source of single pixel inundation. Compared to FIM 3.0.17.1, there was no change or a slight improvement in aggregate CSI scores for NWS and USGS sites except for NWS-moderate and NWS-action stages. BLE aggregate CSI shows a regression in the 100yr and 500yr flood events.
The initial hypothesis was that large drops in elevation, introduced in the hydroconditioning process, were the main cause of the observed single pixel inundation. I created a tool to indentify the thalweg elevation profile for each individual path originating at the MS headwater point (always a NWS LID). This tool was then used to identify elevation drops in the thalweg at or below 5 meters initially but then lowered to 3 meters after observing the outputs.
Screenshots
NWS LID SORI2; Action Stage; HUC 07120004; NCRFC
FIM v3.0.19.0/dev-single-pixel-inundation:
Closer look:
Issues that still remain:
FIM 3 input stream network uses the
ToNode/FromNode
and LevelPath attributes to traverse the HR NHDPlus stream network in an attempt to match the density of the NWM stream network used for producing flows. This does not do any vetting of the stream path to ensure that there are no gaps, artificial paths, and other considerations used to convert the NHDPlus medium resolution stream network to the NWM routlink file. It is observed in many cases where the subset HR network will follow an adjacent artificial path, especially below dams. Irrigation lines sometimes cut through multiple catchments. The NHDPlus has attributes to remove these types of segments from the dataset (FType
/FCode
) but the dataset is still in progress and may not be mature enough to rely on these attributes for our purposes.FIM 3 input stream network does not include braided stream segments. Differences in catchment delineation, braided segment selection of HR vs NWM, and major changes in the stream network geometry make mapping and crosswalking challenging in these areas.
Instead of trying to resolve these types of issues within the FIM workflow, it would probably be better to use the same starting network (spatial resolution and density) for both models to derive flow and inundation libraries.
Distributed networks
Besides the issues mentioned in the previous point, inundation mapping at highly braided networks usually underperforms due to the simplified way that NWM routes flow through these areas. The current NWM v2.1 configuration selects a single segment to receive 100% of the upstream flow in distributed sections of the network. Alternate segments can still have some flow accumulating from within their own catchments. This simplification is reasonable for flow routing but will likely not adequately represent the needs of FIM.
NWS LID LMDN5 Action Stage - HUC 13020102
Steep Terrain
Very small streams
Missing/Bad input data
spotty inundation
around the Great Lakes. Salt Lake City is another example. There are several issues going on that make it challenging to untangle.Salt Lake City, NWS LID CCSU1 Action Stage - HUC 16020204
Misc
There are several other cases that would need further investigation to resolve. There may be commonality in the root cause of many of the issues related to single pixel inundation but this requires more analysis and I am not sure at the moment this would be the best return on investment.
Stream below dam follows correct path but inundation is mapped primarily on diversion channel (MS):
NWS LID FWLC2 Action Stage - HUC 11020005
Streams with high sinuosity: Limitations in the vector representation of stream networks could also partially explain single pixel inundation in some areas as well.
NWS LID LPSC2 Action Stage - HUC 14080105
Sinks adjacent to stream: This was partially resolved with setting a elevation threshold on the lateral thalweg adjustment but there are still some places where single pixel inundation remains. In general, there should probably be a "rule" in FIM 3 that limits or eliminates situations where there is inundation within a catchment that does not connect back to the stream. We can probably resolve this in the hydroconditioning.
NWS LID GATU1 Action Stage - HUC 16020102
Stream confluences: This is something that we were seeing in FIM 2 and would probably be wise to reach out the the ESRI Arc Hydro team. At the confluence of two tributaries, significant differences (> 5 meters) in thalweg elevation cause an immediate drop to the thalweg path of the higher stream. My initial hypothesis assumed this would explain the majority of the single pixel inundation issues but it turns out that there are only a few instances in FIM 3.
False continuity in derived stream network: Sometimes nearby streams are joined together during the derivation of the FIM stream network. In this example near Scottsdale, AZ, a sharp, unnatural HUC 8 boundary intersects a MS headwater stream segment and it is rerouted to a nearby stream,
NWS LID IDXA3 Action Stage - HUC 15060106
Notes
thalweg_drop_check.py
needs to be updated so that it checks HUCs with no MS headwater points. The HUC8 intersection points would probably be the best choice for including these HUC profiles.