banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 28 June 2022 12:09

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour,

J'ai une couche ponctuelle horodatée (jma, heure, minute, seconde) qui correspond à un itinéraire sur le réseau routier. Mes points épousent le linéaire du réseau routier. Je souhaiterais appliquer une symbologie "flèche" qui indiquerait la direction du point vers le point suivant. Je pourrais utiliser pour cela le champs date/heure/min/sec.

Ainsi mon point 1 doit être représenté par une flèche dirigée vers le point 2. Le point 2 doit être représenté par une flèche dirigée vers le point 3 et ainsi de suite.

Voici en PJ une capture pour y voir plus clair.
Vous noterez qu'il y a des horaires éloignés parce que le véhicule est passé 2X sur cette voie. Mais fondamentalement ça ne change rien au problème.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Tue 28 June 2022 14:07

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 125

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour,
j'ai une solution, mais il faut que votre attribut temporel soit un champ de type DATETIME.
Si non, il faudra le convertir ou adapter la formule.
De là, Aller dans l'onglet symbologie --> Ligne 'Rotation' tout à droite vous avez une icone (ça ressemble à deux cellule l'une sur l'autre), cliquer dessus --> editer --> renseigner la formule suivante :

Code:

with_variable('arr_date',
aggregate( 
layer:='point',
aggregate:='array_agg',
expression:="date",
order_by:="date"),
line_interpolate_angle(make_line($geometry,   geometry( get_feature('point','date', @arr_date[1+array_find( @arr_date,"date")]))),0.0005)

Et voila, ça devrait être bon

hypothèse : "date" correspond à votre champ temporel, 'point' correspond au nom de votre couche de point, à adapter donc

Dernière modification par shirosaki (Tue 28 June 2022 14:09)


Paul QUESNOT

Hors ligne

 

#3 Wed 29 June 2022 16:09

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour shirosaki,

Merci pour cette proposition. Je n'ai pas réussi à la faire fonctionner.
Parmi les type de champs, je n'ai déjà le choix qu'entre texte et date (8).
Mon champs d'origine qui contient l'horodatage est de type texte. Je n'arrive pas à le transformer en datetime.
J'ai essayé to datetime ("mon champs", 'MM-dd_HH:mm:ss', 'FR')

Hors ligne

 

#4 Wed 29 June 2022 17:06

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 125

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour,
pouvez vous me transmettre un extrait de votre table attributaire ?
Sous quel format est votre couche ? shp, geopackage ?


Paul QUESNOT

Hors ligne

 

#5 Wed 29 June 2022 17:49

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Voici un extrait de la couche shp. Merci.

Dernière modification par upriste (Wed 29 June 2022 17:50)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Thu 30 June 2022 08:27

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 125

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour,
Vous pouvez créer un champ virtuel, vous aurez la possibilité de faire un champ DATETIME (Date et heure).
La formule à utiliser est la suivante :

Code:

to_datetime( 
( string_to_array(  "Date&Heure" ,' ')[0] || ' ' ||  "HeureMinSe"),
'dd/MM/yyyy HH:mm:ss.zzz')

Dernière modification par shirosaki (Thu 30 June 2022 08:33)


Paul QUESNOT

Hors ligne

 

#7 Thu 30 June 2022 17:46

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Ah oui je n'avais pas pensé au champs virtuel. Votre formule fonctionne pour cela.
Par contre, le code transmis pour la symbologie ne fonctionne pas.
Je ne peux pas joindre la couche ici car après export le champs virtuel devient un champs texte.

Hors ligne

 

#8 Thu 30 June 2022 17:51

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 125

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

en effet, il manquait une parenthèse à la fin de la formule,

Code:

with_variable('arr_date',
aggregate( 
layer:=@layer,
aggregate:='array_agg',
expression:="date",
order_by:="date"),
line_interpolate_angle(make_line($geometry,   geometry( get_feature('point','date', @arr_date[1+array_find( @arr_date,"date")]))),0.0005))

j'ai également adapter la formule, comme ça vous n'avez qu'à changer le nom du champ "date".
ça devrait marcher maintenant, chez moi ça fonctionne avec vos données

Si ça ne fonctionne toujours pas, avez vous un message d'erreur ?

Dernière modification par shirosaki (Thu 30 June 2022 17:54)


Paul QUESNOT

Hors ligne

 

#9 Fri 01 July 2022 08:57

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

La formule fonctionne cette fois. Merci.
Par contre, Les flèches ne sont pas toujours dirigées vers vers le point suivant dans l'ordre chronologique.
Voici une capture : à cet endroit les points devraient tous aller vers le haut. Or les flèches sont tournés dans des sens différents. De ce que j'ai pu voir sur l'ensemble des données, il y a autant de flèches bien dirigées de flèches mal dirigées.
Il y a peut aussi cette contrainte de la voie ? J'ai fait en sorte de replacer tous les points sur la voie pour que cela fasse plus propre. Du coup la flèche directionnelle doit suivre aussi la voie ce qui parait complexe.

Dernière modification par upriste (Fri 01 July 2022 10:11)

Hors ligne

 

#10 Fri 01 July 2022 17:12

shirosaki
Participant actif
Lieu: Lyon
Date d'inscription: 30 Mar 2018
Messages: 125

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Il y avait une erreur dans la formule précédente, voici une version actualisée

Code:

with_variable('arr_date',
aggregate( 
layer:=@layer,
aggregate:='array_agg',
expression:="date",
order_by:="date"),
line_interpolate_angle(make_line($geometry,   geometry( get_feature(@layer,'date', @arr_date[1+array_find( @arr_date,"date")]))),0.0005))

attention de bien adapter le nom du champ "date"

PS : la capture d'écran mentionnée dans votre précédent post n'est pas passée

Dernière modification par shirosaki (Fri 01 July 2022 17:17)


Paul QUESNOT

Hors ligne

 

#11 Mon 04 July 2022 10:36

upriste
Participant occasionnel
Date d'inscription: 14 Feb 2019
Messages: 43

Re: QGIS 3.20.3: fleche directionnelle vers le point suivant

Bonjour,

Ca a l'air de plutôt fonctionner mis à part quelques cas particuliers. Merci pour cette formule.
Il faut juste avoir conscience que l'exécution de la formule génère une latence.

Hors ligne

 

Pied de page des forums

Powered by FluxBB