Derive Stream As Line (Spatial Analyst)

Available with Spatial Analyst license.

Summary

Generates stream line features from an input surface raster with no prior sink or depression filling required.

Usage

  • The input surface raster can be a digital elevation model (DEM) with no prior sink filling or a hydroconditioned DEM. The tool is not sensitive to errors in the surface raster that can act as depressions or sinks where flow terminates; filling sinks or depressions is not necessary.

  • The Output stream features parameter produces an output polyline feature that corresponds to stream lines that met the accumulation threshold, specified through the optional Accumulation threshold (accumulation_threshold in Python) parameter. If no Accumulation threshold value is provided, the tool calculates an area threshold based on the input surface raster size (0.2 percent of the total number of cells) by default While flow direction and accumulation will be calculated internally to derive streams, they are not an output. Use Derive Continuous Flow to obtain flow accumulation and flow direction rasters using the same methodology.

  • When the input surface raster contains real depressions within the surface raster, the depressions must be specified in Input raster or feature depressions data (in_depressions_data in Python) to be considered cells where water can flow into but not outward (an outlet). Depression area information can be either a raster or a feature class. The feature class can be a point, polyline, or polygon.

  • An Input accumulation weight raster (in_weight_raster in Python) value can be specified to apply a weight to each cell when deriving accumulation, which is an intermediate step. If a weight raster is applied, select an appropriate flow accumulation threshold for Accumulation threshold (accumulation_threshold in Python).

  • Specify an Accumulation threshold (accumulation_threshold in Python) value that reflects the complexity of the terrain in the study area or that matches the size of a contributing area of your choice. For example, if the threshold is equal to 20 hectares, only cells with 20 or more hectares of upstream flow will define a stream raster

  • If the Input raster or features depressions data parameter, the Input accumulation weight raster parameter, or data to apply environment settings is used, the default Accumulation threshold value will be recalculated based on the area of intersection between the inputs. However, once you specify a value for the Accumulation threshold parameter, it will no longer be recalculated based on changes in input selection. You may encounter the same situation when running the tool in batch mode using the Input surface raster value as a batch parameter in which the Accumulation threshold value will be calculated based on the first input and will not change as other raster layers are processed in batch mode.

  • Use the Stream designation method parameter to assign a unique value of stream sections between intersections or an order to the segments of streams. The Constant option is the default value, and all streams are assigned the same value equal to 1. When Unique is specified, each stream section between intersections will be assigned a unique value. Additional ordering methods are Strahler, Shreve, and Hack. The Strahler method increases the order of a stream when streams of the same order intersect. The Shreve method assigns order to streams based on magnitude. All links with no tributaries are assigned a magnitude (order) of one. Magnitudes are additive downslope. When two links intersect, their magnitudes are added and assigned to the downslope link. The Hack method increases the order of a stream by one with respect to the order of a stream to which it discharges. The main river channel is assigned a magnitude of 1, and all streams discharging to it are assigned a magnitude of 2, and so on.

  • When the Simplify features parameter is checked (simplify in Python), the output stream feature lines will be simplified by removing vertices using the Douglas-Peucker algorithm with a tolerance of sqrt(0.5) * cell size. This algorithm retains critical points by identifying and removing relatively redundant vertices.

  • NoData cells are considered noise and by definition do not have an associated value. The tool will ignore these cells when identifying the direction of the least steep uphill neighbor, as well as in the determination of flow direction and accumulation.

  • With the Force all edge cells to flow outward parameter unchecked (force_flow = "NORMAL" in Python), the default setting, a cell at the edge of the surface raster will flow toward the inner cell with the steepest drop in z-value. If the drop is less than or equal to zero, the cell will flow out of the surface raster.

  • See Analysis environments and Spatial Analyst for additional details on the geoprocessing environments that apply to this tool.

  • References:

    • Douglas, David H., and Thomas K. Peucker. 1973. "Algorithms for the Reduction of the Number of Points Required to Represent a Digitised Line or its Caricature." The Canadian Cartographer, 10(2): 112–122.

    • Ehlschlaeger, C. R. 1989. "Using the AT Search Algorithm to Develop Hydrologic Models from Digital Elevation Data." International Geographic Information Systems (IGIS) Symposium 89: 275-281.

    • Hack, J. T. 1957. "Studies of Longitudinal Stream Profiles in Virginia and Maryland." Geological Survey Professional Paper 294: 45–95.

    • Jenson, S. K., and Domingue, J. O. 1988. "Extracting Topographic Structure from Digital Elevation Data for Geographic Information System Analysis." Photogrammetric Engineering and Remote Sensing 54 (11): 1593–1600.

    • Metz, M., Mitasova, H., & Harmon, R. S. 2011. "Efficient extraction of drainage networks from massive, radar-based elevation models with least cost path search." Hydrology and Earth System Sciences 15(2): 667-678.

    • Shreve, R. 1966. "Statistical Law of Stream Numbers" Journal of Geology.74: 17-35

    • Strahler, A. N. 1957. "Quantitative analysis of watershed geomorphology" Transactions of the American Geophysical Union8 (6): 913-920

Parameters

LabelExplanationData Type
Input surface raster

The input surface raster.

Raster Layer
Output polyline features

The output feature class that will contain the identified streams.

Feature Class
Input raster or feature depressions data
(Optional)

An optional dataset that defines real depressions.

The depressions can be defined either through a raster or a feature layer.

If input is a raster, the depression cells must take a valid value, including zero, and the areas that are not depressions must be NoData.

Composite Geodataset
Input accumulation weight raster
(Optional)

An optional input raster dataset that defines the fraction of flow that contributes to flow accumulation at each cell.

The weight is only applied to the accumulation of flow.

If no accumulation weight raster is specified, a default weight of 1 will be applied to each cell.

Raster Layer
Accumulation threshold
(Optional)

The threshold for determining whether a given cell is part of a stream in terms of the total area that flows into such cell.

Areal Unit
Stream designation method
(Optional)

Specifies the unique value or order of the streams in the output attribute table.

  • ConstantThe output stream segments will all equal 1. This is the default.
  • UniqueEach stream will have a unique ID between intersections in the output.
  • StrahlerThe Strahler method, in which stream order only increases when streams of the same order intersect, will be used. The intersection of a first-order and second-order link will remain a second-order link, rather than creating a third-order link.
  • ShreveThe Shreve method, in which stream order is assigned by magnitude, will be used. All links with no tributaries are assigned a magnitude (order) of one. Magnitudes are additive downslope. When two links intersect, their magnitudes are added and assigned to the downslope link.
  • HackThe Hack method, in which each stream segment is assigned an order greater than the stream or river to which it discharges, will be used. For example, the main river channel is assigned an order of 1, all stream segments discharging to it are assigned an order of 2, any stream discharging to an order 2 stream is assigned an order of 3, and so on.
  • AllThe output attribute table will show each stream segment designation based on all methods.
String
Simplify features
(Optional)

Specifies whether the output stream lines will be smoothed into simpler shapes.

  • Checked—The stream feature lines will be simplified using the Douglas-Peucker algorithm with a tolerance of sqrt(0.5) * cell size. This is the default.
  • Unchecked—The stream feature lines will not be smoothed.
Boolean

DeriveStreamAsLine(in_surface_raster, out_stream_features, {in_depressions_data}, {in_weight_raster}, {accumulation_threshold}, {stream_designation_method}, {simplify})
NameExplanationData Type
in_surface_raster

The input surface raster.

Raster Layer
out_stream_features

The output feature class that will contain the identified streams.

Feature Class
in_depressions_data
(Optional)

An optional dataset that defines real depressions.

The depressions can be defined either through a raster or a feature layer.

If input is a raster, the depression cells must take a valid value, including zero, and the areas that are not depressions must be NoData.

Composite Geodataset
in_weight_raster
(Optional)

An optional input raster dataset that defines the fraction of flow that contributes to flow accumulation at each cell.

The weight is only applied to the accumulation of flow.

If no accumulation weight raster is specified, a default weight of 1 will be applied to each cell.

Raster Layer
accumulation_threshold
(Optional)

The threshold for determining whether a given cell is part of a stream in terms of the total area that flows into such cell.

Areal Unit
stream_designation_method
(Optional)

Specifies the unique value or order of the streams in the output attribute table.

  • CONSTANTThe output stream segments will all equal 1. This is the default.
  • UNIQUEEach stream will have a unique ID between intersections in the output.
  • STRAHLERThe Strahler method, in which stream order only increases when streams of the same order intersect, will be used. The intersection of a first-order and second-order link will remain a second-order link, rather than creating a third-order link.
  • SHREVEThe Shreve method, in which stream order is assigned by magnitude, will be used. All links with no tributaries are assigned a magnitude (order) of one. Magnitudes are additive downslope. When two links intersect, their magnitudes are added and assigned to the downslope link.
  • HACKThe Hack method, in which each stream segment is assigned an order greater than the stream or river to which it discharges, will be used. For example, the main river channel is assigned an order of 1, all stream segments discharging to it are assigned an order of 2, any stream discharging to an order 2 stream is assigned an order of 3, and so on.
  • ALLThe output attribute table will show each stream segment designation based on all methods.
String
simplify
(Optional)

Specifies whether the output stream lines will be smoothed into simpler shapes.

  • NO_SIMPLIFYThe stream feature lines will not be smoothed.
  • SIMPLIFYThe stream feature lines will be simplified using the Douglas-Peucker algorithm with a tolerance of sqrt(0.5) * cell size. This is the default.
Boolean

Code sample

DeriveStreamAsLine example 1 (Python window)

This example shows how to use DeriveStreamAsLine to generate stream line features from an input surface raster with no prior sink filling.

from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapy/examples/data" 
DeriveStreamAsLine("surface.tif", "C:/sapyexamples/output/streams.shp", "", "", "", "")
DeriveStreamAsLine example 2 (stand-alone script)

This example generates stream line features from an input surface with no prior sink filling and real depressions. The streams start at locations where the accumulated flow is collected from an area larger or equal to 2 hectares.

# Name: DeriveStreamAsLine_standalone.py
# Description: Generates stream lines from an input surface raster without prior sink filling. 
#              The streams start from locations where the accumulated flow is collected from an area 
#              larger or equal to 2 Hectares considering depressions (polygons).
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set the analysis environments
env.workspace = "C:/sapyexamples/data"

# Set the local variables
in_surface_raster = "surface.tif"
in_depressions_data = "depressions.shp"
in_weight_raster = ""
out_streams = "C:/sapyexamples/output/streams.shp"
area_threshold = "2 Hectares"
stream_designation_method = "CONSTANT"

# Execute
DeriveStreamAsLine(in_surface_raster, out_streams, in_depressions_data, 
                   in_weight_raster, area_threshold, stream_designation_method)

Related topics