Hello Luca:
The procedures I'm aware of all require to start from a DEM.

In your case, starting from a shapefile:
  1. If you have access to the original DEM that was used to create the stream network, then GRASS has another addon, v.strahler that can recreate a table of strahler orders for each stream reach from the stream vector layer + DEM.
  2. If the shapefile is from some unknown source, and it's not too large, then you could attach stream orders manually to each stream reach. First you should insure that the shapefile is topologically correct, i.e. every junction in the stream network is indeed a node. That is, each stream reach is a separate line segment in the geometry. You can do this easily by importing the shapefile into GRASS and running v.clean with the tools "break,rmdangle". The "break" tool makes sure that the line features always have a node at every junction of two stream reaches. The "rmdangle" tool cuts off small dangles when a stream reach overshoots the next downstream tributary.
  3. Once you have a topologically clean stream network, then add an attribute column for stream order. Now you can manually go from each "leaf" section of the stream network and allocate the stream order, working you way downstream. The rules are:
    1. leaves get order 1
    2. when two tributaries of the same order 'n' join, the next downstream reach get order 'n+1'.
    3. When two tributaries of different order join, the next downstream reach gets the same order as the highest.  You can read this more formally here:  https://en.wikipedia.org/wiki/Strahler_number#Definition
  4. If your shapefile is too large to enter all the values by hand, then I don't have any suggestions :-(
Hope that helps.


On 07/16/2015 10:31 PM, Luca Galuppini wrote:
Dear Micha

the page you are linking seems to do exactly what i meant,although i am not familiar with grass commands and how to use them (and where to start :)) thank you for the hint! i see that the tutorial starts from scratch, obtaining a river network from a DEM. in my case i should start with a ready made shapefile, is it possible to classify it?
all the best

Luca

2015-07-16 20:39 GMT+02:00 Micha Silver <[email protected]>:
I do this by getting the Strahler stream order for all stream reaches (using the GRASS r.stream.order addon). Then I display the streams with line width determined by the stream order. Looks pretty nice :-)
<shameless plug>
http://www.surfaces.co.il/strahler-stream-order-in-grass/
</shameless plug>


On 07/14/2015 11:08 PM, Luca Galuppini wrote:
Dear all
i have this idea of rendering a river network so that each river starts as a very thin blue line, and the line width increases little by little as the river goes.
i wouldn't like to modify the original file (eg cutting rivers in pieces and give a different width to each piece) but all rivers are digitized with the right direction so i was wondering if there is an _expression_ to teach qgis what is the start end of a river, and assign a wider line for any given distance, for example:
from start to 200m - line width 0.1
from 200m to 400m - line width 0.2
from 400m and over - line width 0.3
i think this is an interesting problem because i cannot find a "from - to" command in qgis _expression_ language, neither i know how to properly exploit the line direction with code, which would come useful in many other ways...
any python expert out there can help?



This mail was received via Mail-SeCure System.


_______________________________________________
Qgis-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-user
This mail was received via Mail-SeCure System.





This mail was received via Mail-SeCure System.

_______________________________________________
Qgis-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to