#1 Wed 04 November 2015 17:57
- CEDRIC SIG
- Juste Inscrit !
- Date d'inscription: 4 Nov 2015
- Messages: 2
QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
Je souhaite réaliser un Atlas cartographique : Pour chaque bassin versant de la région PACA- une carte des cours d'eau .
Sur chacune de ces cartes, je veux afficher le nom des cours d'eau du bassin versant et ne pas avoir les nom des cours d'eau des bassins versant voisins.
J'ai donc rentrer la condition suivante dans l'affichage de mes étiquettes :
CASE WHEN attribute($currentfeature, "Bassin_Versant" ) =attribute($atlasfeature, "Bassin_Versant" ) THEN "nom_cours_deau" END
Le but étant d'afficher "nom_cours_deau" pour les cours d'eau qui ont la même valeur "Bassin_Versant" que celle du bassin versant de l'atlas.
QGIS valide bien cette fonction mais aucune étiquette ne s'affiche sur mes cartes.
Pourquoi ma condition ne fonctionne pas ?
Merci
Hors ligne
#2 Wed 04 November 2015 20:03
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
Je souhaite réaliser un Atlas cartographique : Pour chaque bassin versant de la région PACA- une carte des cours d'eau .
Sur chacune de ces cartes, je veux afficher le nom des cours d'eau du bassin versant et ne pas avoir les nom des cours d'eau des bassins versant voisins.
J'ai donc rentrer la condition suivante dans l'affichage de mes étiquettes :
CASE WHEN attribute($currentfeature, "Bassin_Versant" ) =attribute($atlasfeature, "Bassin_Versant" ) THEN "nom_cours_deau" END
Le but étant d'afficher "nom_cours_deau" pour les cours d'eau qui ont la même valeur "Bassin_Versant" que celle du bassin versant de l'atlas.
QGIS valide bien cette fonction mais aucune étiquette ne s'affiche sur mes cartes.
Pourquoi ma condition ne fonctionne pas ?
Merci
Je n'utilise pas cette expression.. donc pas de réponse sur l'erreur potentielle, pour la bonne raison que l'agence de l'eau Adour Garonne a développé et financé un plugin pour ce besoin exact. Il s'agit du plugin Mask.
L'idée est lorsqu'un masque est défini, les étiquettes sont filtrables par opérateurs spatiaux (sans avoir de code à taper, une interface avec des cases à cocher est disponible), et que ce masque est réutilisé par l'Atlas pour générer des masques à chaque objet de l'atlas.
Je vous laisse voir la vidéo de démonstration:
https://www.youtube.com/watch?v=u29yGSQhX2g
et le manuel ici: https://github.com/aeag/mask/wiki
Pour le cas de cours d'eau plus grand que le bassin versant, il se peut que l'étiquette soit positionnée en dehors du bv, pas de solution pour cela pour l'instant sauf à couper les cours d'eau aux frontières de ces BV.
Bonne soirée
Hors ligne
#3 Thu 05 November 2015 10:34
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3933
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
QGIS valide bien cette fonction mais aucune étiquette ne s'affiche sur mes cartes.
Peut-être parce qu'il y a un double guillemet autour de Bassin_Versant et non un simple (voir l'aide de la fonction).
Hors ligne
#4 Thu 05 November 2015 15:02
- gussoner
- Participant actif
- Date d'inscription: 29 Jan 2006
- Messages: 128
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
pour compléter la réponse de Santanna, voici un filtre qui fonctionne
Code:
CASE WHEN attribute($atlasfeature, 'Bassin_Versant' ) =attribute($currentfeature, 'Bassin_Versant' ) THEN TRUE END
Hors ligne
#5 Thu 05 November 2015 16:03
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3933
Re: QGIS : Gérer les étiquettes d'un ATLAS
Gussoner, ta requête permet de filtrer les entités mais ne traite pas la question de l'étiquette à afficher, il me semble.
Hors ligne
#6 Thu 05 November 2015 16:43
- Hydrolithe
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Apr 2010
- Messages: 223
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
Il me semble qu'il faut renseigner la requête proposée par gussoner dans l'onglet "Rendu" -> "Afficher l'étiquette" -> Editer.
Hors ligne
#7 Thu 05 November 2015 16:58
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3933
Re: QGIS : Gérer les étiquettes d'un ATLAS
Effectivement! Placée là, cette formule (avec la simple sélection du champ à étiqueter) devrait renvoyer la même chose que celle de Cédric (corrigée) mise dans "étiqueter cette couche avec".
Merci de la précision, Hydrolithe.
Hors ligne
#8 Wed 18 November 2015 15:31
- Razorbak
- Participant assidu
- Lieu: Clermont Ferrand
- Date d'inscription: 7 Oct 2007
- Messages: 505
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour Régis,
Juste une petite question : imaginons que l'atlas doit représenter chaque sous bassin individuellement et que l'on a plusieurs à représenter. Par exemple, si on a 4 sous bassins, l'idée est donc d'avoir une carte par sous bassin dans le même atlas qui fera 4 pages.
Est-ce qu'il est obligatoire de créer un masque par sous bassin pour que cela fonctionne ?
Ou comment faire pour créer un masque par sous bassin et créer l'atlas automatiquement ?
En effet, j'ai créé un masque mais en regardant l'aperçu de l'atlas, le masque ne porte que sur un seul sous bassin (seulement celui sur lequel j'ai créé le masque). Je n'arrive pas à faire en sorte que ce type de masque s'applique à tous mes sous bassins concernés.
En regardant la vidéo, j'ai l'impression que le masque se crée pour chaque département (juste en imitant le style...).
Je reste à disposition s'il faut préciser la demande.
Merci et bonne journée
Dernière modification par Razorbak (Wed 18 November 2015 15:49)
Hors ligne
#9 Wed 18 November 2015 15:51
- CEDRIC SIG
- Juste Inscrit !
- Date d'inscription: 4 Nov 2015
- Messages: 2
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour,
J'ai essayé d'utiliser le plugin Mask dont tu parles haubourg.
Mais lorsque je génère l'Atlas, le masque reste sur le bassin versant que j'ai sélectionné. Il ne va pas d'un bassin versant à l'autre.
J'ai pourtant désélectionné toute les entités
Hors ligne
#10 Wed 18 November 2015 21:08
Re: QGIS : Gérer les étiquettes d'un ATLAS
Bonjour Régis,
Juste une petite question : imaginons que l'atlas doit représenter chaque sous bassin individuellement et que l'on a plusieurs à représenter. Par exemple, si on a 4 sous bassins, l'idée est donc d'avoir une carte par sous bassin dans le même atlas qui fera 4 pages.
Bonsoir,
le plugin mask est fait pour s'économiser . Il faut un mask courant dans le canevas uniquement. Attention, dans la version actuelle, il ne faut pas renommer cette couche, sinon on perd les fonctions magiques pour l'Atlas et le filtre d'étiquetage. Un correctif est en cours.
En regardant la vidéo, j'ai l'impression que le masque se crée pour chaque département (juste en imitant le style...).
Le contour du masque courant dans la vidéo importe peu, ce pourrait être un carré, une commune ou un bassin (un polygone quoi). Lorsqu'un Atlas est activé, le plugin va capter cet événement puis en profiter pour créer une couche temporaire de masque, et désactiver la couche de masque d'origine. Cette couche temporaire est "peuplée" avec la géométrie de l'objet courant de l'Atlas.
Dans la vidéo, j'ai demandé un Atlas qu'il itère sur la couche de département, c'est donc la géométrie de ces départements qui sera utilisée.
Dans ton cas, vérifie bien que l'Atlas est bien configuré pour utiliser ta couche de sous bassins.
A la désactivation de la prévisualisation de l'atlas, la couche temporaire va disparaitre..
Les limites sont:
- une seule couche de masque "active", à créer impérativement avec le plugin.
- ne pas renommer la couche de masque en autre chose que MASK si on veut garder ces fonctionnalités
- si on verrouille la liste des couches dans le composeur, la couche temporaire ne s'affichera pas.. un correctif est en cours.
- si on sauve le projet, la couche de masque ne sera sauvegardée que si le plugin Memory Layer saver est actif.
Bonne soirée
Régis
Hors ligne