
g.copy vect=roads,myroads_temp1

# create lines map connecting points to network
v.net myroads_temp1 out=myroads_temp2 op=nodes alayer=1 nlayer=2 -c --overwrite --quiet
v.db.addtable myroads_temp2 layer=2 col="cat integer, cost double precision"  --overwrite --quiet

# set up costs

# create unique categories for each road in layer 3
v.category in=myroads_temp2 out=myroads_temp1 opt=add cat=1 layer=3 type=line --overwrite --quiet

# add new table for layer 3
v.db.addtable myroads_temp1 layer=3 col="cat integer,label varchar(43),length double precision,speed double precision,cost double precision,bcost double precision" --overwrite --quiet

# copy road type to layer 3
v.to.db myroads_temp1 layer=3 qlayer=1 opt=query qcolumn=label columns=label

# upload road length in miles
v.to.db myroads_temp1 layer=3 type=line option=length col=length unit=miles

# set speed limits in miles / hour
v.db.update myroads_temp1 layer=3 col=speed val="5.0"
v.db.update myroads_temp1 layer=3 col=speed val="75.0" where="label='interstate'"
v.db.update myroads_temp1 layer=3 col=speed val="75.0" where="label='primary highway, hard surface'"
v.db.update myroads_temp1 layer=3 col=speed val="50.0" where="label='secondary highway, hard surface'"
v.db.update myroads_temp1 layer=3 col=speed val="25.0" where="label='light-duty road, improved surface'"
v.db.update myroads_temp1 layer=3 col=speed val="5.0" where="label='unimproved road'"

# just some value for nodes for testing purpose
v.db.update myroads_temp1 layer=2 col=cost val="15.0" where="cat<200"
v.db.update myroads_temp1 layer=2 col=cost val="50.0" where="cat<400  AND cat>199"
v.db.update myroads_temp1 layer=2 col=cost val="100.0" where="cat>399"


# define traveling costs as traveling time in minutes:

# set forward costs
v.db.update myroads_temp1 layer=3 col=cost val="length / speed * 60"
# set backward costs
v.db.update myroads_temp1 layer=3 col=bcost val="length / speed * 60"

v.net.turntable in=myroads_temp1 out=myroads_temp2 alayer=3, nlayer=1, tlayer=4, tuclayer=5 --overwrite

g.copy vect=myroads_temp2,myroads1 --overwrite
g.remove vect=myroads_temp1
g.remove vect=myroads_temp2
