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

GEODATA DAYS 2024

#1 Fri 21 June 2024 13:22

S.ar
Juste Inscrit !
Date d'inscription: 20 Jun 2023
Messages: 2

QGIS: Calcul de N surfaces dans un polygone

Bonjour

Cela fait un moment que je travaille sur QGIS, pour autant je me considère toujours comme débutant.
Je cherche à calculer l'aire de plusieurs polygones s'entre chevauchant; dans mon cas, il s'agit de calculer le coefficient d'occupation des sols (OCS-GE) par parcelle et à le traduire en pourcentage dans la table attributaire, par exemple parcelle A001 (20% de sylviculture, 10% agriculture ect...).

Je reconnais être un peu perdu quant à la démarche à suivre, existe t'il un outil pour calculer ce genre de requête ? Ou peut être une méthode par le modeleur ?

Merci d'avance pour vos retours ! smile

Hors ligne

 

#2 Thu 27 June 2024 23:45

ilian_mas
Juste Inscrit !
Date d'inscription: 27 Jun 2024
Messages: 1

Re: QGIS: Calcul de N surfaces dans un polygone

Bonjour S.ar,

Il est possible de réaliser ça en utilisant exclusivement les algorithmes proposés dans la boite à outil "classique" de qgis; cependant c'est surement plus efficace de passer par du SQL!

Pour cela, il faut deux couches en entrée; une première couche polygonale ayant pour entités des emprises d'occupation du sol (comprenant dans leur table attributaire un code correspondant au type d'occupation du sol décrit = "typ_occup"), la seconde couche étant celles des parcelles (comprenant dans leur table attributaire un ID ="id_parcelle" et un champ correspondant à leur surface totale "surf_parcelle").

Pour cela, 5 étapes :

1. Intersection
Couche source : la couche d'occupation
Couche de superposition : les parcelles.
On découpe ici les entités d'occupation du sol selon les limites des parcelles.

2. Regrouper.
Couche source : résultat de l'étape 1.
Champs de regroupement : "id_parcelle", "typ_occup"
Le résultat correspond à des entités regroupées par commune et par type d'occupation, donc le nombre d'entités est égal à la somme des types d'occupation du sol pour chaque parcelle étudiée.

3. Calculatrice de champ.
Couche source : résultat de l'étape 2.
nom du champ : "surf"
Type / Longueur / précision : comme ça vous arrange (décimal a priori)
Formule : $area (divisé selon l'unité de mesure souhaitée si différente des m²)
On mesure ici la surface de chacune des nouvelles entités regroupant d'occupation du sol découpées selon les limites des parcelles.
La table en résultat est "longue", on souhaite la pivoter en large en ayant autant d'entités qu'il y a de parcelles.

4. Agrégation
Couche source : résultat étape 3
Grouper par expression "id_parcelle"
La liste des champs dans le tableau agrégats doit comprendre :
-Expression source : id_parcelle - Fonction d'agrégation : first value - Nom : id_parcelle
-Expression source : surf_parcelle - Fonction d'agrégation : first value - Nom : surf_parcelle
-Expression source : surf - Fonction d'agrégation : sum - Nom : surf_totale_occupation_sol
-Expression source : if ("typ_occup" = 'agriculture', "surf", 0) - Fonction d'agrégation : sum - Nom : surf_agriculture - Bien préciser le type et la longueur
-Expression source : if ("typ_occup" = 'agriculture', ("surf" / "surf_parcelle")*100, 0) - Fonction d'agrégation : sum - Nom : part_agriculture - Bien préciser le type et la longueur
-Expression source : if ("typ_occup" = 'sylviculture', "surf", 0) - Fonction d'agrégation : sum - Nom : surf_sylviculture- Bien préciser le type et la longueur
-Expression source : if ("typ_occup" = 'sylviculture', ("surf" / "surf_parcelle")*100, 0) - Fonction d'agrégation : sum - Nom : part_sylviculture- Bien préciser le type et la longueur
etc.

5. Jointure par valeur de champ
Couche source: couche des parcelles de base
Champ de la table : "parcelle_id"
Couche  en entrée 2 : résultat de l'étape 4
Champ de la table 2 : "parcelle_id"
Jointure un à un
Ici on rebascule le résultat "tabulaire" de l'étape 4 vers les entités géométriques/géographiques des parcelles, pour ensuite pouvoir exploiter ces valeurs.

On aboutit donc à une couche de résultat dont les entités sont les parcelles, avec une table attributaire comprenant :
-l'ID de la parcelle
-la surface totale de la parcelle
-la surface totale occupée par les
-la surface du type 1 d'occupation du sol (ex: agriculture)
-le pourcentage occupé par le type 1 sur la parcelle
-la surface du type 2 d'occupation du sol (ex:sylviculture)
-le pourcentage de sylviculture par rapport à la surface totale)
-etc.

Par ailleurs ces 5 algorithmes sont bien sur disponibles dans le modeleur graphique.

N'hésitez pas si ça n'est pas clair!

Hors ligne

 

#3 Sat 29 June 2024 10:29

S.ar
Juste Inscrit !
Date d'inscription: 20 Jun 2023
Messages: 2

Re: QGIS: Calcul de N surfaces dans un polygone

Bonjour ilian_mas,

Je vous remercie sincèrement, d'avoir pris le temps de me répondre d'une manière aussi complète et pédagogue !

Je vais essayer d'appliquer votre méthodologie.

Encore merci !

Hors ligne

 

#4 Mon 01 July 2024 13:54

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3862

Re: QGIS: Calcul de N surfaces dans un polygone

Bonjour,
Dans la boîte à outils du menu Traitement, il y a cet algorithme Analyse de superposition qui pourrait vous intéresser. Il me semble qu'il fait tous les calculs pour vous. Il faudra certainement découper la couche OCS au préalable selon le champ de "type d'occupation" à l'aide de l'algorithme Séparer une couche vecteur et utiliser les couches résultantes pour la superposition.

Hors ligne

 

Pied de page des forums

Powered by FluxBB