#1 Tue 12 July 2022 14:27
- Elminster
- Participant occasionnel
- Date d'inscription: 9 Jun 2008
- Messages: 47
QGIS 3.X: mise a jour d'un champ via une autre couche
Bonjour tout le monde,
J'ai une couche de polygone qui contient d'autres polygones. Pour chaque polygone de la première couche, je voudrais avoir la somme des surfaces des polygones de la 2ème couche qui sont situés à l'intérieur.
Dans la 2ème couche, j'ai l'identifiant du polygone de la première couche.
J'aimerai faire ça en une étape si c'est possible. Autrement je peux regrouper les polygones de la 2ème couche selon l'identifiant des polygones de la première couche, recalculer la surface, faire une jointure et injecter cette nouvelle surface. Mais je me dis qu'il doit bien exister une formule pour le faire en une fois...
Merci d'avance pour vos réponses.
Cordialement, Elminster
Hors ligne
#2 Tue 12 July 2022 15:11
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.X: mise a jour d'un champ via une autre couche
Bonjour,
Vous pouvez je pense faire ce que vous cherchez avec l'outil "Joindre les attributs par localisation (résumé)" de la boite de traitement :
https://docs.qgis.org/3.22/fr/docs/user … on-summary
Sinon, le SQL est le langage adapté pour ce genre de besoins, mais demande un certain investissement personnel (vite récompensé !).
Si vous voulez une proposition SQL, donnez juste le nom des tables et des champs concernés.
Si les couches sont en SHP, cela nécessitera de créer une nouvelle couche en sortie.
Si les couches sont dans une BDD (Spatialite, PostGis, ...), vous pourrez le faire directement avec un "UPDATE", sans créer de nouvelle couche.
A+
Sylvain
Sylvain M.
Hors ligne
#3 Tue 12 July 2022 15:50
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.X: mise a jour d'un champ via une autre couche
Bonjour,
Une troisième option est l'utilisation des fonctions aggregate et overlay_... dans la calculatrice de champs. Des exemples sont disponibles sur le forum.
Après, la question est de savoir s'il y a des entités à cheval sur deux polygones de la couche 1, auquel cas est-ce une surface au prorata qui est à considérer ou toute la surface à chaque fois?
Hors ligne
#4 Tue 12 July 2022 16:01
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.X: mise a jour d'un champ via une autre couche
+1 aux conseils de SANTANNA
En dernier complément :
Dans la 2ème couche, j'ai l'identifiant du polygone de la première couche.
Cette affirmation sous entend qu'il n'y aurait même pas besoin de jointure spatiale : un simple jointure attributaire (beaucoup plus rapide) suffirait (à ne faire qu'une fois), et il faudrait ensuite faire les stats sur la couche, par exemple avec l'outil "Statistiques par catégories".
(ou, encore un fois, en SQL très très facilement)
Sylvain M.
Hors ligne
#5 Wed 13 July 2022 13:39
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.X: mise a jour d'un champ via une autre couche
Hello
Ah oui, j'avais zappé l'info de l'identifiant déjà récupéré. Du coup la fonction aggregate seule suffit à faire le job.
Pour la jointure attributaire, je vois pas trop comment elle résout la question (aisément).
Hors ligne
#6 Mon 18 July 2022 10:10
- Elminster
- Participant occasionnel
- Date d'inscription: 9 Jun 2008
- Messages: 47
Re: QGIS 3.X: mise a jour d'un champ via une autre couche
Bonjour Messieurs,
l'option que je cherchais était aggregate et overlay.
je connais un peu le SQL, donc je peux aussi m'en sortir avec ça. Mais comme mes collègues ne le connaissent pas du tout et qu'ils peuvent aussi être amenés à faire ce type de calcul, je cherchais quelque chose d'assez simple pour eux.
et j'ai ma réponse!
Merci beaucoup à tous les deux et bonne journée!
Hors ligne