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.
I centri devono essere assegnati a nodi vettoriali utilizzando il digitalizzatore vettoriale della wxGUI.
1. Allocazione di sottoreti utilizzando la distanza:
2. Allocazione di sottoreti utilizzando il tempo di percorrenza:
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
# 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
# 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
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