Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a shapefile which contains the streams that were digitized from a satellite Image. I would like to calculate the stream order for this data. The data does not exactly match the DEM that I have, since the satellite image was of much higher resolution.

Is there any arcscript, code or readymade tool which I could use to calculate the stream orders?

I have Arcgis 10 with spatial & 3D analyst, as well as QGIS.

share|improve this question
up vote 4 down vote accepted

Check out the NVS Vector Stream Tool which ...

is a user-friendly ArcCatalog (9.3.x) Toolbox geoprocessing tool which simply assigns a numeric order to segments of a poly line feature class. Unlike the Spatial Analyst Tools for Hydrography, this tool solely uses vector stream data instead of raster stream data accompanied by a flow direction raster.


NVS Vector Stream Tool installers are available for both ArcGIS Desktop 10.0 and ArcGIS Desktop 9.3.1.

share|improve this answer
Thanks! I will check that out. – Devdatta Tengshe Apr 3 '12 at 16:58
It worked as I had wanted. There were just a few intermidatery steps that I had to do, like first export to a coverage, so that there would be from and to nodes. After that it worked in a jiffy. – Devdatta Tengshe Apr 4 '12 at 5:53

Out of curiosity I downloaded the NVS stream tool and ran it on a vector river network that has loops and compared the Strahler order generated by this tool with the Strahler order computed by RivEX. The algorithm used by the NVS tool is slower (not really a big problem) but more importantly it is not robust when it is dealing with river networks that have loops or braided. The help does not explicitly state that the network needs to be single threaded. So don't use this tool if your network has loops, it seems that this tool requires single threaded networks, the type you would get from a DEM. This is an important difference that it does not highlight.

In my test data the NVS tool was reporting a Strahler order of 14 when RivEX was returning 5...

share|improve this answer
I too had a similar problem with braided streams. When I went back to the theoretical underpinnings of the D8 theory, I realized that D8 does not allow braided or looping streams, so im not sure how Rivex works with them. – Devdatta Tengshe Sep 8 '14 at 2:03
It looks like the NVS tool is incorrectly incrementing the Strahler order at each bifurcation (the top of a loop). RivEX labels both sides of a loop the same order if they share the same source and is capable of dealing with highly multi-threaded river networks. – Hornbydd Sep 8 '14 at 8:00

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.