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 Wed 06 April 2022 15:52

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

QGIS 2.22: Jointure spatiale multiple avec pourcentage

Bonjour à tous,

Je travaille sur un projet QGIS et je souhaiterai faire une jointure spatiale multiple. J'ai une couche qui est une grille dans laquelle je veux intégrer des éléments venant d'un shape. Ce shape contient des information sur le type de forêt.

Je voudrais joindre tous les types de forêts présent dans chacun des polygones de ma grille et avoir leur proportion en pourcentage.
En gros le résultats serait du type : une colonne "forêt 1" avec le nom du type forêt, une colonne "pourcentage foret 1" avec le pourcentage de cette forêt par rapport aux autres types de forêts. Et rajouter autant de colonnes que de types de forêt présente dans le polygone.

Je ne sais pas si c'est possible, je n'ai pas réussi à trouver comment faire ou des informations à ce sujet.

Merci beaucoup pour votre aide

Bonne journée, Hugo

Hors ligne

 

#2 Wed 06 April 2022 18:21

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Bonsoir,
La première étape est d'intersecter la grille avec le SHP des forêts (Menu Vecteur > Outils de géotraitement > Intersection).
Ainsi, pour chaque portion de forêt/grille, vous avez la référence à la grille et le type de forêt.
Ensuite, ce que vous souhaitez faire est un "tableau croisé dynamique".
C'est possible en SQL, ou via des formules depuis QGis, mais par facilité, je fais souvent ce travail dans Excel (ou Calc) en ayant exporté ma table attributaire en XLSX.
Puis, si nécessaire, je réimporte le tableau croisé dans QGis, et je fais une jointure avec la grille d'origine.


Sylvain M.

Hors ligne

 

#3 Fri 08 April 2022 11:10

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Merci beaucoup pour cette réponse, ça me semble être une bonne option, je vais mettre ça en pratique !

Bonne journée
Hugo

Hors ligne

 

#4 Fri 08 April 2022 17:31

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Je re post ici car en fait cette solution ne fonctionne pas, je peux avoir plusieurs types de forêts dans une même grille.
Je veux donc créer une colonne pour chaque type de forêts présent dans la grille. En plus de ça, je voudrais avoir le pourcentage de chaque type de forêt présent dans une grille.

J'avais pensé a découper mon shape des forêts par types de forêts et calculer le pourcentage de recouvrement de chacun de ces types de forêts. Mais cela me donnera plus de 30 shapes différents et donc plus de 30 jointures spatiales aussi. Comme j'ai un très grand nombre de polygones dans ma grille, ce serait beaucoup trop long.

Hors ligne

 

#5 Sat 09 April 2022 18:52

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Bonjour,

Ce que vous pouvez faire :

1/ Découper chaque type de forêt par la grille
2/ Calculer la surface de chaque découpage de type de forêt
3/ Faire une jointure spatiale entre la grille et tous les types de forêt (avec leurs surfaces de découpage)
4/ Au sein de cette jointure spatiale, vous pourrez, pour chaque grille, calculer la surface totale des types de forêt dans un nouveau champ.
5/ Au sein de cette même jointure spatiale, vous pourrez calculer dans de nouveaux champs correspondants le pourcentage de surface de chaque type de forêt par rapport à la somme totale des surfaces des types de forêt contenues dans la chaque grille.

Hors ligne

 

#6 Mon 11 April 2022 10:37

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

conejo a écrit:

Bonjour,

Ce que vous pouvez faire :

1/ Découper chaque type de forêt par la grille
2/ Calculer la surface de chaque découpage de type de forêt
3/ Faire une jointure spatiale entre la grille et tous les types de forêt (avec leurs surfaces de découpage)
4/ Au sein de cette jointure spatiale, vous pourrez, pour chaque grille, calculer la surface totale des types de forêt dans un nouveau champ.
5/ Au sein de cette même jointure spatiale, vous pourrez calculer dans de nouveaux champs correspondants le pourcentage de surface de chaque type de forêt par rapport à la somme totale des surfaces des types de forêt contenues dans la chaque grille.


Oui c'était la seule solution que j'avais mais comme je l'ai expliqué avant cela me fera beaucoup de shapes très lourds et donc cela me prendre énormément de temps. Mais bon je crois que je ne vais pas avoir le choix.

Hors ligne

 

#7 Mon 11 April 2022 11:42

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Bonjour,

cela me fera beaucoup de shapes


je ne vois que 2 shapes...

Hors ligne

 

#8 Mon 11 April 2022 12:20

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

conejo a écrit:

Bonjour,

cela me fera beaucoup de shapes


je ne vois que 2 shapes...


Si je découpe mon shape selon chaque type de forêts, je vais bien me retrouver avec autant de shape que de type de forêt ?

Hors ligne

 

#9 Mon 11 April 2022 13:35

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Si je découpe mon shape selon chaque type de forêts


je ne pense pas que le shape à découper doive être le shape de la grille, mais plutôt celui des forêts. Non?

Hors ligne

 

#10 Mon 11 April 2022 15:09

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

conejo a écrit:

Si je découpe mon shape selon chaque type de forêts


je ne pense pas que le shape à découper doive être le shape de la grille, mais plutôt celui des forêts. Non?


Oui c'est celui des forêt qu'il faut couper mais dans ce shape il y a une colonne "type de forêt" avec plus de 30 types différents. Et dans mes polygones il peut y avoir plusieurs types en même temps.
Si je coupe ce shape selon le type de forêt je vais me retrouver avec plus de 30 shapes si j'ai bien compris la manipulation à faire.

Hors ligne

 

#11 Mon 11 April 2022 15:54

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Il faudrait calculer par grille la somme des surfaces intersectées.
Ce que tu pourrais faire :

1/ Découper chaque type de forêt par la grille

2/ Calculer la surface de chaque découpage de type de forêt
3/ Faire une jointure spatiale entre la grille et tous les types de forêt (avec leurs surfaces de découpage), ce qui donnerait en gros ceci :
GRILLE            Type forêt        surface
    A                        1             5000 m2
    A                        2             2500 m²
    A                        3             2500 m²
4/ Regrouper les grilles selon le nom de la grille et en calculant la somme du champ surface. Ce qui donnerait ceci :
GRILLE            Type forêt        surface             Total surface
    A                        1             5000 m²           10000 m²
    A                        2             2500 m²           10000 m²
    A                        3             2500 m²           10000 m²
5/ Créer un nouveau champ qui calculerait la surface du type de forêt dans chaque grille
GRILLE            Type forêt        surface             Total surface        Pourcentage
    A                        1             5000 m²           10000 m²                   50% (5000/10000*100)
    A                        2             2500 m²           10000 m²                   25%
    A                        3             2500 m²           10000 m²                   25%

Hors ligne

 

#12 Mon 11 April 2022 17:56

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Je re post ici car en fait cette solution ne fonctionne pas, je peux avoir plusieurs types de forêts dans une même grille.


C'est bien ce que j'avais compris, et donc le tableau croisé dynamique (TCD) répond à 100 % à cette tache d'analyse, une fois découpé la couche des forêts (avec le champ type), par la couche des mailles.
Dans Excel, un TCD avec en lignes, les identifiants de mailles, et en colonnes, les  types de forêts, et en valeurs, la surface (que l'ont peut alors convertir en pourcentage via une formule simple (surface du type / surface totale forêt maille).

Dernière modification par Sylvain M. (Mon 11 April 2022 17:57)


Sylvain M.

Hors ligne

 

#13 Tue 12 April 2022 10:13

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

La méthode de Sylvain M. est la bonne. Si l'on veut avoir le pourcentage par type de forêt dans un champ correspondant, il faut passer par un TCD (type 1 = un champ, type 2 = un autre champ...).

Hors ligne

 

#14 Tue 12 April 2022 12:03

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Sinon, si vous voulez rester dans QGis, on peut le faire facilement en SQL à partir de la couche de forêts découpées par la grille.

Ça donnerait quelque chose de ce genre là :

SELECT    id_maille,
        sum(CASE WHEN type = "forêt 1" THEN st_area(geometry) ELSE 0 END) as surf_foret_1,
        sum(CASE WHEN type = "forêt 2" THEN st_area(geometry) ELSE 0 END) as surf_foret_2,
        sum(CASE WHEN type = "forêt 3" THEN st_area(geometry) ELSE 0 END) as surf_foret_3,
        ...
        sum(st_area(geometry)) as surf_forets_tous_types
FROM    foret_decoup_grille
GROUP BY id_maille;


Sylvain M.

Hors ligne

 

#15 Tue 12 April 2022 12:17

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1668

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Super!

Hors ligne

 

#16 Tue 12 April 2022 17:12

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Sylvain M. a écrit:

C'est bien ce que j'avais compris


Je suis désolé, en effet tout était bon depuis le début ! J'avais fais un mauvais paramétrage avec mon intersect au départ qui ne m'affichait pas tout mes types de forêts. Maintenant c'est bon j'obtiens bien un shape coupé selon mes types de forêts sur lequel j'ai pu calculer mes surface et mon pourcentage.

Merci beaucoup pour cette solution !
Et merci aussi à Conejo pour ton aide.

Hors ligne

 

#17 Tue 12 April 2022 21:32

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 995

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Parfait smile
Si vous avez le temps un de ces jours, regardez aussi la solution SQL : c'est super puissant et ça évite d'avoir à sortir de QGis wink


Sylvain M.

Hors ligne

 

#18 Wed 13 April 2022 14:11

Hugo 78
Participant occasionnel
Date d'inscription: 6 Apr 2022
Messages: 19

Re: QGIS 2.22: Jointure spatiale multiple avec pourcentage

Sylvain M. a écrit:

Si vous avez le temps un de ces jours, regardez aussi la solution SQL : c'est super puissant et ça évite d'avoir à sortir de QGis wink


Oui il faudra que je m'y mette un jour depuis le temps qu'on me le dit ! Finalement j'ai importé mon shape sous r pour la suite mais le SQL m'éviterai bien des manipulations

Hors ligne

 

Pied de page des forums

Powered by FluxBB