Scroll to navigation

v.net.iso(1grass) Grass User's Manual v.net.iso(1grass)

NAME

v.net.iso - Splits net by cost isolines.
 
Splits net to bands between cost isolines (direction from centre). Centre node must be opened (costs >= 0). Costs of centre node are used in calculation.

KEYWORDS

vector, network, isolines

SYNOPSIS

v.net.iso
 
v.net.iso help
 
v.net.iso [-g] input=name output=name [ type=string[,string,...]] [alayer=integer] [ nlayer=integer] [afcolumn= name] [abcolumn=name] [ncolumn=name] ccats=range costs=integer[, integer,...] [--overwrite] [--verbose] [-- quiet]

Flags:

-g
 
Use geodesic calculation for longitude-latitude locations
--overwrite
 
Allow output files to overwrite existing files
--verbose
 
Verbose module output
--quiet
 
Quiet module output

Parameters:

input=name
 
Name of input vector map
output=name
 
Name for output vector map
type=string[,string,...]
 
Arc type
 
Options: line,boundary
 
Default: line,boundary
alayer=integer
 
Arc layer
 
A single vector map can be connected to multiple database tables. This number determines which table to use.
 
Default: 1
nlayer=integer
 
Node layer
 
A single vector map can be connected to multiple database tables. This number determines which table to use.
 
Default: 2
afcolumn=name
 
Arc forward/both direction(s) cost column (number)
abcolumn=name
 
Arc backward direction cost column (number)
ncolumn=name
 
Node cost column (number)
ccats=range
 
Category values
 
Categories of centres (points on nodes) to which net will be allocated. Layer for this categories is given by nlayer option.
costs=integer[,integer,...]
 
Costs for isolines

DESCRIPTION

v.net.iso splits a network into bands between cost isolines (distance from center). Center nodes must be opened (costs >= 0). The costs of center nodes are used in the calculation.
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
 
length / speed = 10 km / (100 km/h) = 0.1 h.
 
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.
The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network.

NOTES

Nodes and arcs can be closed using cost = -1.
Nodes must be on the isolines.

EXAMPLES

The map must contain at least one center (point) on the vector network which can be patched into with v.net.
Isonetwork using distance:
Isonetwork using time:

Subdivision of a network using distance:

 
# 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
 
 
# define iso networks using distance:
 
v.net.iso input=myroads_net output=myroads_net_iso ccats=1-100000 costs=1000,2000,5000
 
The network is divided into 4 categories:
 
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
 
To display the result, run for example:
 
g.region n=4928200 s=4922300 w=589200 e=596500
 
d.mon x0
 
d.vect myroads_net_iso col=blue cats=1
 
d.vect myroads_net_iso col=green cats=2
 
d.vect myroads_net_iso col=orange cats=3
 
d.vect myroads_net_iso col=magenta cats=4
 
d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2
 

Subdivision of a network using traveling time:

Prepare the network as above:
 
# 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
 
Define costs as traveling time dependent on speed limits:
 
# 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
 
To display the result, run for example:
 
# 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
 

SEE ALSO

d.path, v.net, v.net.alloc, v.net.path, v.net.salesman, v.net.steiner, v.patch

AUTHOR

Radim Blazek, ITC-Irst, Trento, Italy
 
Documentation: Markus Neteler, Markus Metz
Last changed: $Date: 2013-05-23 22:01:55 +0200 (Thu, 23 May 2013) $
Full index
© 2003-2014 GRASS Development Team
GRASS 6.4.4