|
NAMEv.net.visibility - Performs visibility graph construction. KEYWORDSvector, network, shortest path, visibility SYNOPSISv.net.visibility
Flags:
Parameters:
DESCRIPTIONv.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) NOTESIf 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 with 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).
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,6686600where 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 \ EXAMPLESExample 1A 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 2An 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 3An 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 4An 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=areas_7_11_25 output=graph v.net.visibility input=areas_7_11_25 visibility=graph output=new_graph \ Example 5An 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 Example 6Here is an example with artificial data. Load data using here document syntax (Bash and unix-like commands
lines only):
v.in.ascii input=- output=simple format=standard <<EOF VERTI: B 6Compute the graph: v.net.visibility input=simple output=graph KNOWN ISSUESIn 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. SEE ALSOd.path, v.net, v.net.alloc, v.net.iso, v.net.salesman, v.net.steiner, v.to.db AUTHORSMaximilian Maldacker
SOURCE CODEAvailable at: v.net.visibility source code (history) Latest change: Sunday Feb 12 15:51:56 2023 in commit: 7d6ff54e985c1579e11b74c230cb8fa68a9aa928 Main index | Vector index | Topics index | Keywords index | Graphical index | Full index © 2003-2025 GRASS Development Team, GRASS GIS 8.4.1 Reference Manual
|