This is the command v.net.visibilitygrass that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
NAME
v.net.visibility - Performs visibility graph construction.
KEYWORDS
vector, network, shortest path, visibility
SYNOPSIS
v.net.visibility
v.net.visibility --help
v.net.visibility input=name output=name [coordinates=east,north] [visibility=name]
[--overwrite] [--help] [--verbose] [--quiet] [--ui]
Flags:
--overwrite
Allow output files to overwrite existing files
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--ui
Force launching GUI dialog
Parameters:
input=name [required]
Name of input vector map
Or data source for direct OGR access
output=name [required]
Name for output vector map
coordinates=east,north
Coordinates
visibility=name
Name of input vector map containing visable points
Add points after computing the visibility graph
DESCRIPTION
v.net.visibility computes the visibility graph of a vector map containing lines, areas
(boundaries) and points. The visibility graph is the graph where the nodes are the end
point of the lines, boundaries or simply points. There is an edge between two nodes if
they are ’visible’ to each other. Two nodes are visibible if there are no segments in
between of them, i.e. the edge does not intersect any line or boundary in the vector map.
This is useful to compute the shortest path in a vector map from any two points. To do
this, first you need to compute the visibility graph and from that to compute the shortest
path using v.net.path or d.path.
IMPORTANT: the algorithm doesn’t work well with intersecting lines (that includes
overlapping)
NOTES
If you compute a shortest path after computing the visibility graph you will notice that
this path might go through a vertex of a line. If this is not what you wanted you might
need to process the map in v.buffer, initially whith a small value. Example:
v.buffer input=map output=bufferedmap buffer=1 type=point,line,area,boundary
The first argument is the input map. It supports lines, boundaries (so, areas) and points.
For the algorithm was written to work with lines and boundaries not intersecting each
other (that includes overlapping).
The resulting map containing the visibility graph is given in the output map.
If you need to add additional points to compute a shortest path between them afterwards
you can use the coordinates parameter, e.g.:
coordinates=25556200,6686400,25556400,6686600
where 25556200,6686400 are the coordinate of the first point and 25556400,6686600 are the
coordinates of the second point. Of course you can give as many points as you need. They
will be added to the visibility graph and edges from them will be computed. You can always
add those points after computing the visibility graph. Simply use the visibility
parameter. The input will be the original vector map, the vis will be the computed
visibility graph and the output the new visibility graph which will be the vis + the new
points given with coordinate (edges will be computed as well).
v.net.visibility input=map visibility=vis_map output=new_vis_map \
coordinates=25556200,6686400,25556400,6686600
EXAMPLES
Example 1
A simple example (North Carolina sample data) showing how to use the module:
v.extract input=zipcodes_wake output=areas_7_11_25 cats=7,11,25
g.region vector=zipcodes_wake
d.mon wx0
d.vect areas_7_11_25
v.net.visibility input=areas_7_11_25 output=graph
d.vect graph
d.vect areas_7_11_25 color=red type=boundary
Example 2
An example on how to use v.buffer along with the module:
v.buffer input=lines output=buffered_lines buffer=1
v.net.visibility input=buffered_lines output=graph
d.vect graph
d.vect lines col=red
Example 3
An example on how to use the coordinate parameter. This will compute the visibility graph
of the vector map lines with the point 2555678,6686343:
v.net.visibility input=lines output=graph coordinates=2555678,6686343
d.vect graph
d.vect lines col=red
Example 4
An example (North Carolina sample data) on how to use the coordinate parameter with the
vis parameter. Here the vector map graph is computed then a new visibility graph is
computed from it with the point 669547.97,208348.20 extra:
v.extract input=zipcodes_wake output=areas_7_11_25 cats=7,11,25
g.region vector=zipcodes_wake
d.mon wx0
d.vect areas_7_11_25
v.net.visibility input=zipcodes_wake output=graph
v.net.visibility input=zipcodes_wake visibility=graph output=new_graph \
coordinates=669547.97,208348.20
d.erase
d.vect areas_7_11_25
echo "symbol basic/star 20 669547.97 208348.20 black red" | d.graph -m
d.vect new_graph
d.vect areas_7_11_25 color=red type=boundary
Example 5
An example for connections of points (Spearfish):
v.net.visibility input=archsites output=graph
g.region vector=archsites
d.mon wx0
d.vect graph
d.vect archsites col=red
KNOWN ISSUES
In some cases when 3 points or nodes are collinear, some wrong edges are added. This
happens only really rarly and shouldn’t be a big problem. When two points have the exact
same x coordinate and are visible, some wrong edges are added.
Use v.net.visibilitygrass online using onworks.net services