GRASS logo

NOME

v.net.iso - Divide la rete in isolinee di costo. Divide la rete in fasce comprese fra isolinee di costo (a partire da un centro). Il nodo definito come centro dev'essere aperto (costi >= 0). I costi del centro vengono utilizzati nel calcolo.

PAROLE CHIAVE

vettore, rete, isolinee

SINOSSI

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

Flag:

-g
Usa il calcolo geodetico per le location longitudine-latitudine
--overwrite
Sovrascrive i file esistenti
--verbose
Output verboso del modulo
--quiet
Output quieto del modulo

Parametri:

input=nome
Nome della mappa vettoriale di input
output=nome
Nome della mappa vettoriale di output
type=string[,string,...]
Tipo di arco
Opzioni: line,boundary
Predefinito: line,boundary
alayer=integer
Layer degli archi
Una singola mappa vettoriale può essere connessa a più tabelle di un database. Questo numero determina quale tabella viene utilizzata.
Predefinito: 1
nlayer=integer
Layer dei nodi
Una singola mappa vettoriale può essere connessa a più tabelle di un database. Questo numero determina quale tabella viene utilizzata.
Predefinito: 2
afcolumn=nome
Colonna costo direzione in avanti (o tutte) per gli archi (numero)
abcolumn=nome
Colonna costo direzione indietro per gli archi (numero)
ncolumn=nome
Colonna costo per i nodi (numero)
ccats=range
Valori delle categorie
Categorie dei centri (punti o nodi) ai quali dev'essere assegnata la rete. Il layer per queste categorie è dato dall'opzione nlayer.
costs=integer[,integer,...]
Costi per le isolinee

DESCRIZIONE

v.net.iso divide la rete in fasce comprese fra isolinee di costo (distanza da un centro). Il nodo definito come centro dev'essere aperto (costi >= 0). I costi del nodo del centro vengono utilizzati nel calcolo.

I costi possono rappresentare la lunghezza delle linee oppure attributi salvati in una tabella di database. I valori di questi attributi sono considerati come costi dell'intero segmento, e non come costi per attraversare un'unità di lunghezza (p.es. metri) del segmento. Per esempio, se il limite di velocità è 100 Km/h, il costo per attraversare un segmento lungo 10 Km dev'essere calcolato come lungh/vel = 10 Km/(100 Km/h) = 0.1 h. Sono possibili assegnazioni di costo sia per gli archi che per i nodi, e anche costi diversi per le due direzioni di una linea vettoriale. Per le aree i costi vengono calcolati lungo i bordi.

Il vettoriale in ingresso dev'essere preparato con v.net operation=connect per collegare i punti che rappresentano i nodi dei centri alla rete.

NOTE

Nodi e archi possono essere chiusi assegnado un costo = -1.

I nodi dovono stare sulle isolinee.

ESEMPI

La mappa deve contenere almeno un centro (punto) sulla rete vettoriale, che può essere inserito con v.net.

Isodistanze:

v.net.iso example with distance

Isocrone:

v.net.iso example with traveling time

Suddivisione di una rete in funzione della distanza:

# Spearfish

# nodo di partenza:
echo "591280.5|4926396.0|1" | v.in.ascii in=- out=startnode
g.copy vect=roads,myroads

#connettere il punto alla rete
v.net myroads points=startnode out=myroads_net op=connect thresh=200

# definire isodistanze sulla rete
v.net.iso input=myroads_net output=myroads_net_iso ccats=1-100000 costs=1000,2000,5000
La rete è suddivisa in 4 categorie:
v.category myroads_net_iso option=report
# ... riporta 4 categorie:
#cat | distanza dal punto in metri
#1          0 - < 1000
#2       1000 - < 2000
#3       2000 - < 5000
#4             >= 5000
Per vedere i risultati eseguire, per esempio:
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

Suddivisione di una rete in funzione del tempo di percorrenza:

Preparare la rete come sopra:
# Spearfish

# nodo di partenza:
echo "591280.5|4926396.0|1" | v.in.ascii in=- out=startnode
g.copy vect=roads,myroads

# connettere il punto alla rete
v.net myroads points=startnode out=myroads_net op=connect thresh=200
Define i costi come tempo di percorrenza dipendente dai limiti d velocità:
# definire i costi

# creare una categoria unica per ogni strada nel layer 3
v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line

# aggiungere una nuova tabella per il 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"

# copiare il tipo di strada sul layer 3
v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label columns=label

# caricare la lunghezza della strada in miglia
v.to.db myroads_net_time layer=3 type=line option=length col=length unit=miles

#  impostare i limiti di velocita in miglia/ora
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'"

# definire i costi di viaggio come tempo di percorrenza in minuti:

# impostare i costi in avanti
v.db.update myroads_net_time layer=3 col=cost val="length / speed * 60"
# impostare i costi all'indietro
v.db.update myroads_net_time layer=3 col=bcost val="length / speed * 60"

# definire isoaree sulla rete utilizzando il tempo di percorrenza:
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
Per visualizzare il risultato eseguire, per esempio:
# add table with labels and coloring
v.db.addtable myroads_net_iso_time columns="cat integer,trav_time varchar(20),GRASSRGB varchar(11)"
# etichette
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"
# colori
# 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"

# vedere i risultati
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

VEDI ANCHE

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

AUTORE

Radim Blazek, ITC-Irst, Trento, Italy
Documentatione: Markus Neteler, Markus Metz

Last changed: $Date: 2011-11-08 10:42:51 +0100(mar, 08 nov 2011) $


Main index - vector index - Full index

© 2003-2011 GRASS Development Team