v.net.alloc.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <h2>DESCRIPTION</h2>
  2. <em>v.net.alloc</em> allocates subnets for nearest centers
  3. (direction from center). center nodes must be opened (costs &gt;= 0).
  4. Costs of center nodes are used in the calculation.
  5. <p>
  6. Costs may be either line lengths, or attributes saved in a
  7. database table. These attribute values are taken as costs of whole
  8. segments, not as costs to traverse a length unit (e.g. meter) of the
  9. segment. For example, if the speed limit is 100 km / h, the cost to
  10. traverse a 10 km long road segment must be calculated as
  11. <br>
  12. length / speed = 10 km / (100 km/h) = 0.1 h.
  13. <br>
  14. Supported are cost assignments for both arcs and nodes,
  15. and also different costs for both directions of a vector line.
  16. For areas, costs will be calculated along boundary lines.
  17. <p>
  18. The input vector needs to be prepared with <em>v.net operation=connect</em>
  19. in order to connect points representing center nodes to the network.
  20. <h2>NOTES</h2>
  21. Nodes and arcs can be closed using cost = -1.
  22. <p>
  23. Center nodes can also be assigned to vector nodes using
  24. <em><a href="wxGUI.vdigit.html">wxGUI vector digitizer</a></em>.
  25. <h2>EXAMPLES</h2>
  26. <p>1. Subnetwork allocation using distance:
  27. <p><img src="v_net_alloc.png" alt="v.net.alloc example using distance" border="1">
  28. <br>
  29. <p>2. Subnetwork allocation using traveling time:
  30. <p><img src="v_net_alloc_time.png" alt="v.net.alloc example using time" border="1">
  31. <br>
  32. <p>Example 1: <em>Calculating subnets for 3 center nodes using distances</em>
  33. <div class="code"><pre>
  34. # Spearfish
  35. # center nodes:
  36. echo "591235.5|4926306.62|1
  37. 596591.8|4917042.5|2
  38. 602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
  39. g.copy vect=roads,myroads
  40. # connect points to network
  41. v.net myroads points=centernodes out=myroads_net op=connect thresh=200
  42. # allocate, specifying range of center cats (easier to catch all):
  43. v.net.alloc myroads_net out=myroads_net_alloc ccats=1-100000 nlayer=2
  44. # report categories
  45. v.category myroads_net_alloc option=report
  46. </pre></div>
  47. To display the result, run for example:
  48. <div class="code"><pre>
  49. # show result
  50. g.region vect=myroads_net
  51. d.mon x0
  52. d.vect myroads_net layer=1
  53. # the result has to be selected by category number of the relevant node:
  54. d.vect myroads_net_alloc cat=1 col=red layer=1
  55. d.vect myroads_net_alloc cat=2 col=green layer=1
  56. d.vect myroads_net_alloc cat=3 col=yellow layer=1
  57. # center nodes
  58. d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
  59. </pre></div>
  60. <p>Example 2: <em>Calculating subnets for 3 center nodes using traveling time</em><br>
  61. <div class="code"><pre>
  62. # Spearfish
  63. # center nodes:
  64. echo "591235.5|4926306.62|1
  65. 596591.8|4917042.5|2
  66. 602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes
  67. g.copy vect=roads,myroads
  68. # create lines map connecting points to network
  69. v.net myroads points=centernodes out=myroads_net op=connect thresh=500 alayer=1 nlayer=2
  70. # set up costs
  71. # create unique categories for each road in layer 3
  72. v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
  73. # add new table for layer 3
  74. 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"
  75. # copy road type to layer 3
  76. v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label
  77. # upload road length in miles
  78. v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles
  79. # set speed limits in miles / hour
  80. v.db.update myroads_net_time layer=3 col=speed val="5.0"
  81. v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='interstate'"
  82. v.db.update myroads_net_time layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
  83. v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
  84. v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
  85. v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
  86. # define traveling costs as traveling time in minutes:
  87. # set forward costs
  88. v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
  89. # set backward costs
  90. v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"
  91. # subnetwork allocation with fastest paths
  92. v.net.alloc in=myroads_net_time alayer=3 nlayer=2 afcol=cost abcol=bcost out=myroads_net_alloc_time ccats=1-3
  93. </pre></div>
  94. To display the result, run for example:
  95. <div class="code"><pre>
  96. # show result
  97. g.region vect=myroads_net
  98. d.mon x0
  99. d.vect myroads_net type=line layer=1
  100. # the result has to be selected by category number of the relevant node:
  101. d.vect myroads_net_alloc_time cat=1 col=red layer=1
  102. d.vect myroads_net_alloc_time cat=2 col=green layer=1
  103. d.vect myroads_net_alloc_time cat=3 col=yellow layer=1
  104. # center nodes
  105. d.vect myroads_net_time col=red icon=basic/triangle fcol=green size=12 type=point layer=2
  106. </pre></div>
  107. <h2>SEE ALSO</h2>
  108. <em><a href="d.path.html">d.path</a></em>,
  109. <em><a href="v.net.html">v.net</a></em>,
  110. <em><a href="v.net.iso.html">v.net.iso</a></em>,
  111. <em><a href="v.net.path.html">v.net.path</a></em>,
  112. <em><a href="v.net.steiner.html">v.net.steiner</a></em>,
  113. <em><a href="v.net.salesman.html">v.net.salesman</a></em>
  114. <h2>AUTHOR</h2>
  115. Radim Blazek, ITC-Irst, Trento, Italy<br>
  116. Documentation: Markus Neteler, Markus Metz
  117. <p><i>Last changed: $Date$</i>