GRASS logo

NOME

v.net.alloc - Assegna sottoreti per i centri più vicini (direzione dal centro). Il nodo definito come centro dev'essere aperto (costi >= 0). I costi del nodo centrale vengono utilizzati nel calcolo

PAROLE CHIAVE

vettore, rete, allocazione

SINOSSI

v.net.alloc
v.net.alloc help
v.net.alloc [-g] input=nome output=nome [type=string[,string,...]] [alayer=integer] [nlayer=integer] [afcolumn=string] [abcolumn=string] [ncolumn=string] ccats=range [--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
Numero del layer
Layer degli archi
Predefinito: 1
nlayer=integer
Numero del layer
Layer dei nodi
Predefinito: 2
afcolumn=string
Colonna costo direzione in avanti (o tutte) per gli archi (numero)
abcolumn=string
Colonna costo direzione indietro per gli archi (numero)
ncolumn=string
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

DESCRIZIONE

v.net.alloc ripartisce la rete in sottoreti, una per ogni centro, costituite dalle parti di rete più vicine al centro (a partire dal centro). I nodi definiti come centro devono essere aperti (costi >= 0). I costi dei centri 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 centri (nodi) alla rete.

NOTE

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

I centri devono essere assegnati a nodi vettoriali utilizzando il digitalizzatore vettoriale della wxGUI.

ESEMPI

1. Allocazione di sottoreti utilizzando la distanza:

v.net.alloc example using distance

2. Allocazione di sottoreti utilizzando il tempo di percorrenza:

v.net.alloc example using time

Esempio 1: Calcolo di sottoreti per 3 centri utilizzando le distanze

# Spearfish

# nodi dei centri:
echo "591235.5|4926306.62|1
596591.8|4917042.5|2
602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes

g.copy vect=roads,myroads

# connessione dei punti alla rete
v.net myroads points=centernodes out=myroads_net op=connect thresh=200

# allocazione, specificando l'intervallo delle categorie dei centri (più
# facile  catturarli tutti):
v.net.alloc myroads_net out=myroads_net_alloc ccats=1-100000 nlayer=2

# report categories
v.category myroads_net_alloc option=report
Per visualizzare il risultato eseguire, per esempio:
# vedere il risultato
g.region vect=myroads_net
d.mon x0
d.vect myroads_net layer=1

# il risultato dev'essere selezionato in base al numero di categoria del
# nodo considerato:
d.vect myroads_net_alloc cat=2 col=green layer=1
d.vect myroads_net_alloc cat=3 col=yellow layer=1

# nodi dei centri
d.vect myroads_net col=red icon=basic/triangle fcol=green size=12 layer=2

Esempio 2: Calcolo di sottoreti per 3 nodi dei centri utilizzando il costo assegnato alla lunghezza vettoriale

# Spearfish

# nodi dei centri:
echo "591235.5|4926306.62|1
596591.8|4917042.5|2
602722.9|4923544.2|3" | v.in.ascii in=- out=centernodes

g.copy vect=roads,myroads

# creare una mappa di linee che connettono i punti alla rete
v.net myroads points=centernodes out=myroads_net op=connect thresh=500 alayer=1 nlayer=2

# 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/trasferire 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 viaggio in minuti:

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

# allocazione di sottoreti in base al percorso più veloce
v.net.alloc in=myroads_net_time alayer=3 nlayer=2 afcol=cost abcol=bcost out=myroads_net_alloc_time ccats=1-3
Per visualizzare il risultato eseguire, per esempio:
# mostra il risultato
g.region vect=myroads_net
d.mon x0
d.vect myroads_net type=line layer=1

# the result has to be selected by category number of the relevant node:
d.vect myroads_net_alloc_time cat=1 col=red layer=1
d.vect myroads_net_alloc_time cat=2 col=green layer=1
d.vect myroads_net_alloc_time cat=3 col=yellow layer=1

# nodi dei centri
d.vect myroads_net_time col=red icon=basic/triangle fcol=green size=12 type=point layer=2

VEDI ANCHE

d.path, v.net, v.net.iso, v.net.path, v.net.steiner, v.net.salesman

AUTORE

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

Last changed: $Date: 2011-12-11 21:06:55 +0100(dom, 11 dic 2011) $


Main index - vector index - Full index

© 2003-2011 GRASS Development Team