- Sujet précédent - QGIS: Atlas a la parcelle par proprietaire - Sujet suivant
#1 Tue 26 October 2021 09:04
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
QGIS: Atlas a la parcelle par proprietaire
Bonjour,
je remets le post sur le regroupement de parcelles pour plus de clarté :
Ce que je veux faire c’est un atlas par propriétaire avec un encadré rouge pour la ou les parcelles lui ou leur appartenant. J’ai une couche de couverture ('Proprietaires_intersect_trace') de l'atlas contenant pour chaque parcelle un propriétaire. Dans l'Atlas, j’ai plusieurs encadrés texte où je dois mettre :
- section : la section de la parcelle
- parcelle : la ou les parcelles
- propriétaire : le ou les propriétaires
Quand il y a une seule parcelle par propriétaire, cela ne pose pas de problème.
Mais lorsqu'il y plusieurs parcelles, cela devient compliqué
J’ai bien cette expression, mais cela ne donne que les premières parcelles de la liste
aggregate('Proprietaires_intersect_trace','concatenate',"Parcelle", concatenator:=' - ',order_by:="Parcelle")
Santanna m’a bien suggéré de rajouter un filter, mais je ne vois pas comment.
Et enfin dans l’Atlas, dans chaque plan la ou les parcelles par propriétaire avec un encadré rouge.
Voici une capture d'écran de mon rendu.
Merci.
Hors ligne
#2 Tue 26 October 2021 09:34
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai trouvé cette expression pour afficher les parcelles par propriétaire dans l'encadré texte :
[%CASE WHEN
count("Parcelle",group_by:="PROPRIO") =1 then 'Parcelle :' else 'Parcelles :' end || ' ' || concatenate("tex",group_by:="PROPRIO",concatenator:=' - ', order_by:= "tex" )
%]
Maintenant il faudrait pouvoir afficher l'ensemble des parcelles par propriétaire sur un même plan de l'Atlas, et là je coince. Je crois bien que cela se passe dans "Filtrer avec" du panneau Atlas, mais quoi mettre?
Hors ligne
#3 Tue 26 October 2021 14:40
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Cela fait un moment que je cherche à afficher la totalité des parcelles par propriétaire dans l'Atlas, mais je n'y arrive pas.
QQN aurait une piste?
Hors ligne
#4 Tue 26 October 2021 17:20
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai réussi à afficher les parcelles par propriétaire.
1/ J'ai fusionné la couche des parcelles selon le champ propriétaire avec cette expression en symbologie :
$id=@atlas_featureid
, mais en couche non visible. Cette couche constitue la couche de couverture
2/ La couche originale des parcelles (Proprietaires_intersect_trace) à partir de laquelle j'ai fait la fusion de couches qui sert de couverture pour l'atlas, je fais une symbologie de cette sorte :
within($geometry, buffer(@atlas_geometry, 0.5))
De sorte que se mettent en évidence les parcelles qui appartiennent à un voire plusieurs propriétaires sur l'Atlas.
Par contre, mon expression texte pour inscrire automatiquement le numéro des parcelles ne va plus :
[%CASE WHEN
count("Parcelle",group_by:="PROPRIO") =1 then 'Parcelle :' else 'Parcelles :' end || ' ' || concatenate("tex",group_by:="PROPRIO",concatenator:=' - ', order_by:= "tex" )
%]
C'est logique, puisque cette expression était liée à la couche originale (Proprietaires_intersect_trace) qui servait de couverture à l'atlas. La couche de couverture de l'atlas est dorénavant la couche fusionnée. Il faudrait donc une expression de type :
aggregate('Proprietaires_intersect_trace','concatenate',"Parcelle", concatenator:=' - ',order_by:="Parcelle")
Il ne manque plus à cette expression qu'un filter, comme l'a suggéré SANTANNA, mais là je sèche.
Hors ligne
#5 Wed 27 October 2021 09:38
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai réussi à intégrer le numéro des parcelles avec cette expression
[%CASE WHEN
aggregate('Proprietaires_intersect_trace','count',"tex",filter:=within($geometry, buffer(@atlas_geometry, 0.5)))= 1 then 'Parcelle :' else 'Parcelles :' end || ' ' ||
aggregate('Proprietaires_intersect_trace','concatenate',"tex", concatenator:=' - ',order_by:="tex",filter:=within($geometry, buffer(@atlas_geometry, 0.5)) )
%]
J'ai utilisé la fonction aggregate pour afficher automatiquement le ou les numéros de parcelle(s) et conditionner le nombre de l'orthographe de Parcelle en fonction s'il y a une parcelle ou plusieurs. J'ai pu mettre un filtre comme suggéré par SANTANNA
Voilà.
Etape suivante :
A ce niveau j'ai ceci qui est affiché :
Section : XX Parcelle(s) : 1 ou 1 - 2..
ou
Section : XX - XY Parcelle(s) : 1 - 2
Or, je dois faire une ligne pour chaque parcelle :
Section : XX Parcelle(s) : 1 ou 1 - 2...
Section : XY Parcelle(s) : 3 ou 3 - 4
Et là cela se complique sérieusement. Je suppose à première vue que c'est la section qui permet de déterminer l'ordre d'affichage des parcelles par section. Mais c'est une hypothèse... Quel est la fonction qui me permet de déterminer l'affichage en fonction du trait d'union dans XX - XY (une ligne pour Section : XX et une autre pour Section : XY).
Merci.
Hors ligne
#6 Wed 27 October 2021 14:38
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Je me demandais si créer une couche (virtuelle?) agrégeant les numéros de parcelles par proprio et par section ne permettrait pas plus simplement d'afficher les données à l'aide d'un élément table attributaire dans la mise en page (filtrée sur l'atlas)...
Si on reste dans votre démarche full étiquettes avec expression:
- "Section : XX" et "Parcelle(s): 1 ou 1 - 2" sont deux blocs texte différents ou ils sont dans le même?
- Comment récupérez-vous actuellement le XX de la section?
Hors ligne
#7 Wed 27 October 2021 15:10
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
"Section : XX" et "Parcelle(s): 1 ou 1 - 2" sont deux blocs texte différents ou ils sont dans le même?
Ce sont deux blocs texte différents
Comment récupérez-vous actuellement le XX de la section?
Je le récupère de la même manière que pour les parcelles :
[%CASE WHEN
aggregate('Proprietaires_intersect_trace','count',"Section",filter:=within($geometry, buffer(@atlas_geometry, 0.5)))= 1 then 'Section :' else 'Sections :' end || ' ' ||
aggregate('Proprietaires_intersect_trace','concatenate',"Section", concatenator:=' - ',order_by:="Section",filter:=within($geometry, buffer(@atlas_geometry, 0.5)) )
%]
Hors ligne
#8 Wed 27 October 2021 15:16
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
"Section : XX" et "Parcelle(s): 1 ou 1 - 2" sont deux blocs texte différents ou ils sont dans le même?
Mais je réfléchis aussi à en faire un seul bloc.
Hors ligne
#9 Wed 27 October 2021 16:16
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Je me demandais si créer une couche (virtuelle?) agrégeant les numéros de parcelles par proprio et par section ne permettrait pas plus simplement d'afficher les données à l'aide d'un élément table attributaire dans la mise en page (filtrée sur l'atlas)...
Justement je n'arrive pas à agréger les numéros de parcelles par proprio et par section. C'est avec la fonction aggregate, concatenete?
Hors ligne
#10 Thu 28 October 2021 11:16
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Justement je n'arrive pas à agréger les numéros de parcelles par proprio et par section. C'est avec la fonction aggregate, concatenete?
Non, je pensais à des couches virtuelles; c'est une toute autre bête, avec du SQL.
Mais dans un premier temps, vous pourriez utiliser l'algorithme "Agrégation" pour générer une couche de ce type. Et après utiliser le tableau de cette couche.
Autrement, en pure expression, je ne vois pas trop comment lier les deux blocs de texte section et num_parcelle.
Et dans l'hypothèse où tout est dans un bloc, c'est peut-être jouable (avec une array qu'on parcourt) mais la mise en page me semble difficile à conserver, sauf à injecter du html. Ça devient complexe et long à mettre en œuvre pour quelque chose qui pourrait être fait plus simplement. "Simplifions-nous la vie."
Hors ligne
#11 Thu 28 October 2021 13:59
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Désolé, mais je n'arrive pas avec la fonction agrégation? Je dois être fâché avec ça.
Je pense que je vais me diriger vers l'affichage des parcelles plutôt vers ce format (concaténation sections + parcelle) : Parcelle : XX 11
Hors ligne
#12 Thu 28 October 2021 17:06
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Je désire filtrer la sortie de l'atlas avec un paramètre à partir d'un champ d'une autre couche que celle de la couche de couverture.
Comment faire?
Merci.
Hors ligne
#14 Fri 29 October 2021 09:16
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Vous voulez dire que le langage sql est possible dans le filtre de sortie de l'atlas.
Dans ce cas, je donne ma langue au chat.
J'ai une couche de couverture mais ce n'est pas cette couche qui doit filtrer la sortie des plans. C'est une autre couche. Par ex, pour une couche autre que celle de la couverture, appelée couche1, avec un champ surface, je voudrais que ne s'exportent que les plans dont la surface est supérieure à 50m² de la couche1.
Quelle est l'expression à retranscrire alors?
Hors ligne
#15 Fri 29 October 2021 10:15
- Edouard Hyvernat
- Participant occasionnel
- Lieu: Vernon
- Date d'inscription: 24 Jan 2011
- Messages: 46
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
il y a quelques années où j'avais eu le même besoin, j'avais suivi ce post : https://gis.stackexchange.com/questions … qgis-atlas
ça date et peut-être existe t'il de nouvelles fonctions aujourd'hui mais c'est une piste.
Hors ligne
#16 Fri 29 October 2021 10:55
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
il y a quelques années où j'avais eu le même besoin, j'avais suivi ce post : https://gis.stackexchange.com/questions … qgis-atlas
ça date et peut-être existe t'il de nouvelles fonctions aujourd'hui mais c'est une piste.
Edouard Hyvernat, merci je vous remercie mais je pense qu'il s'agit ici de filtrer l'affichage des autres couches. Ce que je recherche c'est le final, c'est à dire le filtrage de l'export en pdf ou jpeg des plans.
Hors ligne
#17 Sat 30 October 2021 16:00
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Atlas a la parcelle par proprietaire
J'ai une couche de couverture mais ce n'est pas cette couche qui doit filtrer la sortie des plans. C'est une autre couche. Par ex, pour une couche autre que celle de la couverture, appelée couche1, avec un champ surface, je voudrais que ne s'exportent que les plans dont la surface est supérieure à 50m² de la couche1.
Quelle est l'expression à retranscrire alors?
On est bien d'accord que la couche de couverture est celle qui définit les entités qui vont être itérées lors de l'atlas!? Donc au lieu d'avoir, on va dire, les 10 entités de cette couche, vous ne voulez que les trois dont la surface est supérieure à 50m². Seul hic, l'info de surface n'est pas renseignée dans la couche de couverture mais dans une seconde couche. Ai-je bon? Si oui,
- vu qu'on parle de la surface des éléments de la couche de couverture, vous pouvez juste les calculer et faire la comparaison
Code:
$area > 50
- en supposant qu'il y a un champ commun entre la couche de couverture et la couche_1 pour une jointure attributaire, vous pouvez récupérer l'info du champ surface ou de tout autre champ avec les fonctions attribute et get_feature
Code:
attribute(get_feature('couche_1', 'champcommundanscouche_1', "champdelacouchecouverture"), 'surface') >50
PS: Faire attention aux guillemets simples ou doubles; ils ont des rôles particuliers dans ce contexte. Voir doc
Hors ligne
#18 Sat 30 October 2021 20:48
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
On est bien d'accord que la couche de couverture est celle qui définit les entités qui vont être itérées lors de l'atlas!?
Oui
Donc au lieu d'avoir, on va dire, les 10 entités de cette couche, vous ne voulez que les trois dont la surface est supérieure à 50m². Seul hic, l'info de surface n'est pas renseignée dans la couche de couverture mais dans une seconde couche.
oui
vu qu'on parle de la surface des éléments de la couche de couverture, vous pouvez juste les calculer et faire la comparaison
Je ne parle pas de la surface des éléments de la couche de couverture, mais d'une autre couche.
Voilà mon enjeu :
Je dois représenter les parcelles (la couche de couverture) qui sont croisées par une ligne électrique souterraine.
J'ai fait un buffer de 2,5 mètres sur la ligne électrique.
J'ai découpé ce buffer par parcelle, de sorte que j'ai une entité de buffer de la ligne électrique par parcelle.
Le souci est que j'ai des buffers qui intersectent à peine une parcelle, de l'ordre de quelques centimètres.
Comme j'ai plus de 250 parcelles à exporter, je ne désire pas exporter ces parcelles qui sont peu intersectées.
Je voudrais donc filtrer l'atlas pour que ces parcelles qui sont peu intersectées ne figurent pas dans l'export.
attribute(get_feature('couche_1', 'champcommundanscouche_1', "champdelacouchecouverture"), 'surface') >50
A la lecture de ma problématique, cette expression convient-elle?
Hors ligne
#19 Wed 03 November 2021 09:45
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Le principal souci vient, peut-être, de la couche de couverture. Comme il peut avoir plusieurs parcelles par propriétaire, la couche de couverture est un regroupement des parcelles (couche originale de 239 entités) par propriétaire qui contient dorénavant 156 entités. Cela permet d'afficher par propriétaire l'ensemble des parcelles par propriétaire dans l'atlas et par la même occasion les buffers à 2m50 des tronçons qui les intersectent(239 entités également comme la couche originale).
Premièrement, Cette couche de couverture me convient pour afficher toutes les parcelles par propriétaire, mais je demande si je ne dois pas choisir la couche originale comme couche de couverture. Dans ce cas, comment afficher toutes les parcelles par propriétaire?
Deuxièmement, dans la majorité des cas, les parcelles sont intersectées entièrement par ces buffers de tronçons de ligne électrique, c'est-à-dire qu'ils les traversent entièrement (cf entier.jpeg). Mais il existe d'autres parcelles qui sont peu intersectées par ces tronçons (cf partiel.jpeg).
Je ne veux pas exporter les parcelles qui sont peu intersectées.
Comment faire pour exporter uniquement à partir de l'atlas les parcelles regroupées par propriétaire et qui sont significativement intersectées par les tronçons de la ligne électrique?
Merci.
Hors ligne
#20 Wed 03 November 2021 10:03
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Vous voulez dire que le langage sql est possible dans le filtre de sortie de l'atlas.
oui
Dans ce cas, je donne ma langue au chat.
J'ai une couche de couverture mais ce n'est pas cette couche qui doit filtrer la sortie des plans. C'est une autre couche. Par ex, pour une couche autre que celle de la couverture, appelée couche1, avec un champ surface, je voudrais que ne s'exportent que les plans dont la surface est supérieure à 50m² de la couche1.
Quelle est l'expression à retranscrire alors?
Difficile de dire sans plus de précisions.
Si j'ai bien compris, vous avez la couche de couverture :
proprietaire_intersect_trace
- section
- parcelle
- proprietaire
et la couche "de filtre" :
couche1
- surface
Quels sont les autres attributs de couche1 ?
Jean-Marie
Azimut
Hors ligne
#21 Wed 03 November 2021 10:17
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Pour la couche 1, c'est-à-dire la couche des tronçons de ligne électrique, j'ai comme attributs, surface, périmètre et ID.
Hors ligne
#23 Wed 03 November 2021 10:34
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
La couche de couverture est 'proprietaire_intersect_trace'.
La couche sur laquelle je voudrais m'appuyer pour filtrer l'export des plans parcellaires est la couche 1, c'est-à-dire celle des tronçons électriques. Cette couche 1 a été auparavant découpée par la couche des parcelles propriétaires ('proprietaire_intersect_trace'), de sorte qu'il y a autant de tronçons de ligne électrique que de parcelles.
Cette couche 1 contient un champ surface, un champ périmètre et un champ ID.
Hors ligne
#25 Wed 03 November 2021 13:38
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Oui, et le champ ID de couche1 représente ?
le champ identifiant unique
Hors ligne
#27 Wed 03 November 2021 13:41
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Atlas a la parcelle par proprietaire
Bonjour,
Code:
attribute(get_feature('couche_1', 'champcommundanscouche_1', "champdelacouchecouverture"), 'surface') >50A la lecture de ma problématique, cette expression convient-elle?
Pour moi, c'est le modèle type de questions à bannir d'un forum d'entraide. Vous avez le logiciel, les données, la formule et savez ce que vous désirez obtenir. Vous avez toutes les cartes en mains. Avec tout mon respect, je ne sais pas en quoi quelqu'un d'autre pourrait mieux répondre à cette question que vous. Testez et vous verrez; ça ne vous coûtera au pire que le temps du test et pas les 4jours d'attente potentielle de réponse.
Hors ligne
#28 Wed 03 November 2021 13:53
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
Code:
attribute(get_feature('couche_1', 'champcommundanscouche_1', "champdelacouchecouverture"), 'surface') >50
A la lecture de ma problématique, cette expression convient-elle?
Pour moi, c'est le modèle type de questions à bannir d'un forum d'entraide. Vous avez le logiciel, les données, la formule et savez ce que vous désirez obtenir. Vous avez toutes les cartes en mains. Avec tout mon respect, je ne sais pas en quoi quelqu'un d'autre pourrait mieux répondre à cette question que vous. Testez et vous verrez; ça ne vous coûtera au pire que le temps du test et pas les 4jours d'attente potentielle de réponse.
Il n'y a pas de champ commun entre la couche de couverture (parcelles des propriétaires) et la couche 1 (tronçons de la ligne électrique)
Le principal souci vient, peut-être, de la couche de couverture. Comme il peut avoir plusieurs parcelles par propriétaire, la couche de couverture est un regroupement des parcelles (couche originale de 239 entités) par propriétaire qui contient dorénavant 156 entités. Cela permet d'afficher par propriétaire l'ensemble des parcelles par propriétaire dans l'atlas et par la même occasion les buffers à 2m50 des tronçons qui les intersectent(239 entités également comme la couche originale).
Hors ligne
#29 Wed 03 November 2021 13:57
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
ll n'y a donc aucun attribut commun entre la couche de couverture et la couche de filtre ou je me trompe ?
Il n'y a pas d'attribut commun entre la couche de couverture (parcelles des propriétaires) et la couche de filtre (tronçons de la ligne électrique). Par filtre, on entend bien "filtrer avec" dans le panneau ATLAS?
Hors ligne
#30 Wed 03 November 2021 14:11
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1668
Re: QGIS: Atlas a la parcelle par proprietaire
SANTANNA
attribute(get_feature('couche_1', 'champcommundanscouche_1', "champdelacouchecouverture"), 'surface') >50
Donc à votre proposition, j'ai testé cette expression et elle ne fonctionne pas
Hors ligne
- Sujet précédent - QGIS: Atlas a la parcelle par proprietaire - Sujet suivant