Browse Source

update documentation

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46794 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 14 years ago
parent
commit
2842499c41

+ 74 - 42
vector/v.net.alloc/v.net.alloc.html

@@ -26,89 +26,120 @@ Center nodes can also be assigned to vector nodes using
 
 
 <h2>EXAMPLES</h2>
 <h2>EXAMPLES</h2>
 
 
+<p>
+1. Subnetwork allocation using distance:
+<p>
+<img src="v_net_alloc.png" alt="v.net.alloc example using distance" border="1">
+<br>
+<p>
+2. Subnetwork allocation using traveling time:
+<p>
+<img src="v_net_alloc_time.png" alt="v.net.alloc example using time" border="1">
+<br>
+
+<p>
 Example 1: <em>Calculating subnets for 3 center nodes using distances</em>
 Example 1: <em>Calculating subnets for 3 center nodes using distances</em>
 <div class="code"><pre>
 <div class="code"><pre>
-#Spearfish
+# Spearfish
 
 
 # center nodes:
 # center nodes:
 echo "591235.5|4926306.62|1
 echo "591235.5|4926306.62|1
 596591.8|4917042.5|2
 596591.8|4917042.5|2
-602722.9|4923544.2|3" | v.in.ascii out=centernodes
+602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
 
 
 g.copy vect=roads,myroads
 g.copy vect=roads,myroads
 
 
-#connect points to network
+# connect points to network
 v.net myroads points=centernodes out=myroads_net op=connect thresh=200
 v.net myroads points=centernodes out=myroads_net op=connect thresh=200
 
 
-# view map
-g.region vect=myroads_net
-d.mon x0
-d.vect myroads_net
-d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
-
 # allocate, specifying range of center cats (easier to catch all):
 # allocate, specifying range of center cats (easier to catch all):
 v.net.alloc myroads_net out=myroads_net_alloc ccats=1-100000 nlayer=2
 v.net.alloc myroads_net out=myroads_net_alloc ccats=1-100000 nlayer=2
 
 
 # report categories
 # report categories
 v.category myroads_net_alloc option=report
 v.category myroads_net_alloc option=report
+</pre></div>
+
+To display the result, run for example:
+
+<div class="code"><pre>
+# show result
+g.region vect=myroads_net
+d.mon x0
+d.vect myroads_net layer=1
 
 
 # the result has to be selected by category number of the relevant node:
 # the result has to be selected by category number of the relevant node:
-d.vect myroads_net_alloc cat=1 col=red
-d.vect myroads_net_alloc cat=2 col=green
-d.vect myroads_net_alloc cat=3 col=yellow
+d.vect myroads_net_alloc cat=1 col=red layer=1
+d.vect myroads_net_alloc cat=2 col=green layer=1
+d.vect myroads_net_alloc cat=3 col=yellow layer=1
+
+# center nodes
 d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 </pre></div>
 </pre></div>
-<p>
-
-<img src="v_net_alloc.png" alt="v.net.alloc example" border="1">
 
 
 <p>
 <p>
-
-Example 2: <em>Calculating subnets for 3 center nodes using cost assignments in both 
-directions</em><br>
+Example 2: <em>Calculating subnets for 3 center nodes using traveling time</em><br>
 
 
 <div class="code"><pre>
 <div class="code"><pre>
-#Spearfish
+# Spearfish
 
 
 # center nodes:
 # center nodes:
 echo "591235.5|4926306.62|1
 echo "591235.5|4926306.62|1
 596591.8|4917042.5|2
 596591.8|4917042.5|2
-602722.9|4923544.2|3" | v.in.ascii out=centernodes
+602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
+
+g.copy vect=roads,myroads
 
 
-# create unique categories for each road in layer 2
-v.category in=roads out=myroads opt=add cat=1 layer=2
+# create lines map connecting points to network
+v.net myroads points=centernodes out=myroads_net op=connect thresh=500 alayer=1 nlayer=2
 
 
-# add new table for layer 2
-v.db.addtable myroads layer=2 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
+# set up costs
 
 
-# copy road type to layer 2
-v.to.db myroads layer=2 qlayer=1 opt=query qcolumn=label columns=label
+# create unique categories for each road in layer 3
+v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
 
 
-# create lines map connecting points to network (take care of layers)
-v.net myroads points=centernodes out=myroads_net op=connect thresh=500 alayer=2 nlayer=1
+# add new table for layer 3
+v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
 
 
-# set up costs
+# copy road type to layer 3
+v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
 
 
 # upload road length in miles
 # upload road length in miles
-v.to.db map=myroads_net layer=2 type=line option=length col=length unit=miles
+v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
 
 
 # set speed limits in miles / hour
 # set speed limits in miles / hour
-v.db.update myroads_net layer=2 col=speed val="5.0"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='interstate'"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='primary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="50.0" where="label='secondary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="25.0" where="label='light-duty road, improved surface'"
-v.db.update myroads_net layer=2 col=speed val="5.0" where="label='unimproved road'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
 
 
-# define traveling costs as traveling time in hours:
+# define traveling costs as traveling time in minutes:
 
 
 # set forward costs
 # set forward costs
-v.db.update myroads_net layer=2 col=cost val="length / speed"
+v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
 # set backward costs
 # set backward costs
-v.db.update myroads_net layer=2 col=bcost val="length / speed"
+v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"
+
+# subnetwork allocation with fastest paths
+v.net.alloc in=myroads_net_time alayer=3 nlayer=2 afcol=cost abcol=bcost out=myroads_net_alloc_time ccats=1-3
+</pre></div>
+
+To display the result, run for example:
+
+<div class="code"><pre>
+# show result
+g.region vect=myroads_net
+d.mon x0
+d.vect myroads_net type=line layer=1
+
+# the result has to be selected by category number of the relevant node:
+d.vect myroads_net_alloc_time cat=1 col=red layer=1
+d.vect myroads_net_alloc_time cat=2 col=green layer=1
+d.vect myroads_net_alloc_time cat=3 col=yellow layer=1
 
 
-# subnetowrk allocation with fastest paths
-v.net.alloc in=myroads_net afcol=cost abcol=bcost out=myroads_net_alloc ccats=1-3
+# center nodes
+d.vect myroads_net_time col=red icon=basic/triangle fcol=green size=12 type=point layer=2
 </pre></div>
 </pre></div>
 
 
 <h2>SEE ALSO</h2>
 <h2>SEE ALSO</h2>
@@ -122,7 +153,8 @@ v.net.alloc in=myroads_net afcol=cost abcol=bcost out=myroads_net_alloc ccats=1-
 
 
 <h2>AUTHOR</h2>
 <h2>AUTHOR</h2>
 
 
-Radim Blazek, ITC-Irst, Trento, Italy
+Radim Blazek, ITC-Irst, Trento, Italy<br>
+Documentation: Markus Neteler, Markus Metz
 
 
 
 
 <p><i>Last changed: $Date$</i>
 <p><i>Last changed: $Date$</i>

BIN
vector/v.net.alloc/v_net_alloc_time.png


+ 1 - 1
vector/v.net.components/v.net.components.html

@@ -21,7 +21,7 @@ category numbers larger than any category used in the input map.
 
 
 <h2>EXAMPLES</h2>
 <h2>EXAMPLES</h2>
 
 
-Any road network should form a single strongly connected components. 
+Any road network should form a single strongly connected component. 
 Otherwise, it is impossible to travel between some places.
 Otherwise, it is impossible to travel between some places.
 <div class="code"><pre>
 <div class="code"><pre>
 v.net.components input=roads output=roads_components method=strong
 v.net.components input=roads output=roads_components method=strong

+ 103 - 25
vector/v.net.iso/v.net.iso.html

@@ -24,51 +24,55 @@ Nodes and arcs can be closed using cost = -1.
 Nodes must be on the isolines.
 Nodes must be on the isolines.
 
 
 
 
-<h2>EXAMPLE</h2>
-
-Subdivision of a network into areas:<br>
+<h2>EXAMPLES</h2>
 
 
 The map must contain at least one center (point) on the vector network 
 The map must contain at least one center (point) on the vector network 
 which can be patched into with <a HREF="v.net.html">v.net</a>.
 which can be patched into with <a HREF="v.net.html">v.net</a>.
 
 
+<p>
+Isonetwork using distance:
+<p>
+<img src="vnetiso.png" alt="v.net.iso example with distance" border="1">
+
+<p>
+Isonetwork using time:
+<p>
+<img src="vnetisotime.png" alt="v.net.iso example with traveling time" border="1">
+
+<p>
+<h4>Subdivision of a network using distance:</h4>
+
 <div class="code"><pre>
 <div class="code"><pre>
 # Spearfish
 # Spearfish
 
 
 # start node:
 # start node:
-echo "591280.5|4926396.0|1" | v.in.ascii out=startnode
+echo "591280.5|4926396.0|1" | v.in.ascii in=- out=startnode
 g.copy vect=roads,myroads
 g.copy vect=roads,myroads
 
 
-#connect point to network
+# connect point to network
 v.net myroads points=startnode out=myroads_net op=connect thresh=200
 v.net myroads points=startnode out=myroads_net op=connect thresh=200
 
 
-g.region vect=myroads_net
-d.mon x0
-d.vect myroads_net
-d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
-v.category myroads_net layer=2 op=print
-
-# specify range of center cats (easier to catch all):
+# define iso networks using distance:
 v.net.iso input=myroads_net output=myroads_net_iso ccats=1-100000 costs=1000,2000,5000
 v.net.iso input=myroads_net output=myroads_net_iso ccats=1-100000 costs=1000,2000,5000
-v.category myroads_net_iso option=report
-# ... reports 4 categories:
 </pre></div>
 </pre></div>
 
 
-The network is 4 categories:
+The network is divided into 4 categories:
 
 
 <div class="code"><pre>
 <div class="code"><pre>
-cat | distance from point
-1          0 - 1000
-2       1000 - 2000
-3       2000 - 5000
-4            > 5000
+v.category myroads_net_iso option=report
+# ... reports 4 categories:
+#cat | distance from point in meters
+#1          0 - < 1000
+#2       1000 - < 2000
+#3       2000 - < 5000
+#4             >= 5000
 </pre></div>
 </pre></div>
 
 
-To see the result, run for example:
+To display the result, run for example:
 
 
 <div class="code"><pre>
 <div class="code"><pre>
 g.region n=4928200 s=4922300 w=589200 e=596500
 g.region n=4928200 s=4922300 w=589200 e=596500
-d.erase
-d.vect myroads_net_iso
+d.mon x0
 d.vect myroads_net_iso col=blue   cats=1
 d.vect myroads_net_iso col=blue   cats=1
 d.vect myroads_net_iso col=green  cats=2
 d.vect myroads_net_iso col=green  cats=2
 d.vect myroads_net_iso col=orange cats=3
 d.vect myroads_net_iso col=orange cats=3
@@ -76,7 +80,81 @@ d.vect myroads_net_iso col=magenta  cats=4
 d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 </pre></div>
 </pre></div>
 
 
-<img src="vnetiso.png" alt="v.net.iso example" border="1">
+<h4>Subdivision of a network using traveling time:</h4>
+
+Prepare the network as above:
+<div class="code"><pre>
+# Spearfish
+
+# start node:
+echo "591280.5|4926396.0|1" | v.in.ascii in=- out=startnode
+g.copy vect=roads,myroads
+
+# connect point to network
+v.net myroads points=startnode out=myroads_net op=connect thresh=200
+</pre></div>
+
+Define costs as traveling time dependent on speed limits:
+<div class="code"><pre>
+# set up costs
+
+# create unique categories for each road in layer 3
+v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
+
+# add new table for layer 3
+v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
+
+# copy road type to layer 3
+v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
+
+# upload road length in miles
+v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
+
+# set speed limits in miles / hour
+v.db.update myroads_net_time layer=3 col=speed val="5.0"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
+
+# define traveling costs as traveling time in minutes:
+
+# set forward costs
+v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
+# set backward costs
+v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"
+
+# define iso networks using traveling time:
+v.net.iso input=myroads_net_time output=myroads_net_iso_time alayer=3 nlayer=2 afcol=cost abcol=bcost ccats=1-100000 costs=1,2,5
+</pre></div>
+
+To display the result, run for example:
+
+<div class="code"><pre>
+# add table with labels and coloring
+v.db.addtable myroads_net_iso_time columns="cat integer,trav_time varchar(20),GRASSRGB varchar(11)"
+# labels
+v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="0 - 1" where="cat = 1"
+v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="1 - 2" where="cat = 2"
+v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="2 - 5" where="cat = 3"
+v.db.update map=myroads_net_iso_time layer=1 column=trav_time value="> 5" where="cat = 4"
+# colors
+# cats=1: blue
+v.db.update map=myroads_net_iso_time layer=1 column=GRASSRGB value="000:000:255" where="cat = 1"
+# cats=2: green
+v.db.update map=myroads_net_iso_time layer=1 column=GRASSRGB value="000:255:000" where="cat = 2"
+# cats=3: orange
+v.db.update map=myroads_net_iso_time layer=1 column=GRASSRGB value="255:128:000" where="cat = 3"
+# cats=4: magenta
+v.db.update map=myroads_net_iso_time layer=1 column=GRASSRGB value="255:000:255" where="cat = 4"
+
+# show results
+g.region n=4928200 s=4922300 w=589200 e=596500
+d.mon x0
+d.vect myroads_net_iso_time layer=1 -a rgb_col=GRASSRGB
+d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
+</pre></div>
 
 
 <h2>SEE ALSO</h2>
 <h2>SEE ALSO</h2>
 
 
@@ -91,6 +169,6 @@ d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 <h2>AUTHOR</h2>
 <h2>AUTHOR</h2>
 
 
 Radim Blazek, ITC-Irst, Trento, Italy<br>
 Radim Blazek, ITC-Irst, Trento, Italy<br>
-Documentation: Markus Neteler
+Documentation: Markus Neteler, Markus Metz
 
 
 <p><i>Last changed: $Date$</i>
 <p><i>Last changed: $Date$</i>

BIN
vector/v.net.iso/vnetiso.png


BIN
vector/v.net.iso/vnetisotime.png


+ 52 - 33
vector/v.net.path/v.net.path.html

@@ -78,61 +78,80 @@ by <em>v.to.db</em>.
 
 
 <h2>EXAMPLE</h2>
 <h2>EXAMPLE</h2>
 
 
-Fastest path between two digitized nodes (Spearfish):
+Shortest (red) and fastest (blue) path between two digitized nodes (Spearfish):
 
 
+<p>
+<img src="vnetpath.png" alt="v.net.path example" border="1">
+
+<p>
 <div class="code"><pre>
 <div class="code"><pre>
-echo "1|601653.5|4922869.2|start
-2|593330.8|4924096.6|end" | v.in.ascii cat=1 x=2 y=3 out=startend col="cat integer, \
-                         east double precision, north double precision, label varchar(43)"
+# Spearfish
+
+echo "1|601955.1|4916944.9|start
+2|594385.6|4921565.2|end" | v.in.ascii in=- cat=1 x=2 y=3 out=startend col="cat integer, \
+                         east double precision, north double precision, label varchar(6)"
 
 
 v.db.select startend
 v.db.select startend
 
 
-# create unique categories for each road in layer 2
-v.category in=roads out=myroads opt=add cat=1 layer=2
+g.copy vect=roads,myroads
+
+# create lines map connecting points to network
+v.net myroads points=startend out=myroads_net op=connect thresh=500 alayer=1 nlayer=2
 
 
-# add new table for layer 2
-v.db.addtable myroads layer=2 col="cat integer,label varchar(43),length double precision,speed double precision,forward double precision,backward double precision"
+# set up costs
 
 
-# copy road type to layer 2
-v.to.db myroads layer=2 qlayer=1 opt=query qcolumn=label columns=label
+# create unique categories for each road in layer 3
+v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
 
 
-# connect points to road network (take care of layers)
-v.net myroads points=startend out=myroads_net op=connect thresh=200 alayer=2 nlayer=1
+# add new table for layer 3
+v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
+
+# copy road type to layer 3
+v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
 
 
 # upload road length in miles
 # upload road length in miles
-v.to.db map=myroads_net layer=2 type=line option=length col=length unit=miles
+v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
 
 
 # set speed limits in miles / hour
 # set speed limits in miles / hour
-v.db.update myroads_net layer=2 col=speed val="5.0"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='interstate'"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='primary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="50.0" where="label='secondary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="25.0" where="label='light-duty road, improved surface'"
-v.db.update myroads_net layer=2 col=speed val="5.0" where="label='unimproved road'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
 
 
-# define traveling costs as traveling time in hours:
+# define traveling costs as traveling time in minutes:
 
 
 # set forward costs
 # set forward costs
-v.db.update myroads_net layer=2 col=forward val="length / speed"
+v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
 # set backward costs
 # set backward costs
-v.db.update myroads_net layer=2 col=backward val="length / speed"
-
-g.region vect=myroads_net
-d.mon x0
-d.vect myroads_net
-d.vect startend col=red
+v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"
 
 
-d.vect myroads_net icon=basic/triangle fcol=green size=12 layer=2
-d.vect myroads_net disp=cat type=point lsize=14 layer=2
 # ... the 'start' and 'end' nodes have category number 1 and 2
 # ... the 'start' and 'end' nodes have category number 1 and 2
 
 
+# Shortest path: ID as first number, then cat1 and cat2
+echo "1 1 2" | v.net.path myroads_net_time alayer=3 nlayer=2 out=mypath
+
 # Fastest path: ID as first number, then cat1 and cat2
 # Fastest path: ID as first number, then cat1 and cat2
-echo "1 1 2" | v.net.path myroads_net afcol=forward abcol=backward out=mypath
+echo "1 1 2" | v.net.path myroads_net_time alayer=3 nlayer=2 afcol=cost abcol=bcost out=mypath_time
+</pre></div>
+
+To display the result, run for example:
 
 
+<div class="code"><pre>
+g.region vect=myroads_net
+d.mon x0
+d.vect myroads_net
+# show shortest path
 d.vect mypath col=red width=2
 d.vect mypath col=red width=2
-</pre></div>
+# show fastest path
+d.vect mypath_time col=blue width=2
 
 
-<img src="vnetpath.png" alt="v.net.path example" border="1">
+# start and end point
+d.vect myroads_net icon=basic/triangle fcol=green size=12 layer=2
+d.font font=Vera
+d.vect startend disp=cat type=point lsize=14 layer=2
+</pre></div>
 
 
 
 
 <h2>SEE ALSO</h2>
 <h2>SEE ALSO</h2>
@@ -148,6 +167,6 @@ d.vect mypath col=red width=2
 <h2>AUTHOR</h2>
 <h2>AUTHOR</h2>
 
 
 Radim Blazek, ITC-Irst, Trento, Italy<br>
 Radim Blazek, ITC-Irst, Trento, Italy<br>
-Documentation: Markus Neteler
+Documentation: Markus Neteler, Markus Metz
 
 
 <p><i>Last changed: $Date$</i>
 <p><i>Last changed: $Date$</i>

BIN
vector/v.net.path/vnetpath.png


+ 58 - 81
vector/v.net.salesman/v.net.salesman.html

@@ -27,10 +27,24 @@ Arcs can be closed using cost = -1.
 <h2>EXAMPLE</h2>
 <h2>EXAMPLE</h2>
 
 
 Traveling salesman for 6 digitized nodes (Spearfish):
 Traveling salesman for 6 digitized nodes (Spearfish):
+
+<p>
+Shortest path, along unimproved roads:
+<p>
+<img src="vnetsalesman.png" alt="v.net.salesman example using distance" border="1">
+
+<p>
+Fastest path, along highways:
+<p>
+<img src="vnetsalesmantime.png" alt="v.net.salesman example using time" border="1">
+
 <p>
 <p>
-Searching for the shortest path:
+Searching for the shortest path using distance and the fastest path using 
+traveling time according to the speed limits of different road types:
 
 
 <div class="code"><pre>
 <div class="code"><pre>
+# Spearfish
+
 g.copy vect=roads,myroads
 g.copy vect=roads,myroads
 
 
 # we have 6 locations to visit on our trip
 # we have 6 locations to visit on our trip
@@ -39,7 +53,7 @@ echo "1|601653.5|4922869.2|a
 3|601845|4914981.9|c
 3|601845|4914981.9|c
 4|596270|4917456.3|d
 4|596270|4917456.3|d
 5|593330.8|4924096.6|e
 5|593330.8|4924096.6|e
-6|598005.5|4921439.2|f" | v.in.ascii cat=1 x=2 y=3 out=centers col="cat integer, \
+6|598005.5|4921439.2|f" | v.in.ascii in=- cat=1 x=2 y=3 out=centers col="cat integer, \
                          east double precision, north double precision, label varchar(43)"
                          east double precision, north double precision, label varchar(43)"
 
 
 # verify data preparation
 # verify data preparation
@@ -60,102 +74,65 @@ v.category myroads_net op=report
 # type       count        min        max
 # type       count        min        max
 # point          6          1          5
 # point          6          1          5
 
 
-# The network is now prepared. Visualize it
-g.region vect=myroads_net
-d.mon x0
-d.vect myroads_net
-d.vect -c centers icon=basic/triangle
-d.font verdana
-d.vect centers col=red disp=attr attrcol=label lsize=12
-
-# run without traveling costs using line length
-v.net.salesman myroads_net ccats=1-6 out=mysalesman_shortest
-d.vect mysalesman_length col=green width=2
-d.vect centers col=red disp=attr attrcol=label lsize=12
-</pre></div>
-
-<p>
-Searching for the fastest path, using speed limits according to road type:
-
-<div class="code"><pre>
-# we have 6 locations to visit on our trip
-echo "1|601653.5|4922869.2|a
-2|608284|4923776.6|b
-3|601845|4914981.9|c
-4|596270|4917456.3|d
-5|593330.8|4924096.6|e
-6|598005.5|4921439.2|f" | v.in.ascii in=- cat=1 x=2 y=3 out=centers col="cat integer, \
-                         east double precision, north double precision, label varchar(43)"
-
-# verify data preparation
-v.db.select centers
-v.category centers op=report
-# type       count        min        max
-# point          6          1          6
-
-# create unique categories for each road in layer 2
-v.category in=roads out=myroads opt=add cat=1 layer=2
+# find the shortest path
+v.net.salesman myroads_net ccats=1-6 out=mysalesman_distance
 
 
-# add new table for layer 2
-v.db.addtable myroads layer=2 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
+# set up costs as traveling time
 
 
-# copy road type to layer 2
-v.to.db myroads layer=2 qlayer=1 opt=query qcolumn=label columns=label
-
-# create lines map connecting points to network (take care of layers)
-v.net myroads points=centers out=myroads_net op=connect thresh=500 alayer=2 nlayer=1
-v.category myroads_net op=report
-# Layer/table: 2/myroads_net_myroads_l_2
-# type       count        min        max
-# point          6          1          6
-# line         837          1          5
-#
-# Layer/table: 1/myroads_net_roads
-# type       count        min        max
-# point          0          0          0
-# line         837          1        825
+# create unique categories for each road in layer 3
+v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
 
 
-# The network is now prepared. Visualize it
-g.region vect=myroads_net
-d.mon x0
-d.vect myroads_net
-d.vect -c centers icon=basic/triangle
-d.font verdana
-d.vect centers col=red disp=attr attrcol=label lsize=12
+# add new table for layer 3
+v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision"
 
 
-# set up costs
+# copy road type to layer 3
+v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
 
 
 # upload road length in miles
 # upload road length in miles
-v.to.db map=myroads_net layer=2 type=line option=length col=length unit=miles
+v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
 
 
 # set speed limits in miles / hour
 # set speed limits in miles / hour
-v.db.update myroads_net layer=2 col=speed val="5.0"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='interstate'"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='primary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="50.0" where="label='secondary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="25.0" where="label='light-duty road, improved surface'"
-v.db.update myroads_net layer=2 col=speed val="5.0" where="label='unimproved road'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
 
 
-# define traveling costs as traveling time in hours:
+# define traveling costs as traveling time in minutes:
 
 
 # set forward costs
 # set forward costs
-v.db.update myroads_net layer=2 col=cost val="length / speed"
+v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
 # set backward costs
 # set backward costs
-v.db.update myroads_net layer=2 col=bcost val="length / speed"
+v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"
+
+# find the fastest path
+v.net.salesman myroads_net_time alayer=3 nlayer=2 afcol=cost abcol=bcost ccats=1-6 out=mysalesman_time
+</pre></div>
+
+To display the result, run for example:
 
 
-# fastest path: traveling costs = length / speed = hours
-v.net.salesman myroads_net alayer=2 nlayer=1 afcol=cost ccats=1-6 out=mysalesman_fastest
+<div class="code"><pre>
+# Display the results
+g.region vect=myroads_net
 
 
-# with different columns for forward and backward costs:
-# result is identical to fastest path
-v.net.salesman myroads_net alayer=2 nlayer=1 afcol=cost abcol=bcost ccats=1-6 out=mysalesman_back
+# shortest path
+d.mon x0
+d.vect myroads_net
+d.vect centers -c icon=basic/triangle
+d.vect mysalesman_distance col=green width=2
+d.font Vera
+d.vect centers col=red disp=attr attrcol=label lsize=12
 
 
-d.vect mysalesman_fastest col=green width=2
+# fastest path
+d.mon x1
+d.vect myroads_net
+d.vect centers -c icon=basic/triangle
+d.vect mysalesman_time col=green width=2
+d.font Vera
 d.vect centers col=red disp=attr attrcol=label lsize=12
 d.vect centers col=red disp=attr attrcol=label lsize=12
 </pre></div>
 </pre></div>
 
 
-<img src="vnetsalesman.png" alt="v.net.salesman example" border="1">
-
 
 
 <h2>SEE ALSO</h2>
 <h2>SEE ALSO</h2>
 
 
@@ -170,7 +147,7 @@ d.vect centers col=red disp=attr attrcol=label lsize=12
 
 
 Radim Blazek, ITC-Irst, Trento, Italy<br>
 Radim Blazek, ITC-Irst, Trento, Italy<br>
 Markus Metz<br>
 Markus Metz<br>
-Documentation: Markus Neteler
+Documentation: Markus Neteler, Markus Metz
 
 
 
 
 <p><i>Last changed: $Date$</i>
 <p><i>Last changed: $Date$</i>

BIN
vector/v.net.salesman/vnetsalesman.png


BIN
vector/v.net.salesman/vnetsalesmantime.png


+ 56 - 40
vector/v.net.steiner/v.net.steiner.html

@@ -27,17 +27,30 @@ input vector map needs to be prepared with <em>v.net operation=connect</em>.
 
 
 <h2>EXAMPLE</h2>
 <h2>EXAMPLE</h2>
 
 
-Steiner tree for 6 digitized nodes (Spearfish), using traveling time as 
-costs:
+Steiner tree for 6 digitized nodes (Spearfish):
+<p>
+Shortest path, along unimproved roads:
+<p>
+<img src="vnetsteiner.png" alt="v.net.steiner example using distance" border="1">
+
+<p>
+Fastest path, along highways:
+<p>
+<img src="vnetsteinertime.png" alt="v.net.steiner example using time" border="1">
+
 
 
 <div class="code"><pre>
 <div class="code"><pre>
+# Spearfish
+
+g.copy vect=roads,myroads
+
 # we have 6 locations to allocate
 # we have 6 locations to allocate
 echo "1|601653.5|4922869.2|a
 echo "1|601653.5|4922869.2|a
 2|608284|4923776.6|b
 2|608284|4923776.6|b
 3|601845|4914981.9|c
 3|601845|4914981.9|c
 4|596270|4917456.3|d
 4|596270|4917456.3|d
 5|593330.8|4924096.6|e
 5|593330.8|4924096.6|e
-6|598005.5|4921439.2|f" | v.in.ascii cat=1 x=2 y=3 out=centers col="cat integer, \
+6|598005.5|4921439.2|f" | v.in.ascii in=- cat=1 x=2 y=3 out=centers col="cat integer, \
                          east double precision, north double precision, label varchar(43)"
                          east double precision, north double precision, label varchar(43)"
 
 
 v.db.select centers
 v.db.select centers
@@ -45,61 +58,64 @@ v.category centers op=report
 # type       count        min        max
 # type       count        min        max
 # point          6          1          6
 # point          6          1          6
 
 
-# create unique categories for each road in layer 2
-v.category in=roads out=myroads opt=add cat=1 layer=2
+# create lines map connecting points to network (on layer 2)
+v.net myroads points=centers out=myroads_net op=connect thresh=500
 
 
-# add new table for layer 2
-v.db.addtable myroads layer=2 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision"
+# set up costs as traveling time
 
 
-# copy road type to layer 2
-v.to.db myroads layer=2 qlayer=1 opt=query qcolumn=label columns=label
+# create unique categories for each road in layer 3
+v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
 
 
+# add new table for layer 3
+v.db.addtable myroads_net_time layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision"
 
 
-# create lines map connecting points to network (take care of layers)
-v.net myroads points=centers out=myroads_net op=connect thresh=500 alayer=2 nlayer=1
-v.category myroads_net op=report
-# Layer/table: 2/myroads_net_myroads_l_2
-# type       count        min        max
-# point          6          1          6
-# line         837          1          5
-#
-# Layer/table: 1/myroads_net_roads
-# type       count        min        max
-# point          0          0          0
-# line         837          1        825
-
-# set up costs
+# copy road type to layer 3
+v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
 
 
 # upload road length in miles
 # upload road length in miles
-v.to.db map=myroads_net layer=2 type=line option=length col=length unit=miles
+v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
 
 
 # set speed limits in miles / hour
 # set speed limits in miles / hour
-v.db.update myroads_net layer=2 col=speed val="5.0"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='interstate'"
-v.db.update myroads_net layer=2 col=speed val="75.0" where="label='primary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="50.0" where="label='secondary highway, hard surface'"
-v.db.update myroads_net layer=2 col=speed val="25.0" where="label='light-duty road, improved surface'"
-v.db.update myroads_net layer=2 col=speed val="5.0" where="label='unimproved road'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
+v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
+v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
+v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
+
+# define traveling costs as traveling time in minutes:
+v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
 
 
-# define traveling costs as traveling time in hours:
+# shortest path
+v.net.steiner myroads_net_time alayer=3 nlayer=2 tcats=1-6 out=mysteiner_distance
 
 
-# set costs as traveling time
-v.db.update myroads_net layer=2 col=cost val="length / speed"
+# fastest path
+v.net.steiner myroads_net_time alayer=3 nlayer=2 acol=cost tcats=1-6 out=mysteiner_time
+</pre></div>
 
 
-# The network is now prepared.
+To display the result, run for example:
+
+<div class="code"><pre>
+# display the results
 g.region vect=myroads_net
 g.region vect=myroads_net
+
+# shortest path
 d.mon x0
 d.mon x0
 d.vect myroads_net
 d.vect myroads_net
 d.vect -c centers icon=basic/triangle
 d.vect -c centers icon=basic/triangle
-d.font verdana
+d.font Vera
 d.vect centers col=red disp=attr attrcol=label lsize=12
 d.vect centers col=red disp=attr attrcol=label lsize=12
+d.vect mysteiner_distance col=blue width=2
 
 
-v.net.steiner myroads_net alayer=2 nlayer=1 acol=cost tcats=1-6 out=mysteiner
-d.vect mysteiner col=blue width=2
+# fastest path
+d.mon x1
+d.vect myroads_net
+d.vect -c centers icon=basic/triangle
+d.font Vera
+d.vect centers col=red disp=attr attrcol=label lsize=12
+d.vect mysteiner_time col=blue width=2
 </pre></div>
 </pre></div>
 
 
-<img src="vnetsteiner.png" alt="v.net.steiner example" border="1">
-
 
 
 <h2>SEE ALSO</h2>
 <h2>SEE ALSO</h2>
 
 
@@ -113,7 +129,7 @@ d.vect mysteiner col=blue width=2
 <h2>AUTHOR</h2>
 <h2>AUTHOR</h2>
 
 
 Radim Blazek, ITC-Irst, Trento, Italy<br>
 Radim Blazek, ITC-Irst, Trento, Italy<br>
-Documentation: Markus Neteler
+Documentation: Markus Neteler, Markus Metz
 
 
 
 
 <p><i>Last changed: $Date$</i>
 <p><i>Last changed: $Date$</i>

BIN
vector/v.net.steiner/vnetsteiner.png


BIN
vector/v.net.steiner/vnetsteinertime.png