#1 Mon 14 March 2022 14:02
- Dmn.Vincent
- Participant occasionnel
- Date d'inscription: 8 Mar 2022
- Messages: 17
QGIS: Fusion entites en conservant l'ID
Bonjour
Je dois joindre des entités en fonction de leur localisation. Toutes les entités adjacentes doivent en former une seule. Cependant il faut aussi que je retrouves l'informations des ID des entités d'origine composant les entités fusionnées dans la couche produite. Et c'est là que je bloque, je n'arrives pas à intégrer les ID d'origines.
J'ai trouvé des pistes mais sans résultats. Auriez-vous une idée ?
Hors ligne
#2 Mon 14 March 2022 19:21
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Fusion entites en conservant l'ID
Bonjour,
Je dirais,
* à partir de la boîte à outils Traitement:
- Vous regroupez toutes les entités de la couche > une entité multipartie
- Vous explosez cette multipartie en entités d'un seul tenant
* Vous utilisez une expression de type overlay_contains pour récupérer la liste des ID dans la couche explosée
Hors ligne
#3 Mon 14 March 2022 21:32
- Benoit D
- Participant assidu
- Date d'inscription: 17 Jul 2018
- Messages: 151
Re: QGIS: Fusion entites en conservant l'ID
Je regarderai du côté Agrégation en concaténant le champ ID.
Hors ligne
#4 Tue 15 March 2022 12:25
- Dmn.Vincent
- Participant occasionnel
- Date d'inscription: 8 Mar 2022
- Messages: 17
Re: QGIS: Fusion entites en conservant l'ID
Bonjour,
Je dirais,
* à partir de la boîte à outils Traitement:
- Vous regroupez toutes les entités de la couche > une entité multipartie
- Vous explosez cette multipartie en entités d'un seul tenant
* Vous utilisez une expression de type overlay_contains pour récupérer la liste des ID dans la couche explosée
Oui merci, je pense que c'est la bonne voie. J'avais déjà fait les deux premières étapes, mais je n'arrive pas à utiliser une expression de ce type pour la dernière étape et intégrer les données des ID d'origine
Hors ligne
#5 Tue 15 March 2022 12:32
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Fusion entites en conservant l'ID
Bonjour,
Sans détails particuliers sur ce qui coince, je dirais que l'exemple numéro 4 devrait déjà être un bon début, je pense.
Hors ligne
#6 Tue 15 March 2022 15:43
- Dmn.Vincent
- Participant occasionnel
- Date d'inscription: 8 Mar 2022
- Messages: 17
Re: QGIS: Fusion entites en conservant l'ID
Petit retour : J'ai réussi
J'ai procédé de la manière suivante, si jamais quelqu'un a besoin. A priori ça fonctionne :
- "Regrouper"
- "De morceaux multiples à morceaux uniques"
- Créer un champ ID dans la couche produite avec @row_number pour obtenir un ID_Fusion des parcelles fusionnées
- Joindre par localisation l'ID d'origine, on obtient alors un ligne pour chaque duo ID_Fusion // ID_Origine
- Convertir l'ID d'origine ainsi obtenu en chaine de caractères
- Utiliser l'outil "Agrégation" en groupant en fonction de l'ID_Fusion. (j'ai mis "first_value" en fonction pour l'ID_Fusion afin de conserver des ID cohérentes pour les parcelles fusionnées)
Voilà j'ai donc bien une couche avec mes parcelles fusionnées et un champ (chaîne de caractères) qui concatène les différentes ID d'origine.
Merci pour votre aide !
Dernière modification par Dmn.Vincent (Tue 15 March 2022 15:44)
Hors ligne
#7 Tue 15 March 2022 15:59
- Dmn.Vincent
- Participant occasionnel
- Date d'inscription: 8 Mar 2022
- Messages: 17
Re: QGIS: Fusion entites en conservant l'ID
Par Contre l'opération regrouper puis éclater fait que je perds la totalité de l'information contenue dans ma table
Hors ligne
#8 Tue 15 March 2022 17:35
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Fusion entites en conservant l'ID
- Créer un champ ID dans la couche produite avec @row_number pour obtenir un ID_Fusion des parcelles fusionnées
- Joindre par localisation l'ID d'origine, on obtient alors un ligne pour chaque duo ID_Fusion // ID_Origine
- Convertir l'ID d'origine ainsi obtenu en chaine de caractères
- Utiliser l'outil "Agrégation" en groupant en fonction de l'ID_Fusion. (j'ai mis "first_value" en fonction pour l'ID_Fusion afin de conserver des ID cohérentes pour les parcelles fusionnées)
Voilà j'ai donc bien une couche avec mes parcelles fusionnées et un champ (chaîne de caractères) qui concatène les différentes ID d'origine.
En mode "j'adapte le quatrième exemple de l'aide de la fonction à votre besoin", obtiendrait-on la même chose dans un nouveau champ avec
Code:
array_to_string(overlay_contains('couche_parcelle', "ID ORIGINE"))
Par Contre l'opération regrouper puis éclater fait que je perds la totalité de l'information contenue dans ma table
Dès lors que vous agrégez des entités, il faut accepter de perdre des choses par ailleurs. Après, tout comme vous récupérez le champ ID, rien ne vous empêche de récupérer tout ou partie des autres champs.
Hors ligne
#9 Thu 17 March 2022 18:51
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS: Fusion entites en conservant l'ID
Bonjour,
- Vous regroupez toutes les entités de la couche > une entité multipartie
- Vous explosez cette multipartie en entités d'un seul tenant
A noter que la version 3.26 va intégrer une option pour faire ceci en un clic (https://github.com/qgis/QGIS/pull/47837). Yep, ca fait partie des choses que je kiffe dans cette communauté: quelqu'un en a eu besoin, a payé pour faire développer et ça va nous profiter à tous.
Hors ligne