John's Creek Watershed Analysis
March 19, 1999
University of Washington
Forest Engineering 423/523

John's Creek Project Team



STREAMS LAYER

Hoodsport Stream Coverage

Background

Flow Accumulation Stream Network

Stream Power and Finn's Method

Modification of Finn's Method and Stream Power Accumulation

Streamline and Clean GRID functions

Stream Network Results and Conclusion

Analysis Watershed


Background

The reason we are trying to create a new stream coverage, rather than use the DNR provided coverage, is because the density of the stream network in the DNR coverage is very low. The DNR stream coverage was digitized by hand directly off aerial photographs. The locations of the streams in this coverage are accurate but the number of streams is limited because of the small scale of the aerial photographs and because heavy canopy obscures many of the smaller streams.

The most accurate elevation data we have is the DNR contour coverage. As a first step in creating a new stream network, a dem (digital elevation model) was created from the contour coverage with the ARC command 'topogrid'. The topogrid command has a subcommand 'stream' that allows the input of a line coverage representing streams. If stream coverage exists, inputting it aids Arc/Info in creating a hydrologically correct dem. Unfortunately, we could not use this option because the DNR stream coverage contains multiple-line channels and polygons and only single arc streams are allowed (see figure 1).

 Figure 1. Example of polygons and multiple stream lines in DNR streamline coverage


Flow Accumulation Stream Network

Once the dem was created from the DNR topo lines, the grid functions 'flowdirection' and 'flowaccumulation' were used to create a new stream network.

Our objective was to create a new stream network with GRID that agreed closely with the DNR stream network, but had many additional low order streams. In actuality, the GRID-created stream network (using a flow accumulation threshold) did not agree terribly well with either the DNR stream coverage or the DNR contour coverage that was the original source data.

The irregularities that appeared in the GRID stream network may be due to errors in the DNR contour coverage or to the large number of sinks in the study area. The GRID 'sink' command identified 295 sinks which had to be filled to create the depressionless dem necessary for the 'flow direction' function. The errors in the contour coverage resulted in some strange looking flow patterns that do not agree with the topography of the land surface. Some of the irregularities are evident below in figure 2. The blue lines are the DNR stream coverage and the red lines are the GRID stream network (flow accumulation cells greater than 100).

 

 

Figure 2. Stream network created by setting the flow accumulation threshold at 100 (in red). DNR hydro coverage in blue and DNR contours in gray.


Stream Power and Finn's Method

Because the first attempt at increasing the density of the stream network was not completely satisfactory, an attempt was made to improve on it.

First, instead of using the flow accumulation function to determine the stream network, we decided to use 'stream power'. Stream power can be defined as flow accumulation multiplied by gradient. A gradient grid (o-drop-grid) is a grid with each cell value equal to the percent gradient along the direction of flow. It is an optional grid that can be automatically created with the 'flow direction' function. Multiplying the gradient grid by the flow accumulation grid produces a stream power grid. The stream network is created from the stream power grid by defining a threshold value (just like flow accumulation).

Second, Finn suggested a method that would force the GRID stream network to align with the DNR stream coverage. The method is summarized in the following eight steps.

1. Create a dem in which the DNR stream coverage is represented by deep trenches.

Grid: stream_dem = filldem - 100
Running... 100%
Grid: new_dem = con(isnull(hydrogrid),filldem,stream_dem)
Running... 100%

2. Fill this dem to create a depressionless dem for the flowdirection function

Grid: fill new_dem fill_stream 
Filling...
Number of sink(s): 354
Number of sink(s): 47
Number of sink(s): -1

3. Use the filled dem to create a flow direction grid and a gradient grid.

Grid: stream_dir = flowdirection(fill_stream,flow_grad)
Computing flow direction...

4. Create a combined flow direction grid that contains the original flow direction values for the hillslopes and the new flow direction values for the DNR streams.

Grid: direction = con(isnull(hydrogrid),flowdir,stream_dir)
Running... 100%

5. Create a flow accumulation grid from the combined flow direction grid

Grid: streamacc = flowaccumulation(direction)
Computing flow accumulation...

6. Create a combined gradient grid using the original gradients for the hillslopes and the new gradients for the DNR streams.

Grid: stream_grad = con(isnull(hydrogrid),gradient,flow_grad)
Running... 100%

7. Compute a streampower grid by multiplying the flow accumulation grid from #5 with the gradient grid from #6

Grid: streampower = streamacc * stream_grad
Running... 100%

8. Use the streampower grid to define a new stream network by setting a threshold value.

 


Modification of Finn's method and Stream Power Accumulation

Modifying the dem to force flow into the DNR streams did improve the alignment of the GRID created stream network, and using stream power instead of flow accumulation to define the stream network effectively increased stream length, particularly in the source or headwater basins where slopes tend to be steep. In figure 3 below, the green cells are from the streampower network and the overlying red cells are from the flow accumulation network.

 

Figure 3. The blue lines are the DNR hydro theme, the red lines are the flow accumulation theme greater than 100, and the green grid is the stream power grid greater than 3000.

 

The drawback of modifying the dem with the method described above is that the resulting stream network has many multiple stream lines.

The multiple stream lines could be the result of modifying the dem. The modified dem contains both the original elevation information off the contour lines (which determined the original location of the stream network) and the new elevation information from the DNR stream coverage (which forces the stream to follow the DNR stream lines).

However, I suspected the multiple line problem is mainly a result of using the combined gradient and flow direction themes created in steps #4 and #6. To test this theory, I created new flow accumulation and stream power themes using the modified dem flow direction and gradient themes. In other words, I skipped steps #4 and #6 and did not try to insert old values for hillslope gradient and flow direction into the new themes. 

Grid: new_acc = flowaccumulation(stream_dir)
Grid: new_power = new_acc * flow_grad

 

A second problem with the new method, also visible in figure 3, is the discontinuous nature of the stream network created by the stream power grid. It is a problem because the streamline function requires a raster linear network with contiguous cells (ARC help).

 

To fill in the gaps of the streampower network, a flow accumulation function was run on all streampower cells with values above the stream network threshold.

Grid: power_int = con(new_power ge 3500,1)
Running... 100%
Grid: power_acc = flowaccumulation(power_int)
Computing flow accumulation...

 

Figure 4 is a screen capture of a portion of the stream network (purple 'power-acc' grid) resulting from the flow accumulation of the streampower grid. The power_acc grid is much improved over the previously created stream network grids. The gaps in the streampower network have all been filled; the number of multiple stream-lines are much reduced; and the network meets our two main objectives: (1) consistency with the DNR streams and (2) increase in stream density.

  

Figure 4. Screen capture of the power_acc grid displayed over the DNR hydro layer and the DNR contours

 

The power_acc grid still contains some disturbing flow anomalies. For example, there are double stream lines, orthogonal stream networks, and stream lines that disagree with the topography as defined by the DNR contours. Some of the flow anomalies are due to errors in the source data. Figure 5 shows an obvious error in the contour coverage that may have been transmitted to the dem and from there to the final stream network.

 

 Figure 5. Example of unusual flow patterns in the power_acc grid and errors in DNR contour coverage.

 


Streamline and Clean GRID functions

Once the stream network grid was created, the GRID stream line function was used to convert the grid to a line coverage.

STREAMLINE(<net_grid>, <dir_grid>, {out_item}, {weed})

The net grid must be a grid of valid integer values on a background of NODATA.

The weed tolerance is an algorithm used for line generalization. I tried using three different values for weed tolerance and compared results. Figure 6 shows the stream line created using a weed tolerance of 0.

Grid: streamline = streamline(con(power_acc ge 3,1),stream_dir)
Running... 100%

 

Figure 6. Streamline coverage (light brown) created with the GRID streamline function from the power_acc grid. The figure shows North and South forks of Johns Creek which has been chosen as the analysis basin for the FE423 project group. Blue lines are DNR hydro coverage.

Weed Tolerance = 30

From: 28408 Vertices and 1887 Arcs
To  : 5719 Vertices and 1887 Arcs

Weed Tolerance = 50

From: 28408 Vertices and 1887 Arcs
To  : 4766 Vertices and 1887 Arcs

 

Figure 7 is a comparison of the streamlines created using three different values for weed tolerance. The final stream line coverage was created using a weed tolerance of 30. The line created with a weed tolerance of 0 resulted in a very squiggly irregular line that is an artifact of the cell size of the source grid. A weed tolerance of 50 resulted in too much generalization and the streamlines became too straight, no longer fitting the curves of the topography.

Weed tolerance = 0

Weed tolerance = 30

Weed tolerance = 50

Figure 7. Comparison of stream lines created with 3 different values for weed tolerance

Clean

After running the streamline function, I noticed that there were quite a few extraneous small tails in the streamline coverage that I wanted to delete, and many parallel 'double' stream lines that I wanted to merge into a single channel. Clean is an editing procedure in Arc for line coverages that allows you to specify a dangle length and a fuzzy tolerance. All line segments that are shorter than the specified dangle length are deleted. Line segments that lie closer together than the fuzzy tolerance are merged.

CLEAN <in_cover> {out_cover} {dangle_length} {fuzzy_tolerance} {POLY | LINE}

 I tried a number of different dangle lengths and fuzzy tolerances and then compared them to the hydro coverage uncleaned streamline and contour lines. The final version of the cleaned streamline I used a dangle length of 150 and the default fuzzy tolerance of 0:

Arc: clean streamline cleanstream 150 # line

I had to give up trying to merge the 'double' streamlines because when I set the fuzzy tolerance high enough to join parallel channels there were many unwanted side effects. The positions of stream channel junctions were altered and branching stream channels were converted into complex-looking polygons.

Figure 8. The black stream segments have been deleted from the streamline coverage using the Arc clean command. The dangle length was set at 150


Stream Network Results and Conclusion

Streamgrid1 is the stream grid created directly from the power_acc grid before any editing has taken place. The cells (with data) in streamgrid1 are identical to the cells (with data) in power_acc, but the cell values are different. The power_acc grid contains values from the flowaccumulation of streampower, while the streamgrid1 contains values of 1 on a background of NODATA.

Grid: streamgrid1 = con(power_acc ge 1,1)

Streamgrid2 is a grid created from the final streamline coverage. Streamgrid2 contains stream data that has been edited with the streamline function (weed tolerance) and the clean command (dangle tolerance).

Grid: setcell streamgrid1
Grid: streamgrid2 = linegrid(streamline)

 As a final step, the accuracy of the stream network created by the methods outlined in this page should be assessed by comparisons with the landsat map, orthophoto, and USGS topographic map. Comparisons of the streamline coverage with these image data sources will locate discrepancies in stream channel placement and define the appropriate stream network density. When creating a stream network with GRID functions, the to The stream network density is determined by the threshold value applied to the flown accumulation grid. A stream network that is too dense will identify areas of confined and convergent topography such as swales and dry gullies as streams, even though no surface channels actually exist. A stream network that is too sparse will leave the lower-order stream channels off the map. The location of the stream network should be consistent with the visible riparian vegetation patterns on the landsat image and the orthophoto, with the 'wet' areas identified on the landsat images using NDVI or Tasseled Cap indices, and with the topographic detail of the USGS map. The location of the higher-order streams in the new streamline coverage should also be consistent with the DNR-provided hydro coverage.


Analysis Watershed

Figure 9 shows the location of the analysis watershed with respect to the Hoodsport planning area and the new streamline theme. The outlet of the watershed is the bright green pour point. The watershed includes the North and South Branches of Johns Creek. The pour point was digitized and converted to a grid in Arcview, then the GRID watershed function was used to create a grid of the watershed above the pour point or 'source' grid.

WATERSHED(<dir_grid>, <source_grid>)

Grid: watershed = watershed(stream_dir,pour)

Next, a polygon coverage was created from the watershed grid.

Grid: wtrshdpoly = gridpoly(watershed)
Converting GRID WATERSHED to Coverage WTRSHDPOLY
Creating labels...
Creating WTRSHDPOLY.PAT...

Figure 9. Hoodsport project group analysis watershed

Back to outline