1v.net.steiner(1) Grass User's Manual v.net.steiner(1)
2
3
4
6 v.net.steiner - Create Steiner tree for the network and given termi‐
7 nals
8 Note that 'Minimum Steiner Tree' problem is NP-hard and heuristic algo‐
9 rithm is used in this module so the result may be sub optimal
10
12 vector, networking
13
15 v.net.steiner
16 v.net.steiner help
17 v.net.steiner [-g] input=name output=name [type=string[,string,...]]
18 [alayer=integer] [nlayer=integer] [acolumn=string] tcats=range
19 [nsp=integer] [--overwrite] [--verbose] [--quiet]
20
21 Flags:
22 -g
23 Use geodesic calculation for longitude-latitude locations
24
25 --overwrite
26 Allow output files to overwrite existing files
27
28 --verbose
29 Verbose module output
30
31 --quiet
32 Quiet module output
33
34 Parameters:
35 input=name
36 Name of input vector map
37
38 output=name
39 Name for output vector map
40
41 type=string[,string,...]
42 Type
43 Arc type
44 Options: line,boundary
45 Default: line,boundary
46
47 alayer=integer
48 Layer number
49 Arc layer
50 Default: 1
51
52 nlayer=integer
53 Layer number
54 Node layer (used for terminals)
55 Default: 2
56
57 acolumn=string
58 Arcs' cost column (for both directions)
59
60 tcats=range
61 Category values
62 Categories of points on terminals (layer is specified by nlayer)
63
64 nsp=integer
65 Number of steiner poins (-1 for all possible)
66 Default: -1
67
69 v.net.steiner calculates the optimal connection of nodes on a vector
70 network.
71
72 A Steiner tree is used to calculate the minimum-cost vector network
73 connecting some number of end nodes in a network framework. For exam‐
74 ple it could be used to find the path following a road system which
75 will minimize the amount of fibre optic cable needed to connect a
76 series of satellite offices.
77
79 Steiner tree for for 6 digitized nodes (Spearfish):
80 g.copy vect=roads,myroads
81 v.db.addcol myroads col="cost double precision"
82 # define traveling costs as inverse of speed limit:
83 v.db.update myroads col=cost val=1/50
84 v.db.update myroads col=cost val=1/75 where="label='interstate'"
85 v.db.update myroads col=cost val=1/5 where="label='unimproved road'"
86 v.db.update myroads col=cost val=1/25 where="label='light-duty road,
87 improved surface'"
88 v.db.select myroads
89 # we have 6 locations to allocate
90 echo "1|601653.5|4922869.2|a
91 2|608284|4923776.6|b
92 3|601845|4914981.9|c
93 4|596270|4917456.3|d
94 5|593330.8|4924096.6|e
95 6|598005.5|4921439.2|f" | v.in.ascii cat=1 x=2 y=3 out=centers col="cat
96 integer, \
97 east double precision, north double precision,
98 label varchar(43)"
99 v.db.select centers
100 v.category centers op=report
101 # type count min max
102 # point 6 1 6
103 #create lines map connecting points to network (on layer 2)
104 v.net myroads points=centers out=myroads_net op=connect thresh=500
105 v.category myroads_net op=report
106 # Layer / table: 1 / myroads_net
107 # type count min max
108 # line 837 1 5
109 #
110 # Layer: 2
111 # type count min max
112 # point 6 1 5
113 # The network is now prepared.
114 g.region vect=myroads_net
115 d.mon x0
116 d.vect myroads_net
117 d.vect -c centers icon=basic/triangle
118 d.font verdana
119 d.vect centers col=red disp=attr attrcol=label lsize=12
120 v.net.steiner myroads_net acol=cost tcats=1-6 out=mysteiner
121 d.vect mysteiner col=blue width=2
122
123
125 d.path, v.net, v.net.alloc, v.net.iso, v.net.path, v.net.salesman
126
128 Radim Blazek, ITC-Irst, Trento, Italy
129 Documentation: Markus Neteler
130
131 Last changed: $Date: 2007-12-17 14:53:55 +0100 (Mon, 17 Dec 2007) $
132
133 Full index
134
135 © 2003-2008 GRASS Development Team
136
137
138
139GRASS 6.3.0 v.net.steiner(1)