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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 23 October 2020 09:23

Juliette D
Participant occasionnel
Date d'inscription: 12 Dec 2013
Messages: 13

QGIS Atlas: filtrer une table a chaque page

Bonjour,
Je parcours depuis quelques jours la documentation QGIS et les forums pour trouver une solution à ma question. Je me résous à poster ici en espérant que le sujet n’a pas déjà été traité.

J’aimerais exploiter la partie Atlas de la mise en page de QGIS pour générer une table de donnée spécifique à chaque page de mon atlas. Je travaille avec une base Spatialite sous QGIS 3.10.

Pour expliciter :
Je dispose d’une table « TYPE_CARTE » qui indique le nom de chaque type de carte. C’est la table que j’utilise pour générer mon atlas.

Je dispose d’une autre table « LISTE_DONNEE » qui contient une liste de données. Pour chaque donnée il est possible de savoir si elle est présente ou non dans un type de carte (colonne pour chaque type de carte).

Dans la partie Mise en page de QGIS, je n’ai pas de difficulté particulière pour générer l’atlas, avec une page par type de carte. Dans mon exemple je génère bien 3 pages (type A, B et C).

C’est pour ajouter le tableau de données que cela se gâte.
J’utilise le menu Ajouter un objet > Ajouter Table d’attribut et j’ajoute ma table « LISTE_DONNEE ».
Dans les propriétés de l’objet table d’attribut il est possible d’ajouter un filtre.

Dans cet exemple je peux ajouter un filtre pour indiquer que je ne veux QUE les données présentent sur le typeB.
Tout mon problème est que ce filtre est "statique" et que j'aimerais qu'il change à chaque page (pour la page TypeA >> TypeA='oui', pour la page TypeB >> TypeB = 'oui' etc.)

Je précise avoir essayé de chercher du côté des variables de qgis mais je n’ai réussi qu’à définir des variables statiques.
J’ai également déjà essayé de modifier la requête en appelant le nom_type : [% "nom_type" %] = 'oui'
J'imagine que je pourrais également créer des vues dans ma base spatialite, mais je ne sais pas comment appeler une vue différente pour chaque page de l’atlas.

Je vous remercie d’avance pour toutes vos bonnes idées à ce sujet !!!


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

Hors ligne

 

#2 Mon 26 October 2020 12:09

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

Re: QGIS Atlas: filtrer une table a chaque page

Bonjour,
En mode aveugle car pas testé sur des données, mais inspiré de cette note de la doc, essayez (les guillemets double sont de rigueur)

Code:

attribute(@atlas_feature , "nom_type")='oui'

Quoique, à la réflexion, je crains que ce soit incomplet. Il va y avoir un couac de formatage. Pourriez-vous partager un bout de projet et data? Merci
ou

Code:

attribute(attribute(@atlas_feature , 'nom_type'))='oui'

Hors ligne

 

#3 Mon 26 October 2020 21:34

Juliette D
Participant occasionnel
Date d'inscription: 12 Dec 2013
Messages: 13

Re: QGIS Atlas: filtrer une table a chaque page

Bonjour

Merci mille fois !

La deuxième proposition fonctionne parfaitement : attribute(attribute(@atlas_feature , 'nom_type'))='oui'

Grâce à la documentation je comprends un tout petit peu mieux.
J'avoue que le double attribute reste un peu un mystère pour moi.

Pourquoi est-il nécessaire d'appeler "attribute(attribute"  ?

Si j'ai un bon raisonnement, le double attribute vient du fait que je souhaite transformer une variable de mon premier jeu de donnée "nom_type" en attribut pour le deuxième tableau. Mais je ne suis pas sur...

Souhaitez vous toujours mes données ?

Dans tous les cas cela me permet d'avancer, encore merci !

Juliette D.

Hors ligne

 

#4 Tue 27 October 2020 09:44

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

Re: QGIS Atlas: filtrer une table a chaque page

Bonjour,

Pourquoi est-il nécessaire d'appeler "attribute(attribute"  ?
Si j'ai un bon raisonnement, le double attribute vient du fait que je souhaite transformer une variable de mon premier jeu de donnée "nom_type" en attribut pour le deuxième tableau. Mais je ne suis pas sur...


Oui, c'est à peu près cela, on fait une transposition dans laquelle la valeur attributaire de l'atlas devient le champ à évaluer dans la table en cours: le attribute au centre renvoie la valeur 'typeA', 'typeB', typeC' de l'atlas et on réutilise cette valeur comme champ dans la table csv pour renvoyer 'oui' ou 'non'.

Souhaitez vous toujours mes données ?


Non, c'était pour m'éviter d'en monter moi-même pour chercher une solution mais comme elle est déjà trouvée, pas besoin

Dans tous les cas cela me permet d'avancer, encore merci !


De rien. Bon courage!

Hors ligne

 

Pied de page des forums

Powered by FluxBB