1v.net.visibility(1) GRASS GIS User's Manual v.net.visibility(1)
2
3
4
6 v.net.visibility - Performs visibility graph construction.
7
9 vector, network, shortest path, visibility
10
12 v.net.visibility
13 v.net.visibility --help
14 v.net.visibility input=name output=name [coordinates=east,north]
15 [visibility=name] [--overwrite] [--help] [--verbose] [--quiet]
16 [--ui]
17
18 Flags:
19 --overwrite
20 Allow output files to overwrite existing files
21
22 --help
23 Print usage summary
24
25 --verbose
26 Verbose module output
27
28 --quiet
29 Quiet module output
30
31 --ui
32 Force launching GUI dialog
33
34 Parameters:
35 input=name [required]
36 Name of input vector map
37 Or data source for direct OGR access
38
39 output=name [required]
40 Name for output vector map
41
42 coordinates=east,north
43 Coordinates
44
45 visibility=name
46 Name of input vector map containing visible points
47 Add points after computing the visibility graph
48
50 v.net.visibility computes the visibility graph of a vector map contain‐
51 ing lines, areas (boundaries) and points. The visibility graph is the
52 graph where the nodes are the end point of the lines, boundaries or
53 simply points. There is an edge between two nodes if they are ’visible’
54 to each other. Two nodes are visibible if there are no segments in
55 between of them, i.e. the edge does not intersect any line or boundary
56 in the vector map. This is useful to compute the shortest path in a
57 vector map from any two points. To do this, first you need to compute
58 the visibility graph and from that to compute the shortest path using
59 v.net.path or d.path.
60
61 IMPORTANT: the algorithm doesn’t work well with intersecting lines
62 (that includes overlapping)
63
65 If you compute a shortest path after computing the visibility graph you
66 will notice that this path might go through a vertex of a line. If this
67 is not what you wanted you might need to process the map in v.buffer,
68 initially with a small value. Example:
69 v.buffer input=map output=bufferedmap buffer=1 type=point,line,area,boundary
70
71 The first argument is the input map. It supports lines, boundaries (so,
72 areas) and points. For the algorithm was written to work with lines
73 and boundaries not intersecting each other (that includes overlapping).
74 The resulting map containing the visibility graph is given in the out‐
75 put map.
76
77 If you need to add additional points to compute a shortest path between
78 them afterwards you can use the coordinates parameter, e.g.:
79 coordinates=25556200,6686400,25556400,6686600
80 where 25556200,6686400 are the coordinate of the first point and
81 25556400,6686600 are the coordinates of the second point. Of course you
82 can give as many points as you need. They will be added to the visibil‐
83 ity graph and edges from them will be computed. You can always add
84 those points after computing the visibility graph. Simply use the visi‐
85 bility parameter. The input will be the original vector map, the vis
86 will be the computed visibility graph and the output the new visibility
87 graph which will be the vis + the new points given with coordinate
88 (edges will be computed as well).
89 v.net.visibility input=map visibility=vis_map output=new_vis_map \
90 coordinates=25556200,6686400,25556400,6686600
91
93 Example 1
94 A simple example (North Carolina sample data) showing how to use the
95 module:
96 v.extract input=zipcodes_wake output=areas_7_11_25 cats=7,11,25
97 g.region vector=zipcodes_wake
98 d.mon wx0
99 d.vect areas_7_11_25
100 v.net.visibility input=areas_7_11_25 output=graph
101 d.vect graph
102 d.vect areas_7_11_25 color=red type=boundary
103
104 Example 2
105 An example on how to use v.buffer along with the module:
106 v.buffer input=lines output=buffered_lines buffer=1
107 v.net.visibility input=buffered_lines output=graph
108 d.vect graph
109 d.vect lines col=red
110
111 Example 3
112 An example on how to use the coordinate parameter. This will compute
113 the visibility graph of the vector map lines with the point
114 2555678,6686343:
115 v.net.visibility input=lines output=graph coordinates=2555678,6686343
116 d.vect graph
117 d.vect lines col=red
118
119 Example 4
120 An example (North Carolina sample data) on how to use the coordinate
121 parameter with the vis parameter. Here the vector map graph is com‐
122 puted then a new visibility graph is computed from it with the point
123 669547.97,208348.20 extra:
124 v.extract input=zipcodes_wake output=areas_7_11_25 cats=7,11,25
125 g.region vector=zipcodes_wake
126 d.mon wx0
127 d.vect areas_7_11_25
128 v.net.visibility input=areas_7_11_25 output=graph
129 v.net.visibility input=areas_7_11_25 visibility=graph output=new_graph \
130 coordinates=669547.97,208348.20
131 d.erase
132 d.vect areas_7_11_25
133 echo "symbol basic/star 20 669547.97 208348.20 black red" | d.graph -m
134 d.vect new_graph
135 d.vect areas_7_11_25 color=red type=boundary
136
137 Example 5
138 An example for connections of points (Spearfish):
139 v.net.visibility input=archsites output=graph
140 g.region vector=archsites
141 d.mon wx0
142 d.vect graph
143 d.vect archsites col=red
144
145 Example 6
146 Here is an example with artificial data.
147
148 Load data using here document syntax (Bash and unix-like commands lines
149 only):
150 v.in.ascii input=- output=simple format=standard <<EOF
151 VERTI:
152 B 6
153 82.19908257 75.21788991
154 81.67889908 71.40321101
155 83.58623853 71.72522936
156 84.3293578 75.21788991
157 82.24862385 76.06009174
158 82.19908257 75.21788991
159 C 1 1
160 82.88897401 73.66318782
161 1 1
162 C 1 1
163 90.72645705 75.61248675
164 1 2
165 C 1 1
166 89.37944702 69.51012912
167 1 3
168 C 1 1
169 81.60108979 67.78669725
170 1 4
171 B 5
172 89.92752294 73.95458716
173 92.37981651 75.11880734
174 91.56238532 77.29862385
175 88.96146789 75.88669725
176 89.92752294 73.95458716
177 B 10
178 88.54036697 70.70963303
179 87.92192518 70.04087417
180 87.89633028 69.00045872
181 88.66460807 68.13372867
182 90.15108904 68.23290821
183 90.9426344 68.97588202
184 90.86880734 70.11513761
185 90.00144697 70.78336312
186 89.06055046 70.95733945
187 88.54036697 70.70963303
188 B 9
189 78.73119266 71.35366972
190 80.76238532 68.90137615
191 84.20550459 66.91972477
192 89.87798165 65.35917431
193 83.23494031 66.27685175
194 80.34278748 68.00837238
195 78.38484005 71.40292009
196 78.40917431 72.27018349
197 78.73119266 71.35366972
198 EOF
199 Compute the graph:
200 v.net.visibility input=simple output=graph
201
203 In some cases when 3 points or nodes are collinear, some wrong edges
204 are added. This happens only really rarly and shouldn’t be a big prob‐
205 lem. When two points have the exact same x coordinate and are visible,
206 some wrong edges are added.
207
209 d.path, v.net, v.net.alloc, v.net.iso, v.net.salesman, v.net.steiner,
210 v.to.db
211
213 Maximilian Maldacker
214 Mentor: Wolf Bergenheim
215
217 Available at: v.net.visibility source code (history)
218
219 Main index | Vector index | Topics index | Keywords index | Graphical
220 index | Full index
221
222 © 2003-2020 GRASS Development Team, GRASS GIS 7.8.5 Reference Manual
223
224
225
226GRASS 7.8.5 v.net.visibility(1)