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

Printemps des cartes 2024

#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

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: QGIS : Gérer les étiquettes d'un ATLAS

CEDRIC SIG a écrit:

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: 3812

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: 3812

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: 3812

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

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: QGIS : Gérer les étiquettes d'un ATLAS

Razorbak a écrit:

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 smile . 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

 

Pied de page des forums

Powered by FluxBB