- Sujet précédent - QGIS: Atlas a la parcelle par proprietaire - Sujet suivant
#91 Tue 15 February 2022 15:13
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Par deux feuilles, vous entendez par là que deux séries de pages différentes sont générées lors de l'export pour cette entité?
Oui c'est cela, deux séries de pages sont générées pour chaque export dans l'atlas.
La première page génère des éléments comme la commune, le nom de la ligne la ou les parcelles concernée(s), la date...
La deuxième page donne le plan dans un cadre, le ou les propriétaires dans un autre cadre
Voici l'expression dans le cadre des propriétaires :
array_to_string(array_foreach(array_agg((case when $id=@atlas_featureid then "PROPRIO" end), filter:=within($geometry, buffer(@atlas_geometry, 0.5))),
concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n''\n' )
En pj les captures d'écran demandées.
Hors ligne
#92 Tue 15 February 2022 15:45
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
Pour l'expression, ça donne quoi sans le case when?
Et si ça donne quelque chose de concluant, le comportement décrit plus bas est bien celui attendu?
Oui c'est cela, deux séries de pages sont générées pour chaque export dans l'atlas.
En ligne
#93 Tue 15 February 2022 16:12
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Oui sans le case when c'est concluant. Merci, on avance beaucoup.
A ce stade, un autre problème surgit. Voici :
Les parcelles ZK 230 appartiennent à deux propriétaires XX et YY, alors que 2 parcelles supplémentaires ZL 103 et ZL 92 appartiennent à YY seulement.
Sur une page d'export, on aura pour la parcelle ZK 230 :
Nom : XX
Sur une autre page d'export, on aura pour les parcelles ZK 230, ZL 103 et ZL 92 :
Nom : XX
Nom : YY
Ce qu'il faudrait, c'est ceci sur une page d'export :
Parcelle ZK 230
Nom : XX
Nom : YY
Sur une autre page d'export :
Parcelles : ZL 103 et ZL 92
Nom : YY
Voilà. Merci.
En pj un extrait de la table attributaire pour ces parcelles
Hors ligne
#94 Tue 15 February 2022 17:54
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
les parcelles ZK 230, ZL 103 et ZL 92 :
Il y a une relation spatiale entre ces trois parcelles?
En ligne
#95 Tue 15 February 2022 18:44
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Qu'entendez-vous par relation spatiale?
Hors ligne
#96 Tue 15 February 2022 19:40
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Si vous entendez relation spatiale, des géométries qui se touchent, je ne sais pas (je ne suis plus au bureau). Mais en tout cas, il y a d'autres exemples de parcelles qui ne se touchent pas.
Hors ligne
#97 Wed 16 February 2022 08:21
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
les parcelles ZL 103 et ZL 92 se touchent mais pas la ZK 230
Hors ligne
#98 Wed 16 February 2022 10:38
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
OK. Donc si je résume l'objet de votre fiche (qui, me semble-t-il, a bien divergé de la demande initiale de ce sujet, du moins dans ma compréhension), vous voulez:
- si plusieurs personnes ont en commun une ou plusieurs parcelles: on liste seulement cette ou ces parcelles en commun et les proprio
- si une personne possède plusieurs parcelles: on liste les parcelles qu'elle a toute seule, avec son nom sur une fiche. Et pour les parcelles en commun avec d'autres personnes, voir point précédent
On ne se préoccupe pas de savoir si les parcelles sont accolées ou pas; l'essentiel c'est le(s) proprio(s).
J'ai bon?
En ligne
#99 Wed 16 February 2022 10:48
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Oui
Hors ligne
#100 Wed 16 February 2022 16:43
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
OK. Ça va être compliqué, à partir de la structure actuelle des couches, d'arriver à formater votre fiche. Comment identifier dans une liste de parcelles lesquelles appartiennent qu'à un proprio (ZL 103 et ZL 92 ) et lesquelles appartiennent à plusieurs (ZK230) et surtout comment relier entre les proprios?
Deux options:
A/ Votre couche "proprietaires", c'est bien une parcelle avec sa géométrie du cadastre, un champ indiquant son numéro et un autre champ indiquant un de ses proprio (d'où le "autant de parcelles que de proprios")? Du genre
Code:
ZK 230 | XX ZK 230 | YY ZL 103 | YY ZL 92 | YY
Si oui, il faut:
- créer une nouvelle qui fusionne les entités selon leur numéro de parcelle, en concaténant les noms de propriétaires dans un champ. On obtient quelque chose du genre
Code:
ZK 230 | XX, YY ZL 103 | YY ZL 92 | YY
- créer à partir de la couche une nouvelle fusion, sur le champ proprio, en concaténant cette fois les parcelles, afin d'obtenir
Code:
ZK 230 | XX, YY ZL 103 - ZL 92 | YY
Il faudra être vigilant ici quant à l'ordre de concaténation des noms à l'étape précédente car XX, YY <> YY, XX. Mais bon...
Cette seconde couche utilisée comme couche de couverture devrait vous épargner un paquet d'expression.
Voilà pour la méthode "je fonce"
B/ Autrement, ce concept de "propriétariat" est déjà dans la base majic que vous utilisez certainement. Il s'agit, sauf erreur de ma part, du "compte communal" qui assigne à un (groupe de) propriétaire(s) un identifiant unique, lequel identifiant est attaché à chacune des parcelles en sa possession. Par le jeu des relations, on peut relier propriétaire(s) <-> parcelle(s). C'est in fine plus propre et plus pérenne : on ne tripatouille pas les données, juste des relations et des jointures à mettre en place, et des expressions.
En ligne
#101 Wed 16 February 2022 17:43
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
A/ Votre couche "proprietaires", c'est bien une parcelle avec sa géométrie du cadastre, un champ indiquant son numéro et un autre champ indiquant un de ses proprio (d'où le "autant de parcelles que de proprios")? Du genre
Code:
ZK 230 | XX
ZK 230 | YY
ZL 103 | YY
ZL 92 | YY
Oui c'est cela
Si oui, il faut:
- créer une nouvelle qui fusionne les entités selon leur numéro de parcelle, en concaténant les noms de propriétaires dans un champ. On obtient quelque chose du genre
Code:
ZK 230 | XX, YY
ZL 103 | YY
ZL 92 | YY
- créer à partir de la couche une nouvelle fusion, sur le champ proprio, en concaténant cette fois les parcelles, afin d'obtenir
Code:
ZK 230 | XX, YY
ZL 103 - ZL 92 | YY
En fait il faut faire le chemin inverse, c'est à dire fusionner sur les parcelles et créer un nouveau champ de concaténation des propriétaires.
Puis terminer, comme nous l'avons commencé, par une nouvelle fusion par proprio en créant un nouveau de concaténation des parcelles.
B/ Autrement, ce concept de "propriétariat" est déjà dans la base majic que vous utilisez certainement.
Nous n'avons malheureusement pas la main dessus.
Hors ligne
#102 Wed 16 February 2022 18:13
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
En fait il faut faire le chemin inverse, c'est à dire fusionner sur les parcelles et créer un nouveau champ de concaténation des propriétaires.
Puis terminer, comme nous l'avons commencé, par une nouvelle fusion par proprio en créant un nouveau de concaténation des parcelles.
Vous êtes sûr que c'est inverse?
En ligne
#103 Wed 16 February 2022 18:33
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Vous êtes sûr que c'est inverse?
Enfin je veux dire qu'on a d'abord fusionné les parcelles par proprio pour concaténer les parcelles ensuite.
Là on fusionne les parcelles par leurs codes et en concaténant les proprios.
A partir de cette couche, on fusionne les parcelles par proprio et en concaténant les codes parcelles
Hors ligne
#104 Tue 22 February 2022 15:59
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Je suis arrivé à cette étape : les proprios sont concaténés dans le champ concat_pro (séparés par un tiret) et les parcelles dans le concat_par (voir pj).
Dans le cadre des propriétaires, il y a cette expression :
array_to_string(array_foreach(array_agg("concat_pro", filter:=within($geometry, buffer(@atlas_geometry, 0.5))),
concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n''\n' )
Mais elle ne fonctionne que pour un propriétaire par ligne.
Lorsqu'il y a plusieurs propriétaires concaténés par ligne comme dans la pj, je suppose qu'il faut mettre cette expression avec comme séparation les tirets de la concaténation? Mais comment?
Merci.
Hors ligne
#105 Tue 22 February 2022 16:02
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai oublié la pj
Je suis arrivé à cette étape : les proprios sont concaténés dans le champ concat_pro (séparés par un tiret) et les parcelles dans le concat_par (voir pj).
Dans le cadre des propriétaires, il y a cette expression :
array_to_string(array_foreach(array_agg("concat_pro", filter:=within($geometry, buffer(@atlas_geometry, 0.5))),
concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n''\n' )
Mais elle ne fonctionne que pour un propriétaire par ligne.
Lorsqu'il y a plusieurs propriétaires concaténés par ligne comme dans la pj, je suppose qu'il faut mettre cette expression avec comme séparation les tirets de la concaténation? Mais comment?
Merci.
Hors ligne
#106 Wed 23 February 2022 09:03
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
En fait je ne pense qu'il faille utiliser cette expression :
array_to_string(array_foreach(array_agg("concat_pro", filter:=within($geometry, buffer(@atlas_geometry, 0.5))),
concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n''\n' )
vu que les propriétaires sont déjà agrégés par ligne.
Comme dans la pj, si il y a plusieurs propriétaires dans une ligne, comme ceci :
XX - YY - ZZ
Il faudrait trouver un moyen de séparer les propriétaires, pour arriver à ceci dans le cadre de l'affichage des propriétaires :
Nom : XX Pour accord le : Signature :
Nom : YY Pour accord le : Signature :
Nom : ZZ Pour accord le : Signature :
Quelle est l'expression qui permet de le faire?
Hors ligne
#107 Wed 23 February 2022 22:49
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Si je reprends les données en pièce jointe, à quoi correspond l'entité de l'atlas pour chacune de ces lignes?
l faudrait trouver un moyen de séparer les propriétaires
C'est en partie ce que fait array_foreach: il découpe et applique un traitement de votre choix àchacun des éléments
En ligne
#108 Wed 23 February 2022 23:35
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Bonsoir,
Si je reprends les données en pièce jointe, à quoi correspond l'entité de l'atlas pour chacune de ces lignes?
concat_pro : le ou les propriétaires à renseigner dans le cadre des propriétaires dans l'atlas selon cette formule :
Comme dans la pj, si il y a plusieurs propriétaires dans une ligne, comme ceci :
XX - YY - ZZ
Il faudrait trouver un moyen de séparer les propriétaires, pour arriver à ceci dans le cadre de l'affichage des propriétaires :
Nom : XX Pour accord le : Signature :
Nom : YY Pour accord le : Signature :
Nom : ZZ Pour accord le : Signature :
concat_par : la ou leurs parcelles à renseigner dans le cadre des parcelles dans l'atlas
Je crois avoir bien saisi qu'il faut utiliser array_foreach, mais comment c'est toute la question...
Hors ligne
#109 Thu 24 February 2022 09:41
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Dans ce caas, je ne comprends pas le besoin du array_agg (on n'a rien à agréger vu que l'info recherché est déjà dans ledit champ), et encore moins du filtre spatial (les parcelles qui nous intéressent sont celles qui composent la géométrie de l'entité atlas et elles sont déjà listées dedans). Bref, l'objet atlas dispose déjà de toutes les infos dans ses champs. Désolé de me répéter mais prenez le temps de lire l'aide et les exemples de chaque fonction et surtout, partez avec des expressions simples, vous voyez ce que ça renvoie et vous complexifiez petit à petit plutôt que de vouloir tripatouiller celles qu'on utilisait précédemment dans un autre contexte.
Il me semble que dans votre cas, il suffirait de convertir le contenu du champ concat_pro en array
Code:
array_to_string( --et enfin on reconvertit en texte array_foreach( -- et là, s e passe la subdivision de la liste et le rendu texte attendu string_to_array("concat_pro", ' - '), -- ici se passe la conversion en liste concat( 'Nom : ', @element, ' Pour accord le : Signature : ') ),'\n\n' )
En ligne
#110 Thu 24 February 2022 10:40
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Ok merci.
Cela fonctionne. Le temps venu, il faudra que je mette toutes ces solutions, et elles sont légion, sur ce forum.
Hors ligne
#111 Thu 24 March 2022 14:49
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Lors de la génération de mon atlas parcellaire, l'encadré propriétaire donne ceci :
Nom : XXXXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXX Date : XXXXXX SIGNATURE :
Est-il possible d'avoir ceci :
Nom : XXXXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXX Date : XXXXXX SIGNATURE :
Je rappelle l'expression ayant servi pour la génération des noms de propriétaires :
array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n\n' )
Merci.
Hors ligne
#112 Fri 25 March 2022 09:49
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Du coup, vous avez testé quoi comme correctif?
En ligne
#113 Sat 26 March 2022 11:42
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Justement, je n'ai pas de correctif.
Ce que j'obtiens avec l'expression suivante
array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', @element, ' Pour accord le : Signature : ')
),'\n\n' )
me donne ceci
Nom : XXXXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXX Date : XXXXXX SIGNATURE :
Et je voudrais arriver à cela
Nom : XXXXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXXXX Date : XXXXXX SIGNATURE :
Nom : XXXXXXXXXX Date : XXXXXX SIGNATURE :
Hors ligne
#114 Sat 26 March 2022 16:36
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Il faut tenir compte de la longueur du contenu de @element pour déterminer le nombre d'espaces avant Date :
Code:
array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', rpad("@element" ,50-length(@element),' '), 'Pour accord le : Signature : ') ),'\n\n' )
NB: 50 doit être plus grand que le nombre de caractères de votre @element le plus long (ici, je suppose que vous n'avez pas de nom de propriétaire plus long que 49 caractères pour conserver au moins un espace), et il faut utiliser une police "sans serif"
Jean-Marie
Azimut
Hors ligne
#115 Sat 26 March 2022 18:04
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai oublié de préciser que "Date" n'est pas un champ. C'est seulement du texte après lequel le signataire doit préciser la date. Cela n'a pas d'incidence sur votre proposition?
Hors ligne
#117 Mon 28 March 2022 09:41
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Avec votre expression (j'ai supprimé les guillemets du premier @element, sinon cela ne fonctionnait pas)
array_to_string( array_foreach( string_to_array("concat_pro", ' - '),concat( 'Nom : ', rpad(@element , 50-length(@element),' '), ' Pour accord le : Signature : ')
),'\n\n' )
J'ai diverses situations
Nom : M. LEBRUN Daniel Albert Pour accord le : Signature :
Nom : Mme. Collet Denise Blanche Pour accord le : Signature :
Nom : Mme. LEBRUN Odile Marie Pour accord le : Signature :
Mais aussi celle-ci
Nom : M. LEDUC Herve Pour accord le : Signature :
Nom : Mme. DUPONT Beatrice Pour accord le : Signature :
Alors que pour d'autres, c'est à peu près bien calé.
Hors ligne
#118 Mon 28 March 2022 10:40
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Vous utilisez bien une police "sans serif" ? si oui, je ne vois pas. Ceci dit j'ai testé sur une étiquette mais pas dans le composeur
Jean-Marie
Azimut
Hors ligne
#119 Mon 28 March 2022 13:13
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3807
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Effectivement vu que rpad joue sur le nombre de caractères, si vous avez dans un cas beaucoup de "m" et dans l'autre des "i", à nombre de caractères identiques, les textes vont vraisemblablement pas être alignés. et j'imagine que c'est ce que corrige le "sans serif" sur lequel jmarsac insiste.
L'autre option est de faire deux blocs texte l'un à la suite de l'autre, suffisamment distancé: le premier avec les noms, le second avec les date et signature en face.
Justement, je n'ai pas de correctif.
Ma question était: qu'avez-vous testé et qui n'a pas marché? Quelque chose qui montre à ceux qui peuvent vous aider que vous avez aussi fait un effort de votre part, avant de solliciter la communauté (et qui de surcroît, peut vous permettre de mieux comprendre le correctif proposé et voir où vous avez failli). Bref...
En ligne
#120 Mon 28 March 2022 17:30
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1624
Re: QGIS: Atlas a la parcelle par proprietaire
L'autre option est de faire deux blocs texte l'un à la suite de l'autre, suffisamment distancé: le premier avec les noms, le second avec les date et signature en face.
Justement j'avais une idée par là. Il faut que le bloc avec les dates et signature soit en accord avec les noms, genre :
BLOC Nom BLOC date
Nom 1 Date Signature
Nom 2 Date Signature
Nom 3 Date Signature
Mais il faut que dans le bloc date apparaisse 'Date Signature' autant de fois qu'il y a un nom dans le bloc nom.
il ne peut y avoir :
BLOC Nom BLOC date
Nom 1 Date Signature
Nom 2 Date Signature
Date Signature
Comment faire?
Ma question était: qu'avez-vous testé et qui n'a pas marché?
J'avais essayé donc cette première démarche de deux blocs, et au niveau des expressions, j'ai uniquement testé des espaces avec le champ 'Date'. C'est tout ce que j'ai testé.
PS : même avec la police sans sérif, cela donne les mêmes décalages que ceux que j'ai signalé à 9h41
Hors ligne
- Sujet précédent - QGIS: Atlas a la parcelle par proprietaire - Sujet suivant