Flow analyses produce straight flow lines

3296
5
02-19-2013 11:09 AM
JanetBrewster
Occasional Contributor II
Hi All,

I've been running some tools from the SA hydrology toolset (NOT ArcHydro) for a variety of areas, to estimate surface runoff flow onto and out from specific parcels. Some areas produce logical flow networks, others produce straight flow lines that are clearly incorrect. I've tried this from both bare earth and hydro-enforced DEMs, and they both do the same thing. My workflow is:
- Fill sinks (from .5m DEM)
- Flow Direction
- Flow Accumulation
- Raster Calculator: StreamLink(SetNull(FlowAcc < x, FlowAcc), FlowDir) -- "x" being the cell threshold
- Stream to Feature tool for the result from the Raster Calculator

Attached is an aerial of a wetland area with the derived stream network overlaid -- the drainages are fairly accurate until they go straight, and then clearly deviate from the actual streams seen in the aerial. Are these errors from my processes, or does this analysis sometimes produce these kinds of results? Has anyone experienced this before?  Any thoughts would be greatly appreciated. Thanks!
Janet

ps -- I'm using 10.1 SP1

[ATTACH=CONFIG]21964[/ATTACH]
0 Kudos
5 Replies
MarkBoucher
Occasional Contributor III
I suggest you use the raster calculator to compare the filled DEM with the raw DEM (filledDEM - rawdem). You will probably see that the fill sinks command filled in behind the road embankment explaining why you get the straight lines.

On the raster calculator results you can use the raster symbology options to change the background value of the raster calculator results for color 0 ,0 ,0 to "Null" (or no color). I use the light blue color ramp. This makes it easy to see which grid cells have been changed and the color ramp provides some visual comparison of depths. The identify tools will give you the amount the cells were filled.
0 Kudos
JanetBrewster
Occasional Contributor II
Thanks, Mark.

Is it possible to give parameters to the fill command and tell it not to fill certain cells, or not fill as much? I haven't done what you suggested yet, but it's not clear how to solve the problem, regardless of what I find....  Sorry for being dense....

Janet
0 Kudos
MarkBoucher
Occasional Contributor III
I've never done this, but it could be that if you set the fill limit to really low the fill would be enough to let you get the stream definition and not fill the low areas as much. However, the streams would stop at embankments like the road creates.

You could do a quasi Arc Hydro move like this:

  1. Create a polyline layer (call it breachlines)

  2. Draw breachlines polylines through embankments like the road.

  3. Create a field in the polyline layer for a floating point value.

  4. Put the number -1000 in the field for every feature in breachlines

  5. Convert breachlines to a raster using the floating point value. (call is dropdem).

  6. Add the DEM and the dropdem rasters. This will "burn trenches" into the DEM (call result burneddem).

  7. Perfom the fill tool on burneddem (call result filleddem)

  8. Perform raster math (DEM-filleddem) and check to see if there are locations that need breachlines.

  9. Repeat 2-9 until you are satisfied that you have breached enough "embankments" (this is a good time to use Model Builder!).

You can also use breach lines to better define streams that the DEM can't "see" but you know are there based on other information.

What's happening is that you are lowering the DEM (burning it) at the breach lines down 1000 feet or meters as "trenches" and the fill tool is filling the "trenches" back up to the elevation of the DEM at the lowest point next to the trench. When you perform the flow direction, etc. the streams should prove to be where you expect them to be.

I believe this is exactly what Arc Hydro does except that you can control the width of the "trenches" and also you can create a transition zone (stream buffer) on the sides of the trenches so that any high points you trench misses will be smoothed out to make sure they drain to the stream.

Hope this helps.
0 Kudos
JanetBrewster
Occasional Contributor II
Thank you, Mark!

I sort of understand what you're saying.... Instead of a breachline, I tried to just burn in an existing stream. But when I added that stream raster to the DEM, the resulting "burneddem" was just the stream. Hmmm... If I have time, I may try to download ArcHydro and see if I have better luck.  I'm just not a hydrologist so I'd need the "Idiot's Guide to ArcHydro"....

Thanks again for all your advice -
Janet
0 Kudos
MarkBoucher
Occasional Contributor III
When you created the stream raster, were the raster values Null outside the streams? Maybe when adding rasters, you get no results where the values are Null (I could be wrong about this and don't have time to test it).

Use the raster calculator and an IsNull() test in the Con() function to change the null values to 0 (zero). It would be something like this if the stream raster is "breachlines":
Con(IsNull("breachlines"),0,"breachlines")

Then when you add the stream raster (with a negative number where the streams are), you will get a raster that has changed just where the stream raster values are.
0 Kudos