Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 smile

En dernier complément :

Elminster a écrit:

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

 

Pied de page des forums

Powered by FluxBB