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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB