123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <h2>DESCRIPTION</h2>
- <em>v.net.alloc</em> allocates subnets for nearest centers
- (direction from center). center nodes must be opened (costs >= 0).
- Costs of center nodes are used in the calculation.
- <p>
- Costs may be either line lengths, or attributes saved in a
- database table. These attribute values are taken as costs of whole
- segments, not as costs to traverse a length unit (e.g. meter) of the
- segment. For example, if the speed limit is 100 km / h, the cost to
- traverse a 10 km long road segment must be calculated as
- <br>
- length / speed = 10 km / (100 km/h) = 0.1 h.
- <br>
- Supported are cost assignments for both arcs and nodes,
- and also different costs for both directions of a vector line.
- For areas, costs will be calculated along boundary lines.
- <p>
- The input vector needs to be prepared with <em>v.net operation=connect</em>
- in order to connect points representing center nodes to the network.
- <p>
- Application of flag <b>-t</b> enables a turntable support.
- This flag requires additional parameters <b>tlayer</b> and <b>tuclayer</b>
- that are otherwise ignored.
- The turntable allows
- to model e.g. trafic code, where some turns may be prohibited.
- This means that the input layer is expanded by
- turntable with costs of every possible turn on any possible node
- (intersection) in both directions.
- Turntable can be created by
- the <em><a href="v.net.html">v.net</a></em> module.
- For more information about turns in the vector network analyses see
- <a href="http://grasswiki.osgeo.org/wiki/Turns_in_the_vector_network_analysis">wiki page</a>.
- <h2>NOTES</h2>
- Nodes and arcs can be closed using cost = -1.
- <p>
- Center nodes can also be assigned to vector nodes using
- <em><a href="wxGUI.vdigit.html">wxGUI vector digitizer</a></em>.
- <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>
- <div class="code"><pre>
- # Spearfish
- # center nodes:
- echo "591235.5|4926306.62|1
- 596591.8|4917042.5|2
- 602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
- g.copy vect=roads,myroads
- # connect points to network
- v.net myroads points=centernodes out=myroads_net op=connect thresh=200
- # allocate, specifying range of center cats (easier to catch all):
- v.net.alloc myroads_net out=myroads_net_alloc ccats=1-100000 nlayer=2
- # report categories
- 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:
- 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
- </pre></div>
- <p>Example 2: <em>Calculating subnets for 3 center nodes using traveling time</em><br>
- <div class="code"><pre>
- # Spearfish
- # center nodes:
- echo "591235.5|4926306.62|1
- 596591.8|4917042.5|2
- 602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
- g.copy vect=roads,myroads
- # create lines map connecting points to network
- v.net myroads points=centernodes out=myroads_net op=connect thresh=500 alayer=1 nlayer=2
- # 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"
- # 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
- # center nodes
- d.vect myroads_net_time col=red icon=basic/triangle fcol=green size=12 type=point layer=2
- </pre></div>
- <h2>SEE ALSO</h2>
- <em><a href="d.path.html">d.path</a></em>,
- <em><a href="v.net.html">v.net</a></em>,
- <em><a href="v.net.iso.html">v.net.iso</a></em>,
- <em><a href="v.net.path.html">v.net.path</a></em>,
- <em><a href="v.net.steiner.html">v.net.steiner</a></em>,
- <em><a href="v.net.salesman.html">v.net.salesman</a></em>
- <h2>AUTHOR</h2>
- Radim Blazek, ITC-Irst, Trento, Italy<br>
- Documentation: Markus Neteler, Markus Metz
- <h3>TURNS SUPPORT</h3>
- The turns support was implemnented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic.
- Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated at the project.
- Implementation: Stepan Turek
- Documentation: Lukas Bocan
- Mentor: Martin Landa
- <p><i>Last changed: $Date$</i>
|