#1 Fri 08 May 2020 08:42
- GOLDOSAM
- Participant actif
- Date d'inscription: 7 Jul 2017
- Messages: 54
QGIS: Atlas en masse ou publipostage
Bonjour,
Pourriez-vous me dire s'il est possible de faire des Atlas en masse ?
Comme un publipostage, car je dois faire un rapport en me servant de la mise en page de l'Atlas pour plusieurs communes différentes.
Merci pour votre réponse.
Hors ligne
#2 Fri 08 May 2020 22:44
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: QGIS: Atlas en masse ou publipostage
Bonjour.
J'ai peut-être du mal à comprendre, mais vous souhaitez réaliser automatiquement plusieurs pages d'un atlas qui garderont la même mise en page pour plusieurs communes ?
Si c'est le cas, dans le composeur :
- Aller dans le menu "Atlas" puis "Propriété de l'atlas".
- Dans l'onglet "Atlas" qui apparaît à gauche, cocher "Générer un atlas" puis choisir la couche des communes dans "Couche de couverture". Choisir le champ correspondant pour le "Nom de la page" et "Ordonner par" le champ qui vous convient. On peut choisir de cacher la couche de couverture si on ne souhaite pas qu'elle apparaisse.
- Aller dans les propriétés de la carte puis cocher "Contrôlé par Atlas" pour centrer la carte sur l'entité de la première page de l'atlas (par exemple, la première commune de la couche de couverture).
- Pour les textes au sein de la carte (titre par exemple), aller dans leur propriété et cliquer sur "Insérer une expression". Dans la fenêtre qui s'affiche, choisir "Champs et Valeurs" dans la liste au centre et double-cliquer sur le champ correspondant au nom de la commune (ou autre champ) pour l'ajouter au sein du texte. Pour exemple, ce champ changera le nom de la commune dans le texte pour chaque page.
- Aller dans le menu "Atlas" puis "Aperçu de l'atlas" pour pouvoir naviguer entre les pages au sein du composeur (les flèches bleues "Entité précédente" et "Entité suivante"s'activent).
- Une fois satisfait du résultat, aller dans le menu "Atlas" et sélectionner "Exporter l'atlas en..." pour générer l'atlas selon le format souhaité.
Si vous avez déjà un atlas de plusieurs pages sur une seule commune et que vous souhaitez en produire automatiquement pour les autres communes,
plusieurs options sont possibles :
- Dans le gestionnaire de mises en page, vous pouvez dupliquer celle contenant l'atlas pour adapter ensuite à chaque commune l'une après l'autre. Cette solution a juste l'avantage de conserver les mises en page en mémoire pour chaque commune dans le projet, à faire si peu de communes à produire.
- Seconde possibilité, vous pouvez aussi utiliser l'option "Filtrer avec" dans les propriétés de l'atlas pour générer automatiquement un atlas correspondant à la commune nécessaire (si votre couche de couverture contient l'ensemble des communes étudiées).
- Troisième possibilité, s'il y a un très grand nombre de communes à réaliser, et pour une vraie publication en masse de plusieurs atlas, il est peut-être possible d'écrire un script Python qui générerait les atlas les uns après les autres en modifiant la valeur de l'option "Filtrer avec" des propriétés de l'atlas.
En espérant avoir couvert plusieurs possibilités pour l'instant. Je suis également tombé sur ce tutoriel qui peut aider, notamment pour ne montrer que les entités voulues sur une page d'un atlas : http://www.qgistutorials.com/fr/docs/au … ation.html
Cordialement.
Hors ligne
#3 Sat 09 May 2020 10:46
- GOLDOSAM
- Participant actif
- Date d'inscription: 7 Jul 2017
- Messages: 54
Re: QGIS: Atlas en masse ou publipostage
Bonjour et merci d'avoir prit votre temps pour me répondre.
En espérant que vous allez bien par ces temps......
Voilà je vous ai mis en pièce-jointe un petit résumé du rapport que je dois faire et remplir avec un BdD Oracle que je viens mettre dans la couche de QGIS. Ce rapport concerne 300 communes et doit contenir ma BdD où se trouve les tags [VIL_NOM] dans le document par exemple.
Explicatif du document :
Page de présentation : Remplacer l'attribut [VIL_NOM]
Page 1 : Il faudrait une table des matières qui se met à jour en fonction du nombre de page.
Page 2 : Remplir les attributs entre [] qui sont en lien avec la commune du rapport en question.
Page 3 : Mettre la carte de la commune du rapport.
Page 4 : Mettre un tableau dont le nombre de ligne dépend du nombre de PEI de la commune c'est pour cela que la table des matières peut varier.
Voilà une vaste présentation de mon projet.
J'ai en ma possession la BdD Oracle, RASTER etc....
Mo rapport est terminé au niveau de l'atlas, j'aimerais savoir comment je peux mettre un plan en fonction de la commune du rapport et comment faire une table des matières ainsi qu'un tableau qui varie en fonction du nombre de PEI de la commune.
Pour rappel, ma BdD Oracle ce comporta ainsi :
VIL_NOM NATURE CARAC LOCALISATION NUM
ALLAUCH PI PRIVE 7 RUE DU PONT 454-01
ALLAUCH BI PRIVE 5 RUE DU PIED 454-02
BREST PI PUBLIC 6 RUE CROIX 565-01
BREST BI PRIVE 7 RUE ANDRE 565-02
ALES PI PUBLIC 8 RUE ANDRE 600-01
Merci pour votre aide, je n'ai pas encore regarder votre lien à cet instant mais je vais le faire de suite.
Bonne journée à vous,
Bonjour.
J'ai peut-être du mal à comprendre, mais vous souhaitez réaliser automatiquement plusieurs pages d'un atlas qui garderont la même mise en page pour plusieurs communes ?
Si c'est le cas, dans le composeur :
- Aller dans le menu "Atlas" puis "Propriété de l'atlas".
- Dans l'onglet "Atlas" qui apparaît à gauche, cocher "Générer un atlas" puis choisir la couche des communes dans "Couche de couverture". Choisir le champ correspondant pour le "Nom de la page" et "Ordonner par" le champ qui vous convient. On peut choisir de cacher la couche de couverture si on ne souhaite pas qu'elle apparaisse.
- Aller dans les propriétés de la carte puis cocher "Contrôlé par Atlas" pour centrer la carte sur l'entité de la première page de l'atlas (par exemple, la première commune de la couche de couverture).
- Pour les textes au sein de la carte (titre par exemple), aller dans leur propriété et cliquer sur "Insérer une expression". Dans la fenêtre qui s'affiche, choisir "Champs et Valeurs" dans la liste au centre et double-cliquer sur le champ correspondant au nom de la commune (ou autre champ) pour l'ajouter au sein du texte. Pour exemple, ce champ changera le nom de la commune dans le texte pour chaque page.
- Aller dans le menu "Atlas" puis "Aperçu de l'atlas" pour pouvoir naviguer entre les pages au sein du composeur (les flèches bleues "Entité précédente" et "Entité suivante"s'activent).
- Une fois satisfait du résultat, aller dans le menu "Atlas" et sélectionner "Exporter l'atlas en..." pour générer l'atlas selon le format souhaité.
Si vous avez déjà un atlas de plusieurs pages sur une seule commune et que vous souhaitez en produire automatiquement pour les autres communes,
plusieurs options sont possibles :
- Dans le gestionnaire de mises en page, vous pouvez dupliquer celle contenant l'atlas pour adapter ensuite à chaque commune l'une après l'autre. Cette solution a juste l'avantage de conserver les mises en page en mémoire pour chaque commune dans le projet, à faire si peu de communes à produire.
- Seconde possibilité, vous pouvez aussi utiliser l'option "Filtrer avec" dans les propriétés de l'atlas pour générer automatiquement un atlas correspondant à la commune nécessaire (si votre couche de couverture contient l'ensemble des communes étudiées).
- Troisième possibilité, s'il y a un très grand nombre de communes à réaliser, et pour une vraie publication en masse de plusieurs atlas, il est peut-être possible d'écrire un script Python qui générerait les atlas les uns après les autres en modifiant la valeur de l'option "Filtrer avec" des propriétés de l'atlas.
En espérant avoir couvert plusieurs possibilités pour l'instant. Je suis également tombé sur ce tutoriel qui peut aider, notamment pour ne montrer que les entités voulues sur une page d'un atlas : http://www.qgistutorials.com/fr/docs/au … ation.html
Cordialement.
Dernière modification par GOLDOSAM (Sat 09 May 2020 11:49)
Hors ligne
#4 Tue 12 May 2020 23:43
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: QGIS: Atlas en masse ou publipostage
Bonjour.
Merci pour ces informations supplémentaires.
Pour réaliser vos atlas par commune, je pense qu'il faudrait que vous réalisiez une couche de couverture de 300 lignes représentant chacune une commune avec ses attributs de la page 2.
Ensuite, les pages peuvent se compléter comme suit :
- Page de présentation : Utiliser l'attribut [VIL_NOM] contenu dans la couche de couverture. Il faut "Insérer une expression" dans le texte, aller dans "Champs et Valeurs" et sélectionner le nom du champ correspondant.
- Page 1 : Réalisez votre table des matières en ajoutant un bloc de texte et en y indiquant directement les numéros de page. Il semble dans votre projet que seule la dernière rubrique du tableau peut avoir un nombre de pages différent. Pour que le nombre de page maximum soit pris en compte automatiquement selon le nombre de pages occupé par le tableau, allez dans "Insérer une expression", puis "Variables" et choisissez "layout_numpages". Encloisonnez-le dans une fonction "to_string" issu de la catégorie "Chaîne de caractères".
Exemple pour un rapport de 5 pages : 'Tableau...........................4-'+to_string(@layout_numpages ) -> Tableau........................4-5
- Page 2 : Si vous avez réussi à intégrer dans votre couche de couverture les données correspondantes à chaque ville, vous pourrez ajouter au texte la valeur correspondante à la commune pour chaque champ. Même procédé que pour la page de présentation sur ce point. Si vous devez plutôt utiliser la BDD Oracle pour cette page, peut-être y-a-t-il un moyen de filtrer avec la commune, je n'ai pas encore exploré cette solution pour le moment.
- Page 3 : Comme indiqué dans mon message précédent, il faut aller dans les propriétés de la carte et cocher la rubrique "Contrôlé par Atlas" pour centrer le plan directement sur la commune concernée.
- Page 4 : Si chaque PEI dispose d'un même champ [VIL_NOM] en commun avec la couche de couverture, vous pouvez ajouter le tableau tout en choisissant pour la Source : "Current atlas feature" (première propriété principale de votre table). Normalement, vous filtrerez pour n'afficher automatiquement que les PEI de votre commune.
Dans le cas où les lignes s'étendent au-delà de la première page, allez dans la section "Cadres" des propriétés du tableau. Sélectionnez-y l'option "Étendre à la page suivante" dans le Mode de redimensionnement. Les pages s'ajouteront automatiquement si le tableau dépasse de la page 4. Le seul problème que je trouve avec cette méthode, c'est que le positionnement du tableau sur les pages suivantes demeure collé aux bords supérieurs et inférieurs de la page. Je n'ai pas encore trouvé comment faire respecter les marges avec cette méthode pour le moment.
En espérant avoir ajouté quelques solutions possibles pour s'approcher de votre projet de rapport.
Si d'autres membres savent comment ajouter des valeurs dans un texte en fonction d'une sélection par attribut (page 2), ou comment faire respecter les marges sur les pages suivantes d'un tableau (page 4), merci d'avance pour votre contribution.
Cordialement.
Dernière modification par FloSnow (Tue 12 May 2020 23:46)
Hors ligne
#5 Thu 14 May 2020 13:53
- GOLDOSAM
- Participant actif
- Date d'inscription: 7 Jul 2017
- Messages: 54
Re: QGIS: Atlas en masse ou publipostage
Bonjour et merci pour votre travail,
Mon 1er problème vient que dans ma couche je déclare deux BdD.
Une avec la liste des communes uniques sans redondance ce qui me permet de l'utiliser dans l'atlas.
La 2ème est la liste de toutes mes valeurs dont j'ai besoin pour faire certains paragraphes comme en page 2 ou pour faire mes tableaux.
-> Mon problème étant que je ne retrouve pas mes champs ou attributs de la 2ème BdD, de ce fait je ne peux continuer.
Ma question est, comment je peux remonter tous les champs manquants ?
Ensuite, comment je fais pour automatiser la hauteur de mes tableaux quand ceux-ci on 50 lignes de valeur?
Merci beaucoup pour votre aide !
Bonjour.
Merci pour ces informations supplémentaires.
Pour réaliser vos atlas par commune, je pense qu'il faudrait que vous réalisiez une couche de couverture de 300 lignes représentant chacune une commune avec ses attributs de la page 2.
Ensuite, les pages peuvent se compléter comme suit :
- Page de présentation : Utiliser l'attribut [VIL_NOM] contenu dans la couche de couverture. Il faut "Insérer une expression" dans le texte, aller dans "Champs et Valeurs" et sélectionner le nom du champ correspondant.
- Page 1 : Réalisez votre table des matières en ajoutant un bloc de texte et en y indiquant directement les numéros de page. Il semble dans votre projet que seule la dernière rubrique du tableau peut avoir un nombre de pages différent. Pour que le nombre de page maximum soit pris en compte automatiquement selon le nombre de pages occupé par le tableau, allez dans "Insérer une expression", puis "Variables" et choisissez "layout_numpages". Encloisonnez-le dans une fonction "to_string" issu de la catégorie "Chaîne de caractères".
Exemple pour un rapport de 5 pages : 'Tableau...........................4-'+to_string(@layout_numpages ) -> Tableau........................4-5
- Page 2 : Si vous avez réussi à intégrer dans votre couche de couverture les données correspondantes à chaque ville, vous pourrez ajouter au texte la valeur correspondante à la commune pour chaque champ. Même procédé que pour la page de présentation sur ce point. Si vous devez plutôt utiliser la BDD Oracle pour cette page, peut-être y-a-t-il un moyen de filtrer avec la commune, je n'ai pas encore exploré cette solution pour le moment.
- Page 3 : Comme indiqué dans mon message précédent, il faut aller dans les propriétés de la carte et cocher la rubrique "Contrôlé par Atlas" pour centrer le plan directement sur la commune concernée.
- Page 4 : Si chaque PEI dispose d'un même champ [VIL_NOM] en commun avec la couche de couverture, vous pouvez ajouter le tableau tout en choisissant pour la Source : "Current atlas feature" (première propriété principale de votre table). Normalement, vous filtrerez pour n'afficher automatiquement que les PEI de votre commune.
Dans le cas où les lignes s'étendent au-delà de la première page, allez dans la section "Cadres" des propriétés du tableau. Sélectionnez-y l'option "Étendre à la page suivante" dans le Mode de redimensionnement. Les pages s'ajouteront automatiquement si le tableau dépasse de la page 4. Le seul problème que je trouve avec cette méthode, c'est que le positionnement du tableau sur les pages suivantes demeure collé aux bords supérieurs et inférieurs de la page. Je n'ai pas encore trouvé comment faire respecter les marges avec cette méthode pour le moment.
En espérant avoir ajouté quelques solutions possibles pour s'approcher de votre projet de rapport.
Si d'autres membres savent comment ajouter des valeurs dans un texte en fonction d'une sélection par attribut (page 2), ou comment faire respecter les marges sur les pages suivantes d'un tableau (page 4), merci d'avance pour votre contribution.
Cordialement.
Hors ligne
#6 Thu 21 May 2020 23:05
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: QGIS: Atlas en masse ou publipostage
Bonjour.
Pour remonter tous les champs manquants dans la page 2 et la page 4, il faudrait au moins un champ en commun entre vos villes (1ère liste, celle de l'atlas) et vos PEI (2nde liste, celle des valeurs). Par exemple, un champ "VIL_NOM", cette correspondance devrait être similaire à une jointure attributaire.
Page 2 : Au sein d'un texte, il est possible d'afficher automatiquement les valeurs de vos PEI en fonction de la commune de l'atlas. Insérez une expression qui correspondrait à celle-ci :
Code:
attribute(get_feature('id de la couche PEI', 'champ en commun [VIL_NOM]', "valeur actuelle de l'atlas"), 'champ à afficher'))
Soit, pour exemple :
attribute(get_feature('couchePEI_48138dsq_ddz475', 'VIL_NOM', "VIL_NOM"), 'POPULATION_PEI'))
- "attribute" se trouve dans la catégorie "Enregistrement et attributs".
- "get_feature"se trouve également dans la catégorie "Enregistrement et attributs".
- Vous trouverez l'id de la couche PEI dans la catégorie "Couches", choisissez celle qui correspond.
- Insérez en toutes lettres le nom du champ en commun entre guillemets simples, l'auto-complétion devrait être active.
- Pour être sûr, choisissez la valeur actuelle de l'atlas dans la catégorie "Champs et Valeurs" et choisissez le nom du champ correspondant. Ce dernier sera entre des double-guillemets et s'affichera en jaune dans l'éditeur. Cela signifie qu'il récupérera la valeur actuelle du champ de la couche de couverture.
- Insérez en toutes lettres le nom du champ à afficher du PEI entre guillemets simples.
Page 4 : Tout d'abord allez dans les propriétés principales du tableau puis choisissez "Entités de la couche" comme source et sélectionnez la couche des PEI dans l'onglet juste en-dessous.
Si les PEI sont toujours intégralement contenus dans la commune actuelle, vous pouvez aller dans les propriétés du tableau, dans le volet "Filtrage des entités", puis cochez l'option "Ne montrer que les entités intersectant l'entité atlas".
Sinon, utilisez l'option "Filtrer avec" juste en-dessous et insérez une expression :
Code:
"valeur du champ de la ligne" = attribute( @atlas_feature , 'champ correspondant de la couche de l'atlas')
Soit :
"VIL_NOM" = attribute(@atlas_feature, 'VIL_NOM')
- "@atlas_feature" se trouve dans la catégorie "Variables".
/!\ Cette fois, la catégorie "Champs et valeurs" concernera la couche des PEI du tableau et non celle de l'atlas. C'est pour cela que le "VIL_NOM" en double-guillemets en jaune correspondra à la couche des PEI.
/!\ Il y a parfois des problèmes d'actualisation du tableau quand on modifie le filtre. Supprimez-le et recommencez si ça arrive.
Avec ces méthodes, les pages 2 et 4 devraient pouvoir s'automatiser en fonction de l'entité actuelle de l'atlas.
Je n'ai pas très bien compris la seconde question sur la hauteur des tableaux lorsque ceux-ci ont 50 lignes de valeur. Voulez-vous parler de la hauteur de ligne ? Si c'est le cas, vous pouvez modifier celle-ci en allant dans le volet "Apparence" puis modifiez les marges de cellule.
Cordialement.
Dernière modification par FloSnow (Thu 21 May 2020 23:18)
Hors ligne
#7 Fri 22 May 2020 09:50
- GOLDOSAM
- Participant actif
- Date d'inscription: 7 Jul 2017
- Messages: 54
Re: QGIS: Atlas en masse ou publipostage
Bonjour et merci à vous de suivre le sujet,
Voilà mon projet commence à se finaliser grâce à votre aide.
Il me reste donc un problème, celui des tableaux dynamiques, comme je vous l'ai dit dans le post avant mais mal exprimé.
J'ai un 1er tableau d'attribut qui se remplit dynamiquement en fonction de la commune et du nombre de PEI de la commune.
Et certaines communes peuvent avoir 10 PEI ou 200 PEI, ce qui entraîne un tableau qui peut aller sur plusieurs pages et décaler le contenu en dessous.
Je ne sais pas comment faire cela ?
Merci pour votre aide précieuse,
Sam.
Hors ligne
#8 Tue 26 May 2020 18:49
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: QGIS: Atlas en masse ou publipostage
Bonjour.
Si je comprends bien, vous ne souhaitez pas que la hauteur variable du tableau en fonction du nombre de PEI puisse décaler le contenu situé en-dessous.
Je n'ai pas trouvé de manière de changer les marges de cellule automatiquement en fonction du nombre de lignes affichées. En revanche, si vous connaissez le nombre maximal de PEI possible pour une commune, vous pouvez adapter ces marges en amont afin que votre contenu en-dessous ne soit pas affecté.
Par exemple, si mon nombre de PEI/lignes maximum est de 200, je modifie les marges de cellule afin que le tableau ne dépasse pas le nombre de pages que je me fixe. Dans tous les cas, le contenu suivant commencera au même endroit après l'espace réservé au tableau de hauteur maximum.
Pour définir l'emplacement des cadres supplémentaires qui contiendront les 200 lignes, vous pouvez sélectionner dans les propriétés du tableau : onglet Cadres -> "Utiliser les cadres existants" -> "Ajouter cadre". Cela ajoutera un cadre que vous pourrez positionner sur de nouvelles pages avant le contenu situé en-dessous.
Par contre, une commune avec un petit nombre de PEI risque de laisser des pages vierges avant l'affichage du contenu en-dessous. Vous pouvez placer un texte d'information derrière la première ligne de vos cadres supplémentaires ou afficher l'en-tête sur tous les cadres pour signifier l'absence d'information supplémentaire (Propriétés du tableau -> onglet Apparence -> Afficher l'en-tête "Sur tous les cadres").
Si vous souhaitez conserver une seule page pour le tableau, même avec un très grand nombre de lignes, vous pouvez aussi créer des cadres supplémentaires sur les côtés de celui-ci (si vous n'avez pas beaucoup de colonnes à afficher bien sûr).
N'hésitez pas si vous avez toujours des questions. Je vous souhaite bon courage et bonne réussite pour la finalisation de votre projet.
Cordialement.
Hors ligne