#1 Mon 13 September 2021 08:13
- SALES P
- Participant occasionnel
- Date d'inscription: 14 Jul 2013
- Messages: 41
QGIS: Regrouper des parcelles cadastrales
Bonjour,
Je cherche une solution pour regrouper les parcelles cadastrales composant une unité d'épandage définie (voir capture d'écran - pour l'unité 12.1, j'ai les parcelles 25 et 30).
Lorsque je fait la fonction vecteur intersection, l'outil me remonte autant de ligne d'intersection que de parcelles cadastrales rencontrées (souvent plus du fait du manque de superposition parfaite entre les couches !). Alors que je souhaiterais, pour une Unité d'épandage qu'il me liste les parcelles cadastrales rencontrées.
A défaut d'obtenir cette présentation, il me faudrait alors sous EXCEL pouvoir regrouper pour une unité d'épandage, les parcelles cadastrales et ensuite les lister avec séparation par une virgule, dans un tableau de présentation.
Je ne suis pas sûr d'avoir été clair mais bon si vous aviez des idées que je puisse explorer ?
Merci d'avance
Bien cordialement
Hors ligne
#2 Tue 14 September 2021 22:34
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 722
Re: QGIS: Regrouper des parcelles cadastrales
Bonsoir,
Une méthode :
Créer une couche de centroide à l'intérieur de vos parcelles
Joindre par localisation à votre couche d'épandage pour récupérer un identifiant unique
Faire une jointure entre la couche nouvellement créée et votre couche des parcelles
Enfin regrouper (geotraitement dissolve) votre couche des parcelles en groupant par l'identifiant unique d'épandage
Édit : je ne sais pas trop si vous voulez récupérer la liste des parcelles ou générer la géométrie. Auquel cas s'arrêter à l'étape 2 devrait suffire
Hors ligne
#3 Wed 15 September 2021 13:44
- aheurion
- Participant actif
- Lieu: NANTES
- Date d'inscription: 8 Oct 2020
- Messages: 141
Re: QGIS: Regrouper des parcelles cadastrales
Bonjour,
Faire des centroïdes peut être problématique : si le centre n'est pas dans l'unité d'épandage alors qu'un bout de la parcelle y est, faut-il la considérer dans la liste ?
Si oui alors on peut imaginer de créer un nouveau champs dans la couche des unités d'épandage (champ "parcelles" par exemple) dans lequel on viendra renseigner la liste des id des parcelles rencontrées avec l'expression suivante :
Code:
aggregate( 'id_couche_parcelles', 'concatenate_unique', "champ_ID_de_la_couche_parcelles", intersects(geometry(@parent),$geometry), ';' )
Ainsi pour chaque unité d'épandage le champ parcelles va contenir un string de ce type :
id_parcelle_1;id_parcelle_34;id_parcelle_99;etc
Dernière modification par JD (Wed 15 September 2021 21:00)
Hors ligne
#4 Wed 15 September 2021 21:03
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 722
Re: QGIS: Regrouper des parcelles cadastrales
Faire des centroïdes peut être problématique : si le centre n'est pas dans l'unité d'épandage alors qu'un bout de la parcelle y est, faut-il la considérer dans la liste ?
C'est sûr, c'est juste que sur l'exemple les unités d'épandages avaient l'air d'épouser les limites cadastrales.
Mais on pourra adapter la formule donnée selon le résultat souhaité.
Hors ligne
#5 Thu 16 September 2021 12:19
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3799
Re: QGIS: Regrouper des parcelles cadastrales
Bonjour,
Si oui alors on peut imaginer de créer un nouveau champs dans la couche des unités d'épandage (champ "parcelles" par exemple) dans lequel on viendra renseigner la liste des id des parcelles rencontrées avec l'expression suivante :
Même si cela répond à la demande de Sales P, j'aurais plutôt vu la logique inverse, à savoir créer un champ dans la couche parcelle qui indique l'unité d'épandage à laquelle elle appartient (plus facile ensuite de faire un regroupement ou d'autres stats sans passer par du array ou autres analyses de contenus).
Bref... Je pense toutefois qu'il faudrait considérer filtrer sur une condition de proportion de superposition plutôt qu'une simple intersection, pour se débarrasser notamment de ces faux positifs dus à la numérisation des entités. Genre attribuer un ilot d'épandage à une parcelle (pour reprendre ma logique précédente) si l'intersection entre les deux représente au moins tel pourcent (majoritaire) de la parcelle (code non testé mais devrait le faire, je pense)
Code:
aggregate( 'id_couche_epandage', 'concatenate_unique', "champ_ID_de_la_couche_epandage", area(intersection(geometry(@parent),$geometry))/area(geometry (@parent))>0.8, -- 80% ';' )
Hors ligne