Pages: 1
- Sujet précédent - QGIS: gestion des tables dans le composeur d'impression (atlas) - Sujet suivant
#1 Thu 20 May 2021 10:53
- Raf
- Participant occasionnel
- Date d'inscription: 25 Oct 2019
- Messages: 17
QGIS: gestion des tables dans le composeur d'impression (atlas)
Bonjour à tous!
Je travaille avec une base de donnée gpkg et j'aimerais sortir une série de document en utilisant l'outil Atlas.
Or, un des champs de la couche que je veux exploiter dans l'atlas est rempli par un jeu de case à cocher ce qui rempli le champs avec les clefs primaires de la table contenant la liste,
comme ceci {1,2,3...}
J'aimerais afficher ce champs dans l'atlas avec les valeurs correspondant à ces clefs primaires. Mais comme il s'agit d'une série de chiffre, cela complique la manoeuvre.
J'ai essayer avec les outils get_featured ou relation_agregates (peut être pas de la bonne façon), sans résultat.. Donc si quelqu'un a une idée de solution, cela m'aiderait grandement.
Merci d'avance!
Hors ligne
#2 Thu 20 May 2021 12:11
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Bonjour,
Pour passer d'une liste à du texte, essayez la fonction array_to_string
Hors ligne
#3 Thu 20 May 2021 14:35
- Raf
- Participant occasionnel
- Date d'inscription: 25 Oct 2019
- Messages: 17
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Bonjour, merci pour votre réponse.
Effectivement je n'y avais pas pensé.. Je vais tenter. Mais a la rigueur, les crochets {} ne sont pas un problème. Ce qui pose problème c'est de pouvoir récupérer l'ensemble des clefs primaire de la table liée et les valeurs qui y sont associées
Hors ligne
#4 Thu 20 May 2021 14:48
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Bonjour,
Avez-vous tenter d'utiliser une condition "CASE...WHEN" sur votre champ de la table attributaire :
Code:
CASE WHEN "monchamp"='1' THEN 'valeur1' CASE WHEN "monchamp"='2' THEN 'valeur2' ... END
Hors ligne
#5 Thu 20 May 2021 15:06
- Raf
- Participant occasionnel
- Date d'inscription: 25 Oct 2019
- Messages: 17
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
C'est une méthode assez empirique, mais effectivement, à terme, si ca se complique ca peut devenir une solution de secours.
Merci en tout cas
Hors ligne
#6 Thu 20 May 2021 15:07
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Ce qui pose problème c'est de pouvoir récupérer l'ensemble des clefs primaire de la table liée et les valeurs qui y sont associées
Ahh... désolé, je pensais que vous souhaitiez afficher les valeurs du champ.
Si j'ai bien compris, vous voulez les valeurs correspondant à ces clés dans votre liste. Cette liste, c'est issue d'une autre couche ou c'est une liste faite dans l'onglet formulaire d'attribut?
Si cas 1, il vous faudrait peut-être regarder du côté d'un array_foreach sur le champ de l'atlas, et passer un attribute(get_feature_by_id à @element)...
Si cas 2, je sais pas, faudra peut-être partager le projet type, pour test.
Hors ligne
#7 Thu 20 May 2021 15:15
- Raf
- Participant occasionnel
- Date d'inscription: 25 Oct 2019
- Messages: 17
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
En fait c'est une des solutions que QGIS propose dans le cas de cardinalité 0;N - 1;N. Au lieu de passer par une table intermédiaire, il stocke toutes les clefs primaires de la table enfant dans un des champs de la table parent. Du coup dans mon composeur d'impression, quand je lui demande d'afficher le champs contenant ces clefs primaires, il y a une suite de chiffre. Ce que je voudrais, c'est remplacer chacun de ces chiffres par la valeur correspondante dans la table enfant.
Hors ligne
#8 Thu 20 May 2021 15:51
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
L'exemple 3 de https://docs.qgis.org/3.16/fr/docs/user … -aggregate ne fait pas l'affaire?
Hors ligne
#9 Thu 20 May 2021 15:55
- Raf
- Participant occasionnel
- Date d'inscription: 25 Oct 2019
- Messages: 17
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Non, ca ne fonctionne que dans le cas d'une relation 0;1 - 0;N. Là mon champ contient plusieurs clefs primaires donc il considère que la clefs primaire à chercher est {1, 2, 3} et forcément il va pas trouver grand chose
Hors ligne
#10 Thu 20 May 2021 16:34
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS: gestion des tables dans le composeur d'impression (atlas)
Là mon champ contient plusieurs clefs primaires donc il considère que la clefs primaire à chercher est {1, 2, 3} et forcément il va pas trouver grand chose
La suggestion de array_for each, qui va éclater la liste en autant d'éléments et sur ces éléments vous appliquez une fonction qui va chercher dans la table enfant la valeur correspondant au chiffre ne marche pas? Ces chiffres sont des id de la couche enfant, non?
Hors ligne
Pages: 1
- Sujet précédent - QGIS: gestion des tables dans le composeur d'impression (atlas) - Sujet suivant