Il s'agit de la commande v.net.pathgrass qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos nombreux postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
v.net.chemin - Trouve le chemin le plus court sur le réseau vectoriel.
MOTS-CLÉS
vecteur, réseau, chemin le plus court
SYNOPSIS
v.net.chemin
v.net.chemin --Aidez-moi
v.net.chemin [-gs] contribution=prénom sortie=prénom [type=un magnifique[,un magnifique,...]] [arc_couche=un magnifique]
[couche_nœud=un magnifique] [filet=prénom] [arc_colonne=un magnifique] [arc_backward_column=un magnifique]
[noeud_colonne=un magnifique] [dmax=flotter] [--écraser] [--vous aider] [--verbeux] [--calme]
[--ui]
Drapeaux:
-g
Utiliser le calcul géodésique pour les emplacements longitude-latitude
-s
Écrivez la sortie sous forme de segments d'entrée d'origine, et non chaque chemin sous forme d'une seule ligne.
--écraser
Autoriser les fichiers de sortie à écraser les fichiers existants
--Aidez-moi
Imprimer le récapitulatif d'utilisation
--verbeux
Sortie du module verbeux
--silencieux
Sortie module silencieuse
--interface utilisateur
Forcer le lancement de la boîte de dialogue GUI
Paramètres:
contribution=prénom [obligatoire]
Nom de la carte vectorielle d'entrée
Ou source de données pour un accès OGR direct
sortie=prénom [obligatoire]
Nom de la carte vectorielle de sortie
type=chaîne[,chaîne,...]
Type d'arc
Type d'entité en entrée
Options : ligne, limite
Valeur par défaut: ligne, frontière
arc_couche=un magnifique
Couche d'arc
Les entités vectorielles peuvent avoir des valeurs de catégorie dans différentes couches. Ce nombre détermine
quelle couche utiliser. Lorsqu'il est utilisé avec un accès OGR direct, il s'agit du nom de la couche.
Valeur par défaut: 1
couche_nœud=un magnifique
Couche de nœuds
Les entités vectorielles peuvent avoir des valeurs de catégorie dans différentes couches. Ce nombre détermine
quelle couche utiliser. Lorsqu'il est utilisé avec un accès OGR direct, il s'agit du nom de la couche.
Valeur par défaut: 2
filet=prénom
Nom du fichier contenant les points de début et de fin. S'il n'est pas spécifié, lire depuis l'entrée standard.
arc_colonne=un magnifique
Colonne de coût de l'arc vers l'avant/dans les deux sens (nombre)
arc_backward_column=un magnifique
Colonne de coût dans le sens inverse de l'arc (nombre)
noeud_colonne=un magnifique
Colonne de coût de nœud (nombre)
dmax=flotter
Distance maximale au réseau
Si les coordonnées de début et de fin sont données, si le point de départ et d'arrivée est hors de ce seuil,
Le chemin est introuvable et un message d'erreur s'affiche. Pour accélérer le processus, conservez ce chemin.
valeur la plus basse possible.
Valeur par défaut: 1000
DESCRIPTION
v.net.chemin détermine le(s) chemin(s) le(s) moins coûteux, par exemple le(s) chemin(s) le(s) plus court(s) ou le(s) plus rapide(s) sur un réseau vectoriel.
Les coûts peuvent être soit des longueurs de ligne, soit des attributs enregistrés dans une table de base de données. Ces attributs
les valeurs sont considérées comme des coûts de segments entiers, et non comme des coûts pour traverser une unité de longueur (par exemple
mètre) du segment. Par exemple, si la limite de vitesse est de 100 km/h, le coût pour
traverser un segment de route de 10 km de long doit être calculé comme
longueur / vitesse = 10 km / (100 km/h) = 0.1 h.
Les affectations de coûts pour les arcs et les nœuds sont prises en charge, ainsi que des coûts différents pour les deux
directions d'une ligne vectorielle. Pour les zones, les coûts seront calculés le long des lignes de démarcation.
Le vecteur d'entrée doit être préparé avec l'opération v.net=connect afin de se connecter
points représentant les nœuds centraux du réseau.
Les nœuds et les arcs peuvent être fermés en utilisant cost = -1.
Les chemins de moindre coût sont écrits dans la carte vectorielle de sortie avec une table d'attributs attachée.
Les nœuds peuvent être
· transmis au programme à partir d'un fichier ou de stdin, ou
· défini dans l'interface utilisateur graphique (« saisir des valeurs de manière interactive »).
La syntaxe est la suivante:
identifiant catégorie_point_départ catégorie_point_fin
(Exemple : 1 1 2)
or
id start_point_x start_point_y end_point_x end_point_y
Les points spécifiés par catégorie doivent être exactement sur les nœuds du réseau et la carte vectorielle d'entrée
doit être préparé avec l'opération v.net=connect.
Lors de la spécification des coordonnées, le nœud de réseau suivant à une paire de coordonnées donnée est utilisé.
La table attributaire contiendra les attributs suivants :
· cat - chemin catégorie unique attribuée par le module
· id - identifiant du chemin (lu depuis l'entrée)
· fcat - à partir de la catégorie de points
· tcat - vers la catégorie de point
· sp - statut du résultat :
· 0 - OK, chemin trouvé
· 1 - le nœud n'est pas accessible
· 2 - le point de la catégorie donnée n'existe pas
· coût - frais de déplacement (sur le réseau, pas vers/depuis le réseau)
· fdist - la distance entre le premier point et le réseau
· tdist - la distance entre le réseau et le deuxième point
NOTES
Les nœuds et les arcs peuvent être fermés en utilisant cost = -1.
Si les colonnes de coûts arc_colonne, arc_backward_column et noeud_colonne ne sont pas spécifiés, le
la longueur des segments de réseau est mesurée et des coûts nuls sont supposés pour les nœuds.
Lors de l'utilisation d'attributs, la longueur des segments n'est pas prise en compte. Pour obtenir des résultats précis,
La longueur de la ligne doit être prise en compte lors de l'attribution des coûts comme attributs. Par exemple,
obtenir le le plus rapide chemin, les colonnes « max_speed » et « length » sont obligatoires. La valeur correcte
Le chemin le plus rapide peut alors être trouvé en spécifiant arc_column=length/max_speed. Si ce n'est pas déjà fait,
existant, la colonne contenant la longueur de la ligne (« length ») doit être ajoutée aux attributs
table utilisant v.à.db.
EXEMPLE
Chemin le plus court (rouge) et le plus rapide (bleu) entre deux nœuds numérisés (Spearfish) :
# Spearfish
echo "1|601955.1|4916944.9|début
2|594385.6|4921565.2|end" | v.in.ascii in=- cat=1 x=2 y=3 out=startend col="cat entier, \
double précision est, double précision nord, étiquette varchar(6)"
v.db.select débutfin
g.copy vect=routes,mesroutes
# créer des lignes mappant les points de connexion au réseau
v.net myroads points=startend out=myroads_net op=connect thresh=500 arc_layer=1 node_layer=2
# frais d'installation
# créer des catégories uniques pour chaque route dans la couche 3
v.category in=myroads_net out=myroads_net_time opt=add cat=1 layer=3 type=line
# ajouter une nouvelle table pour la couche 3
v.db.addtable myroads_net_time layer=3 col="cat entier, étiquette varchar(43),longueur double précision,vitesse double précision,coût double précision,bcost double précision"
# copier le type de route dans la couche 3
v.to.db myroads_net_time layer=3 qlayer=1 opt=query qcolumn=label colonnes=étiquette
# télécharger la longueur de la route en miles
v.to.db myroads_net_time layer=3 type=line option=longueur col=longueur unité=miles
# définir les limites de vitesse en miles / heure
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='autoroute principale, surface dure'"
v.db.update myroads_net_time layer=3 col=speed val="50.0" where="label='autoroute secondaire, surface dure'"
v.db.update myroads_net_time layer=3 col=speed val="25.0" where="label='route légère, surface améliorée'"
v.db.update myroads_net_time layer=3 col=speed val="5.0" where="label='unimproved road'"
# définir les frais de déplacement comme le temps de déplacement en minutes :
# coûts prévisionnels
v.db.update myroads_net_time layer=3 col=cost val="longueur/vitesse * 60"
# définir les coûts en amont
v.db.update myroads_net_time layer=3 col=bcost val="longueur/vitesse * 60"
# ... les nœuds « début » et « fin » ont les numéros de catégorie 1 et 2
# Chemin le plus court : ID comme premier numéro, puis cat1 et cat2
echo "1 1 2" | v.net.path myroads_net_time arc_layer=3 node_layer=2 out=mypath
# Chemin le plus rapide : ID comme premier numéro, puis cat1 et cat2
echo "1 1 2" | v.net.path myroads_net_time arc_layer=3 node_layer=2 arc_column=cost arc_backward_column=bcost out=mypath_time
Pour afficher le résultat, exécutez par exemple :
g.region vecteur=myroads_net
j.lun x0
d.vect mesroutes_net
# afficher le chemin le plus court
d.vect monchemin col=rouge largeur=2
# afficher le chemin le plus rapide
d.vect mypath_time col=bleu largeur=2
# point de départ et d'arrivée
d.vect myroads_net icon=basic/triangle fcol=vert taille=12 layer=2
d.font font=Vera
d.vect startend disp=cat type=point lsize=14 layer=2
Utiliser v.net.pathgrass en ligne à l'aide des services onworks.net