#1 Mon 11 January 2021 14:26
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
Avec QGIS 3.10.
J'ai voulu utiliser uniquement la symbologie pour afficher un trait tous les km le long d'une route.
Le SCR du projet est le Lambert 93 (2154).
En ajoutant une "ligne de symboles" avec un intervalle de 1000 Unités de carte (ou mètre à l'échelle, qui donne le même résultat pour mon cas), j'arrive à afficher des symboles tous les km.
Le problème c'est que lorsque je déplace la carte ou change d'échelle, les symboles bougent.
Il y a quelque chose que j'ai loupé ?
Pour vous représenter le problème, ci-joint un gif qui le met en évidence.
Les ronds correspondent aux symboles affichés via la symbologie.
Les traits correspondent à des ponctuels générés avec la fonction "Points le long d'une géométrie" de la boite à outils.
On constate que les ronds ne sont pas toujours au même endroit que les traits, quand je bouge...
GIF : https://zupimages.net/viewer.php?id=21/02/nvr2.gif
Dernière modification par p.jeremie (Tue 12 January 2021 13:45)
Hors ligne
#2 Tue 12 January 2021 09:39
- Olivier Pompier
- Participant occasionnel
- Date d'inscription: 8 Sep 2013
- Messages: 49
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
Avez vous essayé l'outil Convert lines to points de la boîte à outils Saga pour contourner ce problème ?
Hors ligne
#3 Tue 12 January 2021 13:47
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
Avez vous essayé l'outil Convert lines to points de la boîte à outils Saga pour contourner ce problème ?
Bonjour,
Merci pour la proposition.
J'ai déjà utilisé l'outil Points le long d'un géométrie pour obtenir le résultat souhaité, mais j'aimerais bien comprendre pourquoi avec la symbologie le comportement n'est pas celui atendu.
Hors ligne
#4 Tue 12 January 2021 16:03
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
je ne pense pas que cela soit lié à un bug. Il n'y a pas de possibilité de fixer le point de départ sur le premier nœud avec les interdistances.
Peut-être une évolution à demander du style "commencer sur le premier noeud"...
Sinon sans passer par le plugin vous pouvez quand même faire cela en utilisant le générateur de géométrie (en choisissant point/multipoint) et entrant cette formule :
Code:
with_variable( 'step', --longeur que vous souhaitez 1000m ici 1000, with_variable( 'nb_step', length($geometry) // @step, collect_geometries( array_foreach( generate_series(0,@nb_step), line_interpolate_point(line_merge($geometry),@element*@step))) ) )
Hors ligne
#5 Tue 12 January 2021 21:34
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Merci pour cette information, j'étais persuadé que c'était toujours le premier point de la ligne qui servait de référence, même s'il n'est pas à l'écran. Ca ne serait donc pas le cas…
Merci pour le code générateur de géométrie, je n'ai pas testé encore mais je garde ça sous le coude pour le faire.
J'ai envoyé un message sur la liste qgis-user d'osgeo.org pour avoir des avis à ce sujet.
A suivre…
Hors ligne
#6 Mon 18 January 2021 14:36
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Sinon sans passer par le plugin vous pouvez quand même faire cela en utilisant le générateur de géométrie (en choisissant point/multipoint) et entrant cette formule :
Code:
with_variable( 'step', --longeur que vous souhaitez 1000m ici 1000, with_variable( 'nb_step', length($geometry) // @step, collect_geometries( array_foreach( generate_series(0,@nb_step), line_interpolate_point(line_merge($geometry),@element*@step))) ) )
Bonjour,
J'ai essayé via la génération de géométries, ça fonctionne bien pour générer les points et affecter un symbole. Cependant je n'arrive pas à tourner le symbole en fonction de l'orientation de la route (pour avoir le trait toujours à la perpendiculaire de la route par exemple).
Une fois le générateur de géométrie activé, le champ Rotation du symbole ne semble plus avoir d'effet.
Mince, je pensais m'en sortir "simplement" en dupliquant la formule et en passant par line_interpolate_angle mais c'est raté.
Une idée comment faire ?
Hors ligne
#7 Mon 18 January 2021 17:46
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
effectivement !
En générant plutôt une couche de polyligne avec un tout petit intervalle et passant ensuite par une couche de symbole il devrait pouvoir accès à l'angle de votre ligne :
Code:
with_variable( 'step', --longeur que vous souhaitez 1000m ici 1000, with_variable( 'nb_step', length($geometry) // @step, collect_geometries( array_foreach( generate_series(0,@nb_step), line_substring(line_merge($geometry),@element*@step,@element*@step+0.000001))) ) )
Hors ligne
#8 Mon 18 January 2021 17:53
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
J'ai envoyé un message sur la liste qgis-user d'osgeo.org pour avoir des avis à ce sujet.
Bonjour,
Vous risquez d'être renvoyé ici car la liste se veut ouverte pour toutes les questions concernant le fonctionnement du groupe QGIS-fr.
L'entraide technique c'est plutôt ici mais vous aurez peut-être des pistes intéressantes tout de même.
Hors ligne
#9 Fri 19 February 2021 10:17
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
J'avais écris sur la liste qgis-user et non qgis-fr-user donc pas de redirection sur GeoRezo
J'ai pu avoir la solution à mon problème via une réponse de Nyall Dawson.
Il suffit de décocher l'option "Découper les entités selon l'emprise", ainsi les lignes sont prises en compte dans leur ensemble pour le calcul des distances.
L'option se trouve au niveau des paramètres de symbologie de la couche. Après avoir cliqué sur la première ligne ("Ligne", celle qui résume les différents niveaux de symbologie paramétrés), il faut cliquer sur Avancé tout en bas puis décocher l'option.
Hors ligne
#10 Fri 19 February 2021 10:20
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
effectivement !
En générant plutôt une couche de polyligne avec un tout petit intervalle et passant ensuite par une couche de symbole il devrait pouvoir accès à l'angle de votre ligne :Code:
with_variable( 'step', --longeur que vous souhaitez 1000m ici 1000, with_variable( 'nb_step', length($geometry) // @step, collect_geometries( array_foreach( generate_series(0,@nb_step), line_substring(line_merge($geometry),@element*@step,@element*@step+0.000001))) ) )
Merci pour ce code, j'avais commencé à le tester mais du coup ça devient inutile pour ce cas d'usage, avec la connaissance de l'option de mon message précédent.
Intéressant tout de même pour commencer à jour avec la génération de géométries.
Hors ligne
#11 Fri 19 February 2021 11:09
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
Bonjour,
J'avais écris sur la liste qgis-user et non qgis-fr-user donc pas de redirection sur GeoRezo
J'ai pu avoir la solution à mon problème via une réponse de Nyall Dawson.
Il suffit de décocher l'option "Découper les entités selon l'emprise", ainsi les lignes sont prises en compte dans leur ensemble pour le calcul des distances.
L'option se trouve au niveau des paramètres de symbologie de la couche. Après avoir cliqué sur la première ligne ("Ligne", celle qui résume les différents niveaux de symbologie paramétrés), il faut cliquer sur Avancé tout en bas puis décocher l'option.
Fausse joie...
C'est ok en zoomant vers une plus grande échelle, les points ne se "déplacent" plus. Mais en dézoomant, j'ai toujours des décalages.
Voir https://www.zupimages.net/viewer.php?id=21/07/ehlo.gif
J'ai redemandé sur la liste et j'ai la solution : il ne faut pas que la simplification des entités soit activée, sinon la distance est calculée sur la base de l'entité simplifiée et du coup elle est forcément différentes par moment.
L'option se trouve dans les propriétés de la couche > Rendu > case à cocher "Simplifier la géométrie".
A savoir également : c'est une option activée par défaut mais il est possible de paramétrer si elle s'active pour les couches nouvellement ajoutées ou non. Pour ça il faut aller dans les Options de QGIS.
Menu Préférences > Options > Rendu > case à cocher "Activer la simplification des entités par défaut lors de l'ajout de nouvelles couches".
Dernière modification par p.jeremie (Fri 19 February 2021 13:47)
Hors ligne
#12 Sat 20 February 2021 11:25
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Ligne de symboles qui bougent selon l'echelle/dep
@p.jeremie
Un grand merci pour le retour et ces précieux détails
Hors ligne