Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Tue 24 December 2024 09:25

MirjanaEdzima1
Juste Inscrit !
Date d'inscription: 23 Dec 2024
Messages: 3

QGIS: Etiquettes Dynamiques

Bonjour à tous,

Je voudrais sur QGIS réaliser un sig web qui me permettrait de faire un affichage et désaffichage des noms de rues suivant un itinéraire. Je dispose de 2 couches une contenant des voies nommées et une autre contenant des itinéraires. J'ai essayé de suivre plusieurs tutoriels mais  je n'y arrive toujours pas. Ce que je souhaite en réalité c'est que lorsque je sélectionne un itinéraire par exemple, automatiquement les noms de rues se désaffiche ou s'affiche par exemple.

Merci d'avance à tous pour votre aide. Merci ^^

Dernière modification par MirjanaEdzima1 (Wed 25 December 2024 15:37)

Hors ligne

 

#2 Tue 24 December 2024 09:51

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3963

Re: QGIS: Etiquettes Dynamiques

Bonjour,
Étiquetez la couche avec l'expression

Code:

CASE WHEN not(is_selected()) THEN monchamp END

Hors ligne

 

#3 Wed 25 December 2024 16:12

MirjanaEdzima1
Juste Inscrit !
Date d'inscription: 23 Dec 2024
Messages: 3

Re: QGIS: Etiquettes Dynamiques

Santanana Merci pour votre retour.


J'ai une autre question concernant ce sujet.

Si un tronçon traverse plusieurs rue par exemple. Pensez-vous que je peux juste faire une jointure par localisation et les différents noms de rue s'afficheront ou il vaut mieux que je fasse des relations depuis mon SGBD?

Merci encore pour votre retour à tous.

^^

Hors ligne

 

#4 Thu 26 December 2024 12:55

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3963

Re: QGIS: Etiquettes Dynamiques

Bonjour,
Désolé je pense que je n'avais pas bien compris/lu votre premier message et notamment le fait que vous aviez deux couches. Ma réponse n'était peut-être pas appropriée à la demande. Et j'en comprends que ce que vous souhaitez, c'est si vous sélectionnez une entité de la couche "itineraire", les rues qui sont connectées devraient afficher leur nom (ou pas). Si c'est un truc du genre, je vous conseillerais de laisser tranquille votre SGBD ainsi que la jointure par localisation. Ce n'est que de la visualisation, pas la peine de s'encombrer de couches supplémentaires, QGIS sait gérer les relations entre couches dans ses expressions.

L'idée sera de créer pour chaque rue, la liste des tronçons d'itinéraire qu'elle touche, de vérifier si l'un d'eux est sélectionné et d'étiqueter en conséquence. Je vous invite à regarder la doc des fonctions utilisées pour mieux cerner les étapes.

Code:

with_variable(
  'itinerairesproches'
  overlay_nearest('coucheitineraire', @feature, limit:=-1, max_distance:=2) -- la liste de tous les itinéraires à moins de 2 unités de la rue.
  -- A vous d'adapter les paramètres, voire de tester si une autre fonction overlay_* ne serait pas plus adaptée à vos données.
  case
    when array_contains(array_foreach(@itinerairesproches, is_selected('coucherue', @element)), 'true') -- on vérifie si un des tronçons proches de la rue fait partie des entités sélectionnées
    then nomrue
  end
)

LE TRUC, c'est que cette solution marche en automatique si la coucheitineraire est aussi étiquetée. Vous pouvez juste activer l'étiquette sur la couche avec une taille de texte à 0, ça marche. Bug signalé à https://github.com/qgis/QGIS/issues/60016

Hors ligne

 

#5 Thu 26 December 2024 19:14

MirjanaEdzima1
Juste Inscrit !
Date d'inscription: 23 Dec 2024
Messages: 3

Re: QGIS: Etiquettes Dynamiques

Bonjour,

En partant de votre formule (elle ne fonctionnait pas correctement pour ce que je souhaitais faire, mais elle a été un point de départ pour ce que j'ai voulu réaliser).
En effet, le nom de la rue s'affichait dans la barre d'état de mon projet et non sur la carte. Je l'ai donc remodelée en utilisant ce code :

Code:

with_variable(
  'ItinerairesProchesVoie',
  overlay_contains('ITINERAIRE', $currentfeature),
  case
    when array_contains(
      array_foreach(@ItinerairesProchesVoie, is_selected('ITINERAIRE', @element)),
      true
    )
    then "NOM_MIN"
    else ''
  end
)

*VOIE est la couche qui contient les noms des rues.
*ITINERAIRE est la couche qui contient les différents itinéraires.
*NOM_MIN est le champ qui contient les noms des rues.

Effectivement, il faut que les deux couches soient étiquetées pour que cela fonctionne.

Je vous remercie pour votre aide ^^!!!

Hors ligne

 

#6 Hier 09:30

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3963

Re: QGIS: Etiquettes Dynamiques

Cool.

le nom de la rue s'affichait dans la barre d'état de mon projet et non sur la carte


sur la barre d'état? Je visualise même pas comment. Par contre, je vois qu'en essayant de réadapter le code à vos données d'entrée, je me suis mélangé les pinceaux et confondu des noms de couche. Votre code est très proche de celle mise dans le signalement de bug.
Quelques remarques/ajouts:
- Si vous êtes sur des versions récentes, préférez @feature à $currentfeature. Cette dernière est appelée à disparaître.
- la partie "else ''", vous pouvez vous en passer. c'est ce qui se fera par défaut.
- pour le déclencher, pas besoin d'étiqueter les deux couches. Sélectionnez la couche "ITINERAIRE" dans les propriétés de "Dépendances" de la couche VOIE. J'ai eu l'info sur le signalement de bug.

Je vous remercie pour votre aide ^^!!!


Je vous en prie.

Hors ligne

 

Pied de page des forums

Powered by FluxBB