[Gfoss] usare v.net.salesman

Salve,

vorrei sapere se qualcuno ha esperienza riguardo a v.net.salesman
io ho necessità di creare un percorso che mi permetta di visitare tutti i punti inseriti, andando da uno a un’altro, e percorrendo ogni volta la minore strada possibile. L’unico parametro da considerare è il fatto di percorrere meno strada possibile (usando quindi la distanza fra i punti).

ho provato a utilizzare v.net.salesmen dopo aver costruito un network (usando v.net) e poi creando le polilinee con (v.build.polylines)

il comando che ho messo è
v.net.salesman -g input=net_oristano_polilines@PERMANENT output=oristano_salesman type=line,boundary alayer=1 nlayer=2 ccats=cat

l’output di grass è
Unable to convert category string ‘cat’ (from ‘cat’) to category range

Number of cities: [0]

Not enough cities (< 2)

Non capisco cosa sono le cities e come devo impostarle e non capisco cosa intende per ‘cat’

grazie a tutti per l’aiuto

Saluti
Gianluca


Gianluca Gasperini
via Lupinaio, 6
56040 Lorenzana - Pisa - Italia
gianluca.gasperini@gmail.com
mobile: +39 328 26 42 129
Tel. & Fax.: +39 050 662 969

2009/5/14 Gianluca Gasperini <gianluca.gasperini@gmail.com>:

Salve,

vorrei sapere se qualcuno ha esperienza riguardo a v.net.salesman
io ho necessità di creare un percorso che mi permetta di visitare tutti i
punti inseriti, andando da uno a un'altro, e percorrendo ogni volta la
minore strada possibile. L'unico parametro da considerare è il fatto di
percorrere meno strada possibile (usando quindi la distanza fra i punti).

ho provato a utilizzare v.net.salesmen dopo aver costruito un network
(usando v.net) e poi creando le polilinee con (v.build.polylines)

Non vedo la necessità di usare v.build.polylines - potrebbe essere
che rovina proprio il grafo?

il comando che ho messo è
v.net.salesman -g input=net_oristano_polilines@PERMANENT
output=oristano_salesman type=line,boundary alayer=1 nlayer=2 ccats=cat

l'output di grass è
Unable to convert category string 'cat' (from 'cat') to category range

Cosa dice
v.info -c net_oristano_polilines
?

Number of cities: [0]

Not enough cities (< 2)

Non capisco cosa sono le cities e come devo impostarle e non capisco cosa

i "cities" sono i punti da visitare.

intende per 'cat'

le cat sono le categorie che corrispondono all'ID di ogni nodo.

Magari aiuta l'esempio nel manuale:
http://grass.osgeo.org/grass64/manuals/html64_user/v.net.salesman.html

(modifiche sono sempre benvenute!)

Ciao
markus

grazie mille per la risposta e per l’auto

ho eseguito
v.info -c map=net_oristano_polilines@PERMANENT layer=1

e ottengo
INTEGER|cat
DOUBLE PRECISION|osm_id
CHARACTER|name
CHARACTER|type
INTEGER|oneway
DOUBLE PRECISION|distance

però se faccio la stessa interrogazione con layer=0 o layer=2 (che dovrebbero essere i nodi)
mi risponde
Displaying column types/names for database connection of layer 0:

Database connection not defined
la stessa risposta la ottengo per il layer 2.

perchè ? il layer con i nodi specialmente esiste e dalla tabella visualizzata in qgis si vede che hanno colonna cat e id.

seguendo l’esempio sul manuale i rendo conto che ho seguito tutti i pasaggi e credo di averli fatti correttamente
mi sono appoggiato anche a http://appuntigis.blogspot.com/2009/02/random-network-analisys-in-grass.html

comunque l’esempio di grass per il comando v.net.salesman ad un certo punto mi dice

v.category myroads_net op=report

credo che sia per vedere se è tutto a posto??

se faccio io v.categories:

v.category input=net_oristano_polilines@PERMANENT type=point,line option=report

ottengo
Layer / table: 1 / net_oristano_polilines

Layer: 2
type       count        min        max
point          0          0          0

line        8630          1       9969
boundary       0          0          0
centroid       0          0          0
area           0          0          0
all         8630          1       9969
type       count        min        max

point        335          1        335
line           0          0          0
boundary       0          0          0
centroid       0          0          0
area           0          0          0
all          335          1        335

come mai mi sembra che il table 1 sia senza tabella?

cosa sbaglio?

Grazie ancora molto per l'aiuto
Gianluca

Il giorno 14 maggio 2009 21.16, Markus Neteler <neteler@osgeo.org> ha scritto:

2009/5/14 Gianluca Gasperini <gianluca.gasperini@gmail.com>:

Salve,

vorrei sapere se qualcuno ha esperienza riguardo a v.net.salesman
io ho necessità di creare un percorso che mi permetta di visitare tutti i
punti inseriti, andando da uno a un’altro, e percorrendo ogni volta la
minore strada possibile. L’unico parametro da considerare è il fatto di
percorrere meno strada possibile (usando quindi la distanza fra i punti).

ho provato a utilizzare v.net.salesmen dopo aver costruito un network
(usando v.net) e poi creando le polilinee con (v.build.polylines)

Non vedo la necessità di usare v.build.polylines - potrebbe essere
che rovina proprio il grafo?

il comando che ho messo è
v.net.salesman -g input=net_oristano_polilines@PERMANENT
output=oristano_salesman type=line,boundary alayer=1 nlayer=2 ccats=cat

l’output di grass è
Unable to convert category string ‘cat’ (from ‘cat’) to category range

Cosa dice
v.info -c net_oristano_polilines

?

Number of cities: [0]

Not enough cities (< 2)

Non capisco cosa sono le cities e come devo impostarle e non capisco cosa

i “cities” sono i punti da visitare.

intende per ‘cat’

le cat sono le categorie che corrispondono all’ID di ogni nodo.

Magari aiuta l’esempio nel manuale:
http://grass.osgeo.org/grass64/manuals/html64_user/v.net.salesman.html

(modifiche sono sempre benvenute!)

Ciao
markus


Gianluca Gasperini
via Lupinaio, 6
56040 Lorenzana - Pisa - Italia
gianluca.gasperini@gmail.com
mobile: +39 328 26 42 129
Tel. & Fax.: +39 050 662 969

Ho provato a usare v.net.salesman con un file generato direttamente da v.net (ho fatto prima op=connect e poi op=nodes)
però ottengo un errore
può essere utile che io faccia la v.clean per pulire la rete creata da v.net? eventualmente com è meglio usare la clean che ho visto dal manuale ha un sacco di opzioni?

nel frattempo ho ottenuto alcuni risultati ma l’elenco dei punti da seguire dove lo vedo? i cat dei punti che crea v.net.salesman sono uguali a quelli precedenti, io invece pensavo che fossero ordinati secondo il percorso da seguire. Come faccio ad ottenere l’elenco dei punti da seguire? visto che nel io caso sono parecchi?

grazie
Gianluca

Il giorno 14 maggio 2009 21.16, Markus Neteler <neteler@osgeo.org> ha scritto:

2009/5/14 Gianluca Gasperini <gianluca.gasperini@gmail.com>:

Salve,

vorrei sapere se qualcuno ha esperienza riguardo a v.net.salesman
io ho necessità di creare un percorso che mi permetta di visitare tutti i
punti inseriti, andando da uno a un’altro, e percorrendo ogni volta la
minore strada possibile. L’unico parametro da considerare è il fatto di
percorrere meno strada possibile (usando quindi la distanza fra i punti).

ho provato a utilizzare v.net.salesmen dopo aver costruito un network
(usando v.net) e poi creando le polilinee con (v.build.polylines)

Non vedo la necessità di usare v.build.polylines - potrebbe essere
che rovina proprio il grafo?

il comando che ho messo è
v.net.salesman -g input=net_oristano_polilines@PERMANENT
output=oristano_salesman type=line,boundary alayer=1 nlayer=2 ccats=cat

l’output di grass è
Unable to convert category string ‘cat’ (from ‘cat’) to category range

Cosa dice
v.info -c net_oristano_polilines

?

Number of cities: [0]

Not enough cities (< 2)

Non capisco cosa sono le cities e come devo impostarle e non capisco cosa

i “cities” sono i punti da visitare.

intende per ‘cat’

le cat sono le categorie che corrispondono all’ID di ogni nodo.

Magari aiuta l’esempio nel manuale:
http://grass.osgeo.org/grass64/manuals/html64_user/v.net.salesman.html

(modifiche sono sempre benvenute!)

Ciao
markus


Gianluca Gasperini
via Lupinaio, 6
56040 Lorenzana - Pisa - Italia
gianluca.gasperini@gmail.com
mobile: +39 328 26 42 129
Tel. & Fax.: +39 050 662 969

2009/5/15 Gianluca Gasperini <gianluca.gasperini@gmail.com>:

grazie mille per la risposta e per l'auto

(non ho molto tempo, ma qualche dritta spero:)

ho eseguito
v.info -c map=net_oristano_polilines@PERMANENT layer=1

e ottengo
INTEGER|cat
DOUBLE PRECISION|osm_id
CHARACTER|name
CHARACTER|type
INTEGER|oneway
DOUBLE PRECISION|distance

però se faccio la stessa interrogazione con layer=0 o layer=2 (che

layer 0 non esiste direi ma layer 1 (se mi ricordo bene layer 0 non è
previsto in GRASS). Lo poin controllare per una mappa con

v.db.connect -p map=net_oristano_polilines@PERMANENT

dovrebbero essere i nodi)
mi risponde
Displaying column types/names for database connection of layer 0:

Database connection not defined
la stessa risposta la ottengo per il layer 2.

perchè ? il layer con i nodi specialmente esiste e dalla tabella
visualizzata in qgis si vede che hanno colonna cat e id.

Se lo vede QGIS, allora deve essere visibile anche in GRASS (per forza).

Magari hai due mappe con lo stesso nome in due mapset?

seguendo l'esempio sul manuale i rendo conto che ho seguito tutti i pasaggi
e credo di averli fatti correttamente

(a parte di v.build.poylines, diciamo che viene fatto pre *preparare* la mappa
vettoriale prima di qualsiasi operazione v.net.*)

mi sono appoggiato anche a
http://appuntigis.blogspot.com/2009/02/random-network-analisys-in-grass.html

comunque l'esempio di grass per il comando v.net.salesman ad un certo punto
mi dice

v.category myroads_net op=report

credo che sia per vedere se è tutto a posto??

Sì - ho aggiunto un commento nel manuale.

se faccio io v.categories:

v.category input=net_oristano_polilines@PERMANENT type=point,line
option=report

ottengo
Layer / table: 1 / net_oristano_polilines

Layer: 2
type count min max
point 0 0 0

line 8630 1 9969
boundary 0 0 0
centroid 0 0 0
area 0 0 0
all 8630 1 9969
type count min max

point 335 1 335
line 0 0 0
boundary 0 0 0
centroid 0 0 0
area 0 0 0
all 335 1 335

come mai mi sembra che il table 1 sia senza tabella?

Sinceramente, non lo so... sarà qualche dettaglio!

Nel email dopo dicevi "però ottengo un errore" ma non quale...

ciao
Markus

Sono riuscito ad usare il comando con risultati soddisfacenti, grazie mille per le dritte che sono state di grande aiuto.

In effetti la mappa che viene fuori da v.net.salesman è composta da: layer1 → lineare e layer2-> puntuale
il layer2 contiene il cat degli elementi e un id provvisorio ordinato secondo il percorso da visitare.
si deve fare qualche invensione per esportare l’ordine perchè se esporto la tabella del puntuale non mi esporta l’id per l’ordine, comunque smanettando un po’ con dbf e calc si riesce a risolvere.

Comunque avevi ragione la v.build.polylines non è necessaria e se il network proviene da un vettoriale ben preparato non è necessaria nemmeno la build.

Grazie ancora per l’aiuto

e mi scuso ancora per aver scritto direttamente ma avevo urgenza di risolvere il problema
Saluti
Gianluca

Il giorno 18 maggio 2009 23.05, Markus Neteler <neteler@osgeo.org> ha scritto:

2009/5/15 Gianluca Gasperini <gianluca.gasperini@gmail.com>:

grazie mille per la risposta e per l’auto

(non ho molto tempo, ma qualche dritta spero:)

ho eseguito
v.info -c map=net_oristano_polilines@PERMANENT layer=1

e ottengo
INTEGER|cat
DOUBLE PRECISION|osm_id
CHARACTER|name
CHARACTER|type
INTEGER|oneway
DOUBLE PRECISION|distance

però se faccio la stessa interrogazione con layer=0 o layer=2 (che

layer 0 non esiste direi ma layer 1 (se mi ricordo bene layer 0 non è
previsto in GRASS). Lo poin controllare per una mappa con

v.db.connect -p map=net_oristano_polilines@PERMANENT

dovrebbero essere i nodi)
mi risponde
Displaying column types/names for database connection of layer 0:

Database connection not defined
la stessa risposta la ottengo per il layer 2.

perchè ? il layer con i nodi specialmente esiste e dalla tabella
visualizzata in qgis si vede che hanno colonna cat e id.

Se lo vede QGIS, allora deve essere visibile anche in GRASS (per forza).

Magari hai due mappe con lo stesso nome in due mapset?

seguendo l’esempio sul manuale i rendo conto che ho seguito tutti i pasaggi
e credo di averli fatti correttamente

(a parte di v.build.poylines, diciamo che viene fatto pre preparare la mappa
vettoriale prima di qualsiasi operazione v.net.*)

mi sono appoggiato anche a
http://appuntigis.blogspot.com/2009/02/random-network-analisys-in-grass.html

comunque l’esempio di grass per il comando v.net.salesman ad un certo punto
mi dice

v.category myroads_net op=report

credo che sia per vedere se è tutto a posto??

Sì - ho aggiunto un commento nel manuale.

se faccio io v.categories:

v.category input=net_oristano_polilines@PERMANENT type=point,line
option=report

ottengo
Layer / table: 1 / net_oristano_polilines

Layer: 2
type count min max
point 0 0 0

line 8630 1 9969
boundary 0 0 0
centroid 0 0 0
area 0 0 0
all 8630 1 9969
type count min max

point 335 1 335
line 0 0 0
boundary 0 0 0
centroid 0 0 0
area 0 0 0
all 335 1 335

come mai mi sembra che il table 1 sia senza tabella?

Sinceramente, non lo so… sarà qualche dettaglio!

Nel email dopo dicevi “però ottengo un errore” ma non quale…

ciao
Markus


Gianluca Gasperini
via Lupinaio, 6
56040 Lorenzana - Pisa - Italia
gianluca.gasperini@gmail.com
mobile: +39 328 26 42 129
Tel. & Fax.: +39 050 662 969