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.

closed as too broad by PolyGeo Jan 31 '17 at 5:37

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • @PolyGeo: I've rolled back the Edit, since it was never my intent to have this only as an ArcGIS specific question; Furthermore If someone wants to give an QGIS/GDAL based Answer, that too would be useful. – Devdatta Tengshe Jan 30 '17 at 4:35
  • 1
    If you want to also ask how to calculate stream order for vector data without a DEM using QGIS/GDAL then I think you should ask that as a separate question. Otherwise you are effectively asking two questions, which I think sets a poor example for new users who we implore to ask a single focussed question. – PolyGeo Jan 30 '17 at 4:56
  • 1
    Paraphrasing Jeff Atwood I think allowing multi-product questions is a slippery slope. If you might have slightly better odds of getting an answer by posting it for two products, well, by gum, why not maximize your odds by posting it for twenty/all products! – PolyGeo Jan 30 '17 at 5:15
  • 1
    @DevdattaTengshe your comment "Furthermore If someone wants to give an QGIS/GDAL based Answer, that too would be useful" would push this into the "Too Broad" category. You can't mark 2 answers as the answer, so a separate focused QGIS/GDAL question may be more appropriate – Midavalo Jan 31 '17 at 0:06
  • 1
    I disagree this Q should be closed as too broad. The context for the linked Jeff Atwoods post is about cross posting to multiple sites, not multiple solutions within one site. Moreover the existing answers do narrow in on an accepted solution, even if the door is held open for an alternate approach with other software. (And yes I've seen the meta discussion gis.meta.stackexchange.com/questions/4678/…) – matt wilkie Sep 25 '17 at 20:14

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.

  • 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
  • The link in this answer is broken. – PolyGeo Jan 29 '17 at 22:35

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...

  • 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
  • 1
    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

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