Add D8 flow routing using new libtopotoolbox interface#432
Merged
Conversation
Resolves TopoToolbox#421 This commit allows users to use the new libtopotoolbox functions for D8 routing with least cost auxiliary topography carving by passing `method="d8"` and `sink_resolution="lcat"` to the FlowObject constructor. The default argument for "sink_resolution" is "carve", which applies the previous behavior. The new version (`FlowObject(method="d8", sink_resolution="lcat")`) will NOT produce identical results to (`FlowObject(method="d8", sink_resolution="carve")`) because of differences in the underlying libtopotoolbox implementation. All of the FlowObject tests have been modified to also run with "d8" and "lcat", and they should pass. The various flow routing functions are implemented as private functions of the flow_object module. Users should not call these functions but use the `FlowObject` constructor. It is highly likely that the implementation will need to change as we add different flow routing algorithms (Dinf, MFD, etc.), but the FlowObject constructor will always be the user-facing interface to flow routing. Signed-off-by: William Kearney <william.kearney@uni-potsdam.de>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Resolves #421
This commit allows users to use the new libtopotoolbox functions for D8 routing with least cost auxiliary topography carving by passing
method="d8"andsink_resolution="lcat"to the FlowObject constructor.The default argument for "sink_resolution" is "carve", which applies the previous behavior. Nothing will change for users at the moment without explicit changes to user code. Eventually, we will probably deprecate the old behavior.
The new version (
FlowObject(method="d8", sink_resolution="lcat")) will NOT produce identical results to (FlowObject(method="d8", sink_resolution="carve")) because of differences in the underlying libtopotoolbox implementation.All of the FlowObject tests have been modified to also run with "d8" and "lcat", and they should pass.
The various flow routing functions are implemented as private functions of the flow_object module. Users should not call these functions but use the
FlowObjectconstructor. It is highly likely that the implementation will need to change as we add different flow routing algorithms (Dinf, MFD, etc.), but the FlowObject constructor will always be the user-facing interface to flow routing.