Can we teach the algorithm as smart as human?
Some un-confirmed workflow:
- Start from outlet, reversely searching
- Identify confluence A
- Search neighbors of A
- Check whether there is confluence in neighbors
- Identify non-confluence neighbors
when a grid has multiple segment, how to define priority?
- high stream order first
- confluence first
- Longest path possible (using edge vertex)
Can we ignore short flowline? If they are removed, do we need to merge the remaining two segments as one?
We cannot create discontinuity after simplification.
How about this one?
An upgraded version of stream burning is able to resolve some issues.
- First, the zig-zag pattern in red rectangle shows the topology information can be preserved on main channel
- Second, the yellow rectangle shows that threshold is important if we don’t have topology in low order streams
Ultimately, if the stream flowline topology can be simplified and burned into mesh, the fully breaching-filling approach will be possible although it is not an easy task. If not, auto breaching on main channel and full breaching on low order streams seem to be able to keep flow direction mostly correct but modification to DEM wil be substantial.
If full topology is available, when a grid searches for upslope, it must loop through by stream order, then to land. It will won’t resolve issue illustrated in the green rectangle easily (We may break some flowline features again).
Overall, it is likely we should generate topology before actual filling, which may simplify some processes significantly.
Meanwhile, building the topology also has two approaches, by stream order or by stream segment. In general, using stream segment requires more iterations but may be easier to control. And using stream order could add additional complexity.