# Fill Function, flow direction and Flow accumulation

667
3
02-02-2023 12:29 AM
Labels (1)
by
New Contributor

Hey there,

im pretty new to the topic of creating and deliniating watersheds using arc gis. However i found some "issues" using the Fill sinks tool followed by flow direction and flow accumulation tool. Im using a 1 by 1 m DEM and the running the Fill function results in flatening certain areas creating weird and straight accumulation paths. If i set the Z-limitation of the fill function on 0.02 helps preventing this issue (sometimes yes, sometimes not?!). Using the Z-limitation on the Fill leads to another problem with the flow accumulation beeing intersected in this area. Further the flow accumulation does not fit the virtual river line in this section at all. I have attached some screens of this area. Is there any workaround having relativly flat areas? Is it possible to "force" the flow accumulation to follow my river-line?

Im using ArcGIS Basic  version 10.8.2

Jan

3 Replies
Regular Contributor II

Jan,

My guess is that there is a road or railroad embankment that crosses your expected flow path (I can see it in your first image) and that the DEM is filled up there and doesn't "know" there is a culvert/bridge to for flows to go in that direction. When you fill you fill up to the lowest point on that embankment and the fill function does its job.

To get around this, add a line layer and draw a line where the culver/bridge is. The create a raster (DEMLine) using line(s) with the cell size, etc. of  the original DEM. Where the line is you should have 1 and where it is not 0. Then multiply DEMLine by some big number (say 500).

Now DEMLine from your original DEM  and you make DEM2. This step "burns" a hole in the DEM where the culvert/bridge is.

Run the fill tool and flow direction tool starting with  DEM2.  The fill step will fill up the "hole" where the culvert/bridge is created but only as high as the DEM is on the low side. You get DEM3. The flow direction should be as you expect it to be

The Arc Hydro add on is made for this. I created this thread (https://community.esri.com/t5/water-resources-questions/archydro-problem-solvers/m-p/1246227#M4287) focused and sharing my journey with Arc Hydro.

In Arc Hydro the above layers have some default names. I believe they are (it's been an while...)

• DEM = rawdem
• line layer = agreestream
• DEM3 = agreedem (this is a "hydraulically correct DEM)

Good luck,

Mark

by
New Contributor

Hi Mark,

unfortunately i wont be able to install any addons...  but if i get you right your plan is some sort of raster manipulation. So if i manually create a stream through the crossing by lowering the raster cells, my accumulation should get better in this area? What about the option of setting a weight raster running the flow accumulation tool? I created a Raster from the river line where all cell containing the river line gets 1 otherwise 0 (as you suggested) and tried using this a weighted raster but with no success. However if i get the dokumentation of the tool correct the raster should be more like 1 for a normal cell and e.g. 500 (as you suggested) for a weigthed cell to force the accumulation into ta certain direction (https://pro.arcgis.com/en/pro-app/latest/tool-reference/spatial-analyst/flow-accumulation.htm). In addition the step after creating the DEMline is not clear to me (Now DEMLine from your original DEM and you make DEM2. This step "burns" a hole in the DEM where the culvert/bridge is). Can you give some further explanations?

Thanks once again

Jan

Regular Contributor II

Jan,

Sorry about using the odd terminology.

Yes. I is a raster manipulation so that the flow direction grid is hydrologically correct. I would not assume a flow direction raster derived from a "raw"DEM would be correct. Filling the sinks is a raster manipulation, no? Arc Hydro calls all of this "DEM manipulation" with a subset of "DEM reconditioning".

So the steps with or without Arc Hydro are:

• Obtain a rawdem (you already have).
• Delineate "agreestream" line features where you want the streams to be "forced" through road crossings or where underground pipes are. You don't have to add lines where the DEM will accurately a creeks or river (unless the river is really wide and you want the flow path to follow a certain thalweg. Make sure your lines through the road embankments connect to raters outside of the embankment.
• Burn the streams: The term "burn" is the actual term used be ESRI in Arc Hydro for "lowering the elevation" of the DEM where a line is. Arc Hydro does this in the background, but it is basically defining a raster where the line is (line to raster conversion resulting in 0=no line, 1=line; the DEMLine in this conversation), then multiplying that raster by a large number (default in Arc Hydro is 1000, but any large value will work) then reducing the original DEM (rawdem in Arc Hydro terms) by subtracting the DEMLine from the DEM.
• Fill sinks: The "hole" burned where the streams were defined by lines through embankments will be filled up no matter how deep they are.
• Run flow direction tool and check.
• Adjust agreestream line features and repeat as needed.

If you define a stream next to a "natural stream" that could be defined by the raster and your stream is does not line up with the natural stream, you could end up with parallel streams and the flow direction could bet confused. I had one result in flow directions that were backwards! So, watch out for this. There is a way to correct the flow direction, but that is for another thread.

I have used Model Builder to do this work since it can be repetitive on larger areas.

Arc Hydro is free. If you don't have admin rights to install it, ask IT. It is worth that hassle.

Arc Hydro has a lot of tools and I haven't had to use all of them.

One of the steps I have used is Building Walls:

• Make a walls line feature class and place lines where you need to build walls to "block" flows from going a certain direction: Delineate a "walls" line feature ("innerwalls" and "outerwalls" in Arc Hydro).
• This is the opposite of burning streams. You make a line raster from the "walls" layer(s). A key here is to "breach" those walls where the "agreestream" lines are. Take a bit of creativity in the geoprocessing procedure, but is do able. May be able to do a raster calculation making the walls raster 0 where ever the "streams" raster is 1 before you multiply the walls raster by a large number and then add it to the elevation dem.)
• I've had to do this at railroad tracks that were not on an embankment, but where culverts conveyed flows across the tracks. The tracks were so low that the filling and resulting flow direction easily ended up with flows going right over the tracks at the wrong place. Building a "wall" along the tracks and burning a stream where the culvert was solved this.