Generate Stream Order

The Generate Stream Order tool accepts an input stream network shapefile, converts it into a NetworkX graph, and calculates the Strahler stream order value for each reach feature within the network. If there are subnetworks found within the input stream network shapefile, stream order values are calculated separately for each subnetwork.




  • ArcGIS: version 10.4 or higher
  • GDAL: A separate installation of the Geospatial Data Abstraction Library is required by this tool, in order to directly convert between shapefiles and NetworkX graphs. Because GNAT users must operate ArcGIS in a Windows environment, we strongly recommend that the user installs GDAL separately using the Windows binaries offered by Tamas Szekeres at GISInternals. Detailed instructions for installing the GDAL binaries area available here.
  • NetworkX 1.11: Please note, GNAT has only been tested with version 1.11. Other versions have not been tested and are not currently supported.

Input Parameters


Input stream network shapefile

Line shapefile representing a stream network. Ideally this network should be a USGS NHD flowline dataset, or derived from NHD. Also, all canal features (i.e. FCode = 336) must be removed prior to running the tool.

Temporary workspace

Workspace for storing intermediate files produced during tool processing. The workspace can only be a folder.


Output shapefile (line)

The stream network polyline feature class, which will include new attribute fields generated by the tool. The new fields include:

  • _strmordr_ : attribute field with calculated stream order value.

Technical Background

Calculation Method

The Generate Stream Order tool relies on the excellent NetworkX python library, which is in turn based on concepts from graph theory. This tool converts the input stream network shapefile into a graph object, which is how the file is then processed throughout the workflow, until being converted back into a shapefile.

Assuming the output shapefile produced by the Generate Network Attributes tool serves as the input shapefile for this tool, the Generate Stream Order tool will select all edges where _edge_type_ = 'headwater', then select all successor edges for each headwater edge. Based on a series of conditional statements, the successor edges will either have their stream order value increased, or not, and then the next round of successor edges will be selected. This process is repeated until the the outflow edge is reached.


The Generate Stream Order tool is the third step in GNAT Toolbox’s Stream Network Preparation workflow. We recommend running the Generate Stream Branches tool next to complete the workflow.

Troubleshooting and Potential Issues

Topological errors in the input stream network shapefile will likely cause errors when running the Generate Stream Order tool. Ideally the user should use the output shapefile generated by first running the Find Subnetworks tool, then the Generate Network Attributes tool, and using that tool as the input shapefile for Generate Stream Order.