landlab / landlab

Landlab codebase, wiki, and tests
https://landlab.readthedocs.io/
MIT License
343 stars 328 forks source link

How to use FlowAccumulator to get the stream as in ArcGIS? #1279

Open sshong-23 opened 3 years ago

sshong-23 commented 3 years ago

Hi, I'm trying to use landlab to simulate the hydrography in our small catchment. The Raster that I use is created in ArcGIS. Here is my question: When I using this 'OverlandFlow' component, fa = FlowAccumulator(mg,'topographic__elevation', flow_director='D8', runoff_rate=None, depression_finder=None)

no matter which flow_director I used, it could not produce the same flow path as I did in ArcGIS. Instead, there are a lot of nodes that just hold the water without flowing downstream. :( This is our catchment with an area about 1.5 km^2. image zoom in: image

and further, the channel profiler is also failed because no such drainage could be produced...

Is there anyone who could help me with this? Thanks a lot. Hong

awickert commented 3 years ago

It looks like your DEM includes many internally drained depressions. The ArcGIS tool may be automatically flooding these to generate a continuous drainage network. If you can give Landlab the flood-filled DEM, I expect that you will obtain the same outputs. On the other hand, if the depressions are a real part of the network, you may want to use a tool like the "Depression Hierarchy" to build a network of depressions that can then be linked by channels. But I am guessing that you want the flood-filled DEM. (Aside: RichDEM is a good tool for this if you want to use something other than Arc.)

SiccarPoint commented 3 years ago

These look like legitimate depressions in your raster to me - and the accumulators don't route across depressions by default. You can either specify a depression_finder when you call the accumulator, run an instance of DepressionFinderAndRouter independently of the accumulator, or use the SinkFiller to permanently remove the depressions from your DEM. See the docs and/or the tutorials for more detail.

SiccarPoint commented 3 years ago

@awickert JINX

sshong-23 commented 3 years ago

@awickert @SiccarPoint This catchment is actually an agricultural area with corns and sunflowers, there is no possibility for so many sinks. I prefer to use the flood-filled DEM. Thanks! Hope I could fix it quickly...

gregtucker commented 3 years ago

Try the argument depression_finder="DepressionFinderAndRouter" or depression_finder="LakeMapperBarnes"

The first of these will route flow through depressions without changing any of the elevations (i.e., "filling"). The latter uses a faster algorithm, but if I recall correctly, it does fill the DEM by default. However, you can deactivate this through the choice of input arguments; see the documentation.

nicgaspar commented 3 years ago

One other thing to note ... if you plan to use an overland flow routine, rather than steady state flow, many of them only use D4 flow routing and don't work with D8. You can fill sinks for D4, but it will then for sure look different than what ARC shows you.