<html style="direction: ltr;">
  <head>
    <meta content="text/html; charset=windows-1255"
      http-equiv="Content-Type">
    <style>body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
  </head>
  <body style="direction: ltr;"
    bidimailui-detected-decoding-type="preferred-charset"
    bgcolor="#FFFFFF" text="#000000">
    On 12/02/2012 01:19, Hamish wrote:
    <blockquote
cite="mid:1329002397.93429.YahooMailClassic@web110012.mail.gq1.yahoo.com"
      type="cite">
      <pre wrap="">sluedtke wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">I have been trying for some hours now but could not find any
solution. 

We do have a shape file of a river network,  but a bad one because single
rivers consist of multiple lines. Just think of the easiest example, a
river with one tributary. I would like to end up with an vector
dataset that holds 2 lines for this example, one for the river and one
for the tributary of course. In my case, the dataset holds, just as an
example, 10 lines, and a distinct set of them makes either the river or
the tributary. The lines of each set are connected by the nodes of the
single lines. 
</pre>
      </blockquote>
    </blockquote>
    Hamish:<br>
    I'm not sure that the problem above is "braided streams". From my
    reading (could be wrong - maybe sluedtke could clarify?) he just
    wants to merge all the reaches in one "tributary" to a single vector
    feature, and all the reaches in the "main river" to a single
    feature. Given the topology requirement that intersecting lines
    always meet at a node, I don't see how to do this in GRASS. <br>
    -- <br>
    Micha<br>
    <blockquote
cite="mid:1329002397.93429.YahooMailClassic@web110012.mail.gq1.yahoo.com"
      type="cite">
      <pre wrap="">
so you have a vector line map of a "braided river" (be it a real one or the
product of a computer surface water flow program which creates artifacts)
and you wish to generalize it into an idealized schematic vector network.
An interesting challenge.

I think the first step is to run v.buffer with a buffer distance greater
than half the maximum width of the parallel braids. The next step is the
reduction back to a center line, like r.thin but for vector areas. Often
you could do v.to.rast -&gt; r.thin -&gt; r.to.vect, but that doesn't work well
for rivers as they are usually long and thin: in order to fit the entire
length of the river into the raster array you need to make the cell res
very coarse compared to the width of the river.

so it becomes the classic "river mile" / "river centerline" problem, and
if you have a good solution to that (especially for cases when there are
shoals and islands in the middle of the river and you don't have full
riverbed bathymetry to find the thalweg) I'd be very interested to hear
about it.

the best I ever managed was v.to.rast at very high cell resolution then
r.cost to find distance from the riverbank, then r.param.scale feature
map to extract the ridgelines, then r.thin, and r.to.vect.
(instead of r.param.scale you could also use r.slope.aspect and look for
places where the slope of the cost-to-shore map is less than some small
threshold)

another idea is to make the crappy lo-res river centerline with r.thin,
then use v.lrs or v.transects(addons) to make step points, then run a
moving window along the river buffer area at high raster res, using one
of the g.region temporary zoom addon modules (g.region.point is one).
Then patch all the new vector segments together and run v.generalize to
smooth the result. I'm pretty confident that would work reasonably well,
but it wouldn't be very efficient.

It would be much more efficient to have a geometric solution than one
that needs rasterization, maybe something like filling the vector buffer
area with lots of little circles of varying sizes, merging as many of them
as possible, then extracting the center coord of each surviving big circle.

as I said earlier, it's an interesting problem..


Hamish
_______________________________________________
grass-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/grass-user">http://lists.osgeo.org/mailman/listinfo/grass-user</a>

This mail was received via Mail-SeCure System.


</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>