Label | Explanation | Data 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.
| String |
Simplify features (Optional) | Specifies whether the output stream lines will be smoothed into simpler shapes.
| Boolean |
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
DeriveStreamAsLine(in_surface_raster, out_stream_features, {in_depressions_data}, {in_weight_raster}, {accumulation_threshold}, {stream_designation_method}, {simplify})
Name | Explanation | Data 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.
| String |
simplify (Optional) | Specifies whether the output stream lines will be smoothed into simpler shapes.
| Boolean |
Code sample
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", "", "", "", "")
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)