[GRASS-user] Extract subnet from grass vector network based on selected nodes

Johannes Radinger johannesradinger at gmail.com
Tue Oct 17 06:35:24 PDT 2017


Dear Stefan,
Dear all,

thank you for your tipps, and especially the recommendations regarding the
use of the igraph library. In fact, I decided to use do most of the network
analysis now in igraph/R. I use GRASS and the report option of v.net to get
a table of all vertices and edges my graph/network consists of.
Subsequently, I load these tables in igraph and conduct specific analysis.
That seems a very convenient way to obtain most of the information I am
looking for.

/J

On Fri, Oct 13, 2017 at 3:17 PM, Stefan Blumentrath <
Stefan.Blumentrath at nina.no> wrote:

> Hi Johannes,
>
>
>
> Sorry for the delayed response.
>
>
>
> You could try v.net and then use igraph.
>
>
>
> See: https://github.com/NINAnor/gudbrand_hydro/blob/master/v.
> igraph.order.py
>
> as an example for network analysis using a GRASS python script in
> combination with igraph.
>
>
>
> What you would need is to compute the paths between all possible
> combinations of sampling sites (using e.g. http://igraph.org/python/doc/
> igraph.GraphBase-class.html#get_shortest_paths).
>
> Once you got a unique list of edges you can use v.extract I guess to get
> your subnetwork…
>
>
>
> Or if you continue with network analysis you could just use:
>
> http://igraph.org/python/doc/igraph.GraphBase-class.html#subgraph_edges
>
>
>
> Hope that is somehow useful…
>
>
>
> Cheers
>
> Stefan
>
>
>
> *From:* grass-user [mailto:grass-user-bounces at lists.osgeo.org] *On Behalf
> Of *Johannes Radinger
> *Sent:* torsdag 28. september 2017 13.04
> *To:* Markus Metz <markus.metz.giswork at gmail.com>
> *Cc:* GRASS user list <grass-user at lists.osgeo.org>
> *Subject:* Re: [GRASS-user] Extract subnet from grass vector network
> based on selected nodes
>
>
>
> Hi all,
>
>
>
> I just tried two different tools that both work to extract a subnetwork
> that connects a set of selected nodes:
>
>
>
> 1) v.net.allpairs works fine and a subnetwork is extracted. However, this
> definitely needs some clean up and layer/attribute operations to get the
> connected tables/cats from the original network
>
>
>
> 2) v.net.steiner also works fine. However, it seems that this approach
> takes slightly longer than v.net.allpairs.
>
>
>
> In general both approaches are rather slow if one wants to extract a
> subnetwork based on e.g. >1000 selected nodes from a very large network.
> For example, my initial (large) network consists of >100000 lines which
> makes any further analysis rather slow. Thus, I wanted to minimize the
> network to one that still connects my target nodes but skips parts that are
> not needed.
>
> Thank you for you suggestions, anyway.
>
> /Johannes
>
>
>
>
>
> On Thu, Sep 28, 2017 at 10:06 AM, Markus Metz <
> markus.metz.giswork at gmail.com> wrote:
>
>
>
> On Thu, Sep 28, 2017 at 9:43 AM, Moritz Lennert <
> mlennert at club.worldonline.be> wrote:
> >
> > On 28/09/17 08:51, Markus Metz wrote:
> >>
> >>
> >>
> >> On Wed, Sep 27, 2017 at 11:55 PM, Moritz Lennert <
> mlennert at club.worldonline.be <mailto:mlennert at club.worldonline.be>> wrote:
> >>  >
> >>  > On 27/09/17 21:03, Markus Metz wrote:
> >>  >>
> >>  >>
> >>  >>
> >>  >> On Wed, Sep 27, 2017 at 4:07 PM, Moritz Lennert <
> mlennert at club.worldonline.be <mailto:mlennert at club.worldonline.be>
> <mailto:mlennert at club.worldonline.be <mailto:mlennert at club.worldonline.be>>>
> wrote:
> >>  >>  >
> >>  >>  >
> >>  >>  >
> >>  >>  > Le 27 septembre 2017 13:11:54 GMT+02:00, Johannes Radinger <
> johannesradinger at gmail.com <mailto:johannesradinger at gmail.com> <mailto:
> johannesradinger at gmail.com <mailto:johannesradinger at gmail.com>>> a écrit :
> >>  >>  > >Hi,
> >>  >>  > >
> >>  >>  > >I have a GRASS vector network that represents a river network
> (with
> >>  >>  > >many
> >>  >>  > >first order tributaries) and that has additional connected
> nodes that
> >>  >>  > >represent sampling sites.
> >>  >>  > >
> >>  >>  > >I'd like to extract a minimum subnetwork of the full network
> that still
> >>  >>  > >connects a set of selected nodes (e.g. identified by their cat).
> >>  >>  > >However,
> >>  >>  > >network edges (i.e. river segments) that are not necessary to
> connect
> >>  >>  > >the
> >>  >>  > >sampling points should be excluded in the new subnetwork. Is
> there a
> >>  >>  > >function or process in GRASS GIS to extract such a subnetwork
> that
> >>  >>  > >fully
> >>  >>  > >connects a set of selected nodes?
> >>  >>  >
> >>  >>  > not sure but maybe v.net.spanningtree ?
> >>  >>
> >>  >> v.net.spanningtree calculates a tree covering all nodes in the
> network, not only selected nodes, therefore v.net.spanningtree does not
> apply here.
> >>  >
> >>  >
> >>  > If you connect only the selected nodes to the network, wouldn't that
> work ? Or does v.net.spanningtree consider all connections between lines as
> nodes ?
> >>
> >> v.net.spanningtree considers all internal nodes of the network. See also
> >> https://en.wikipedia.org/wiki/Spanning_tree
> >
> >
> > Ok, thanks. So, one would need to "disconnect" lines at non-selected
> nodes for this to work.
>
> or use v.net.steiner (see my previous reply)
>
> >
> > And maybe some clarification on what is meant by "nodes" in the sentence
> "A spanning tree is a minimum cost subnetwork connecting all nodes in an
> undirected network" in the man page might help future users.
>
>
>
> Yes, that would help. I needed to look at the library fn
> NetA_spanning_tree() to be sure.
>
>
>
> Markus M
>
> >
> > Moritz
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20171017/d177eccd/attachment-0001.html>


More information about the grass-user mailing list