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