STREAMS LAYER
Hoodsport Stream Coverage 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 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).
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.
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.
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.
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%
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.
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.
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. 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...
|