Tutoriel : Calcul du pourcentage de l'occupation des sols par sous-bassin

Site: Open Courseware for GIS
Cours: QGIS et Applications en Hydrologie
Livre: Tutoriel : Calcul du pourcentage de l'occupation des sols par sous-bassin
Imprimé par: Guest user
Date: jeudi 17 juin 2021, 02:34

1. Introduction

Pour les études sur l'hydrologie des bassins versants, il est souvent important de connaître le pourcentage de l'occupation des sols par sous-bassin.





1.1. Théorie des outils de superposition de vecteurs

Dans cette leçon, nous utiliserons quelques outils de superposition de vecteurs.

Regardez cette vidéo pour apprendre les concepts.

 


2. Préparation de la couche des sous-bassins versants

Nous allons commencer par un nouveau projet QGIS.

1. Téléchargez le shapefile  polygone_bassins.shp et ajoutez-le à un projet QGIS vide.

2. Ouvrez la table d'attributs de la couche polygone_bassins.

Cette couche a été calculée en utilisant l'approche de délimitation des bassins versants de la leçon 4. Le résultat est que chaque sous-bassin a une valeur de 100. Pour notre objectif, cependant, chaque sous-bassin a besoin d'un identifiant unique.

3. Basculez en mode d'édition en utilisant le bouton Toggle editing button

4. Dans la Calculatrice de champ, formuler l'équation  DN = $id et cliquer sur Mettre à jour tout. Cliquez sur le bouton Save layer editspour enregistrer les modifications de la couche.



La fonction $id attribue un identifiant unique à chaque entité dans la table d'attributs.

Nous devons maintenant ajouter un attribut avec la surface pour chaque polygone de sous-bassin.

5. Cliquez sur le bouton add new fieldpour ajouter une colonne dans la table d'attributs.

6. Appelez le nouveau champ SurfBassin, indiquez qu'il contient un Nombre décimal (réel) avec une  Longueur de  10 chiffres et une Précision de 2 décimales. Cliquez sur OK pour créer la colonne.

ajout-champ-sousbassin


7. Dans la Calculatrice de champs, formulez l'équation SurfBassin = $area et cliquez sur Tout mettre à jour.

La table d'attributs contient maintenant les identifiants et les surfaces uniques de chaque sous-bassin.

calcule_surface_bbassins

8. Cliquez sur le bouton  Toggle editing button pour enregistrer les modifications et basculer hors mode d'édition.

Nous devons maintenant préparer les données d'occupation des sols.

3. Préparation des données de l'occupation des sols

Nous devons maintenant préparer les données relatives à I' occupation des sols, qui se composent des étapes suivantes que vous allez suivre dans les sections suivantes :

  • Télécharger les données CORINE 2018
  • Définir le style de la couche de l'occupation des sols
  • Découper et reprojeter la couche de l'occupation des sols
  • Agréger les classes de l'occupation des sols
  • Regrouper les entités de la couverture terrestre

3.1. Téléchargement des données CORINE 2018

Dans le chapitre précédent, nous avons utilisé les données du WMS CORINE 2012. Pour les calculs, cependant, nous ne pouvons pas utiliser les images issues de WMS, nous avons besoin d'accéder aux données. Les données CORINE 2018 peuvent être téléchargées sur Internet.

1. Ouvrez votre navigateur et allez sur https://land.copernicus.eu/pan-european/corine-land-cover.

2. Cliquez sur CLC 2018.

Vous verrez une carte en ligne avec un aperçu de la couche.

3. Cliquez sur l'onglet Download (c-à-d Télécharger).

4. Pour télécharger les données, vous devez disposer d'un compte. Cliquez sur le lien pour vous inscrire.

Une fois connecté, vous pouvez choisir parmi différents formats de données.

corine-data-download

Nous utiliserons ici le format GeoPackage, car nous avons besoin de données vectorielles.

5. Cochez la case précédant le format GeoPackage.

6. Cliquez sur le bouton Download pour télécharger.

Le fichier est de 3,5 Go. Si vous disposez d'une faible bande passante, vous pouvez également télécharger un sous-ensemble de l'ensemble de données à partir des supports de cours à la page principale des leçons.

7. Décompressez le contenu dans un nouveau dossier que vous utiliserez pour cet exercice.

8. Faites glisser la couche GeoPackage U2018_CLC2018_V2020_20u1 sur le Canevas de la Carte.

9. Dans le popup de Select Transformation cliquez simplement sur OK pour utiliser l'équation de transformation par défaut.

10. Rendez les polygones de la couche polygone_bassins transparents avec un contour noir et une largeur de trait de 0.66 mm et assurez-vous qu'ils se trouvent au-dessus de la couche d'occupation des sols.

3.2. Définir le style de la carte de l'occupation des sols CORINE 2018

Nous allons maintenant définir le style de la carte de l'occupation des sols CORINE 2018 Land Cover. Dans le ensemble de données téléchargées, vous trouverez un dossier Legend. Ce dossier contient des fichiers de légende dans différents formats. Nous utiliserons ici le fichier clc_legend.qml, un fichier de style de couche QGIS.


1. Faites un clic droit sur la couche de l'occupation des sols et choisissez Propriétés. Allez dans l'onglet Symbologie.

2. Au bas de la boîte de dialogue, allez à Style | Charger le style.

charger le style

3. Vous êtes maintenant dans la boite de dialogue du Gestionnaire des styles. Naviguez jusqu'au fichier legend\clc_legend.qml et cliquez sur Charger le style.

Gestionnaire des styles

La légende est maintenant appliquée avec les bons paramètres à la couche d'occupation des sols.

corine style couche

4. Cliquez sur OK pour accepter et revenir à au canevas de la carte.

3.3. Découper et reprojeter la carte de l'occupation des sols

La couche de couverture terrestre est encore trop large (même si vous avez téléchargé le sous-ensemble fourni), nous allons donc préparer un sous-ensemble qui ne couvre que les sous-bassins. En outre, nous allons également reprojeter la couche de l'occupation des sols (EPSG : 3035) selon la même projection que la couche polygone_bassins (EPSG:32632). Les deux opérations peuvent être réalisées avec un seul outil.

1. Faites un clic droit sur la couche U2018_CLC2018_V2020_20u1 et choisissez Exporter | Sauvegarder les entités sous.

2. Choisissez comme Format GeoPackage, tapez pour le Nom de la couche Corine2018_repr et pour le SCR le SCR du projet (EPSG:32632).

3. Cochez la case avant Emprise et cliquez sur Calculer à depuis de la couche et choisissez  polygone_bassins. Cliquez sur OK.

Enregistrer la cocuche vectorielle sous

4. Copiez le style de la couche U2018_CLC2018_V2020_20u1 sur la couche Corine2018_repr et supprimez la couche U2018_CLC2018_V2020_20u1.

Le résultat devrait être comme suit :


3.4. Agréger les classes d'occupation des sols

CORINE a différents niveaux de classes de couverture du sol. Les données CORINE que nous avons sont des données dites de niveau 3. Dans la table des attributs, le champ code_18 a des valeurs pour le niveau 3, indiquées par 3 chiffres. Dans cette section, nous allons agréger la classification détaillée de niveau 3 au niveau 1. Nous devons donc créer un nouveau champ avec seulement le premier chiffre pour chaque caractéristique.

1. Ouvrez la table des attributs de la couche Corine2018_repr et passez en mode édition.

2. Ajouter un nouveau champ. Donnez à l'attribut le Nom Niveau1, choisissez pour le Type le Nombre entier (entier).

Ajouter un champ niveau1

3. Utilisez le bouton field-calculator-button.png pour ouvrir le Calculateur d'Expressions.


Nous allons écrire une expression qui recode toutes les classes de niveau 3 au niveau 1.

4. Écrivez l'expression comme indiqué dans la figure ci-dessous.

La fonction left renvoie un extrait de chaîne de caractères contenant les n caractères les plus à gauche de la chaîne initiale. Ici, nous avons besoin du premier caractère, donc nous choisissons 1 pour la longueur. Nous utilisons la fonction to_int pour convertir la chaîne de caractères en nombre entier.

Calculateur d'Expressions

5. Mettez à jour le champ Niveau1.

La table d'attributs devrait maintenant ressembler à ceci :


6. Désactivez le mode d'édition et enregistrez les modifications.

3.5. Regrouper les entités de la couverture terrestre

Maintenant, il y a beaucoup de polygones contigus avec la même classe de niveau 1. Ils doivent être fusionnés en une seule entité. Ceci est fait avec l'opération de regroupement via l'outil Regrouper.

1. Dans le menu principal, allez à Vecteur | Outils de géotraitement | Regrouper.

2. Dans la boite de dialogue Regrouper, choisissez corine2018_repr comme Couche d'entrée et sélectionnez  le champ Niveau1 comme Couche regroupée. Enregistrez le fichier sous le nom corine2018_regroup et cliquez sur Exécuter.

regrouper-level1

3. Cliquez sur Fermer pour revenir au Canevas de la carte lorsque le calcul est terminé.

4. Ouvrez la table d'attributs de corine2018_regroup pour vérifier le résultat. Elle ne devrait maintenant montrer que 5 entités avec les classes de niveau 1 de 1 à 5. Notez que vous pouvez cliquer sur le nom du champ pour trier les entités.

attribute-table-corine-apres-regroup

5. Supprimez corine2018_repr du Panneau des couches et définissez le style de la couche corine2018_regroup avec des couleurs basées sur la légende originale de CORINE niveau 3.


4. Intersection de la couche de l'occupation des sols avec la couche du sous-bassin

Maintenant que nous avons préparé les couches polygonales de l'occupation des sols et des sous-bassins, l'étape suivante consiste à intersecter les deux couches pour ajouter les limites des sous-bassins à la carte de l'occupation des sols.

1. Dans le menu principal, allez à Vecteur | Outils de géo-traitement | Intersection.

menu_intersection

2. Choisissez la couche corine2018_regroup comme Couche d'entrée, choisissez polygone_bassins comme Couche de superposition. Choisissez corine_bassins_intersect.shp comme nom de fichier de sortie et cliquez sur Exécuter.

intersect-corine-bassins

Vous verrez l'erreur suivante:

invalid-geometrie-erreur

Ceci est lié aux erreurs de géométrie qui peuvent se produire dans le processus de délimitation des bassins versants où nous polygonisons une trame.


L'erreur peut être corrigée.

3. Dans la Boîte à outils de traitement, recherchez l'outil "Réparer les géométries".


4. Dans la boîte de dialogue Réparer les géométries, choisissez polygone_bassins comme Couche source et choisissez polygone_bassins_corrig.shp comme nom de fichier de sortie et cliquez sur Exécuter.

5. Cliquez sur Fermer une fois le traitement terminé.

6. Copiez le style de la couche polygone_bassins dans la couche polygone_bassins_corrig et supprimez la couche polygone_bassins.

7. Répétez les étapes 1 et 2 et appelez le nom de fichier de sortie de la couche d'intersection corine_bassins_intersect_cor.shp

8. Définissez le style de la couche corine_bassins_intersect_cor en copiant le style précédemment définie de la couche  corine2018_regroup. Vérifiez le résultat de l'intersection.

9. Supprimez la couche corine2018_regroup du Panneau des couches.

5. Calculer la superficie de la classe d'occupation des sols par sous-bassin

Nous devons maintenant calculer la superficie de la classe CORINE niveau 1 par sous-bassin.

1. Ouvrez la table des attributs de la couche corine_bassins_intersect_cor.

Dans la table d'attributs, nous pouvons trouver le champ SurfBassin avec la superficie de chaque sous-bassin, le champ DN avec l'ID unique de chaque sous-bassin, et le champ Niveau1 avec la classe CORINE de niveau 1 pour chaque entité.

Nous allons ajouter un nouveau champ et calculer la superficie de chaque entité qui correspond à la superficie de chaque classe de niveau 1 dans un sous-bassin, de la même manière que nous l'avons fait précédemment pour les sous-bassins.

2. Basculez en mode édition.

3. Ajouter un champ SurfClass avec comme Type, Nombre décimal (réel), une Longueur 10, et Précision 2.

4. Utilisez la Calculatrice de champ pour calculer SurfClass = $area et cliquez sur Tout mettre à jour.

5. Ajoutez maintenant un champ pour le pourcentage de chaque classe CORINE niveau 1 dans chaque sous-bassin. Appelez le champ Pourcentage avec le Type ; Nombre décimal (réel), Longueur 4, et Précision 1.

6. Utilisez le calculateur de champ pour calculer le pourcentage comme suit: Pourcentage = (SurfClass/SurfBassin) * 100. Vous pouvez utiliser le Calculateur d'expression pour formuler l'équation.

7. Cliquez sur Tout mettre à jour pour attribuer le pourcentage à chaque entité.

8. Pour compléter la table des attributs, ajoutez un champ avec les noms correspondant aux classes de niveau 1 sous forme de texte. Appelez-le OccupSol. Utilisez la fonction CASE...WHEN (c-à-d Cas ..... quand) pour cela.

case-when

Cette fonction vous permet de rédiger des conditions. Cela signifie par exemple : si l'attribut " Niveau1" est égal à la valeur 1, le résultat est la chaîne de caractères "Surfaces artificielles", etc.

9. Enregistrer les modifications et sortez du mode d'édition.


La table des attributs devrait maintenant ressembler à ceci :

attribute-table-pourcentage-complete

6. Créer des diagrammes circulaires à l'aide du plugin Data Plotly

Maintenant que nous avons le pourcentage de l'occupation des sols pour chaque sous-bassin, nous pouvons créer des diagrammes circulaires. Une façon de le faire est de copier les colonnes et de les coller dans un logiciel de tableur pour un traitement plus avancé. Une autre façon est d'utiliser l'extension Data Plotly, que nous utiliserons ici.

1. Installez l'extension Data Plotly à partir du gestionnaire des extension : Extension | Installer/Gérer les extensions.

Nous allons créer un graphique circulaire pour chaque sous-bassin. Nous avons précédemment attribué un identifiant unique à chaque sous-bassin dans le champ DN.

2.Dans la table des attributs de la couche corine_bassin_intersect_cor sélectionnez toutes les entités avec DN = 0. Vous pouvez utiliser la fonction Sélectionner les entités en utilisant une expression en cliquant sur le bouton select-features-by-expression-button.png. Vous pouvez également trier la table d'attributs sur DN et utiliser le bouton Ctrl pour sélectionner plusieurs entités avec DN = 0 .


3. Cliquez sur le bouton Data Plotly dataplotly-button.pngpour ouvrir le panneau Data Plotly.

4. Pour le Type de graphique, choisissez Pie Chart (c-à-d Diagramme circulaire). Sous Paramètres du diagramme, choisissez la couche corine_bassin_intersect_cor, cochez la case devant Utiliser seulement les entités sélectionnées, pour le Champ de Groupement, choisissez OccupSol, et pour le Champ Y, choisissez Pourcentage .

5.Cliquez sur le bouton dataplotly-legend-settings-button.png  pour définir les propriétés de la légende.

dataplotly-legend-settings-dialog

6. Cliquez sur le bouton "Créer le graphique" et vérifiez le résultat.

7. Avec le bouton Exporter (image) dataplotly-export-as-image-button.png vous pouvez exporter le graphique vers un fichier .png.

Le résultat devrait ressembler à ceci :

dataplotly-graphe

Vous pouvez répéter cela pour les autres sous-bassins versants.

7. Conclusions

Dans cette leçon, vous avez appris à :

  • Ajouter des valeurs uniques aux couches vectorielles
  • Calculer les surfaces des polygones dans les tables d'attributs
  • Définir le style d'une couche vectorielle à l'aide d'un fichier .qml
  • Découper, reprojeter et exporter des couches vectorielles vers un autre format
  • Utiliser les conditions dans la Calculatrice de champs
  • Appliquer les Outils de géotraitement des vecteurs tels que le regroupement, l'intersection et le tampon
  • Corriger les erreurs de géométrie
  • Créer des diagrammes circulaires à l'aide de l'extension DataPlotly
  • Vous pouvez regarder cette vidéo pour suivre la procédure complète de réalisation de ce tutoriel: