8 Exemple d’application : créer un maillage

L’idée est ici d’aller un peu plus loin et d’appliquer différents outils vus précédemment pour un exemple concret : créer un maillage de la surface en vigne sur la France métropolitaine.

Nous partirons des données Corine Land Cover (CLC) d’occupation du sol 2000, déjà filtrées pour ne garder que les données correspondant au vignoble.

Données utilisées (pas la peine de les télécharger !) :

  • CLC00_221_FR_RGF : données d’occupation du sol Corine Land Cover France métropolitaine 2000, ces données ont été filtrées pour ne garder que les vignes
  • ne_50m_admin_0_countries : Limites administratives de pays Natural Earth

8.1 Principe

Nos données de départ sont des polygones correspondant à des vignes, sur la France métropolitaine :

Données de départ : CLC vignes
Données de départ : CLC vignes

Pour créer un maillage de la surface en vignes, nous passerons par 3 étapes :

  1. Créer une grille sur l’emprise de la couche de départ, avec une taille de maille définie, par exemple 50 km
  2. Réaliser une union entre la couche d’occupation du sol et la grille, pour découper les données par les cases de la grille
  3. Agréger les données par maille, en calculant pour chaque maille la surface totale en vignes

Le résultat sera donc une représentation “maillée” des données de départ :

Résultat : maillage des données de départ
Résultat : maillage des données de départ

8.2 Créer une grille

Première étape : créer une grille. Elle devra avoir la même emprise que la couche de départ, et pour que les temps de calcul soient raisonnables nous utiliserons une taille de maille de 50 km.

Ouvrez un nouveau projet QGIS, chargez la couche shapefile CLC00_221_FR_RGF située dans le dossier 8_maillage (données déjà filtrées pour ne garder que les vignes).

Vous pouvez également chargez la couche de pays ne_50m_admin_0_countries qui nous aidera à nous repérer.

Pour comprendre les données CLC, ouvrez la table attributaire, qui comporte 3 champs :

  • CODE_00 correspond au type d’occupation du sol

Pour connaître la signification des codes, lisez la documentation des données CLC (fichier de nomenclature).

  • AREA_HA correspond à la surface en hectares (1 ha = 10 000 m²)
  • et ID est un champ d’identifiant unique

Quel est le SCR de cette couche ?

Laissons de côté ces données pour le moment, et créons la grille. Pour cela, ouvrez la boîte à outils et faites une recherche sur le mot grille.

Double-cliquez sur l’outil Créer une grille dans la rubrique Création de vecteurs :

Fenêtre de l’outil de création de grilles
Fenêtre de l’outil de création de grilles
  • Type de grille : choisir rectangle (et notez au passage qu’on peut également créer des mailles hexagonales)
  • Étendue de la grille : cliquez sur le bouton tout à droite > Calculer depuis la couche > CLC00_221_FR_RGF
  • Espacement horizontal et vertical : puisque nous voulons une taille de maille de 50 km et que nos données sont dans un SCR projeté, donc en mètres, tapez 50 000 pour ces 2 paramètres
  • Grille : vous pouvez soit laisser la valeur par défaut et créer une couche temporaire, soit cliquer sur le bouton à droite pour spécifier l’emplacement et le nom de la grille qui sera créée > Enregistrer vers un fichier ou dans un GeoPackage, en la nommant par exemple grille_CLC_50km

Cliquez sur Exécuter : la grille est automatiquement ajoutée à QGIS.

Ouvrez la table attributaire de la grille : la table comporte un champ d’identifiant unique, et 4 champs correspondant aux coordonnées minimales et maximales de chaque case. Les cases sont numérotées de haut en bas et de gauche à droite.

Notre but est maintenant de récupérer pour chaque case la surface en vigne correspondante. Et pour cela, l’union fait la force ! (et l’agrégation aussi).

8.3 Union !

Qu’est-ce que l’union ? Il s’agit d’une opération du même type que l’intersection, mettant en jeu 2 couches. A la différence de l’intersection où seules les parties communes aux 2 couches sont gardées, on récupère après une union les parties communes mais aussi les parties présentes dans une seule des couches.

La couche résultat est une couche « à plat », sans superposition.

Principe d’une union illustré en 3 images (les 2 couches de départ puis le résultat)
Principe d’une union illustré en 3 images (les 2 couches de départ puis le résultat)

Notre but sera ici de faire une union entre la grille et les données CLC sur la vigne.

Comme d’habitude, pour trouver l’outil adéquat, utilisez la barre de recherche de la boîte à outils avec le mot union. Double-cliquez ensuite sur Union dans la rubrique Recouvrement de vecteur :

Fenêtre de l’outil d’union
Fenêtre de l’outil d’union
  • Couche source et couche de superposition : choisissez grille_CLC_50km et CLC00_221_FR_RGF. Il est possible de choisir l’une ou l’autre des couches en premier, seul l’ordre des champs changera dans la table attributaire.
  • Union : créez une couche temporaire, ou bien sauvegardez le résultat en le nommant par exemple union_grille50km_CLC.

Exécuter, patientez…

Vous pouvez vérifiez dans le résultat que l’union a bien été exécutée, les vignobles ayant été découpés selon les cases de la grille.

Résultat de l’union (extrait de carte avec un polygone sélectionné, on voir que le polygone est découpé selon une maille)
Résultat de l’union (extrait de carte avec un polygone sélectionné, on voir que le polygone est découpé selon une maille)

Ouvrez la table attributaire : les champs des 2 couches en entrée sont présents.

8.4 Recalcul de la surface

Notre but étant de calculer la surface en vigne par maille, nous allons mettre à jour le champ AREA_HA. En effet, les valeurs contenues dans ce champ correspondent à la surface des polygones avant découpage et ne sont donc pas à jour.

Il faut donc recalculer la surface de chaque polygone, et mettre une surface nulle pour les polygones ne correspondant pas à la vigne. Ces polygones étaient présents uniquement dans la couche de grille, ils n’ont donc pas reçu d’attributs de la couche de vignes : les champs ID_2, CODE_00 et AREA_HA ont une valeur nulle pour les polygones hors vignes.

Il serait possible de sauter cette étape et de recalculer la surface à partir de l’outil d’agrégation. Mais pour plus de clarté nous séparerons les 2 étapes !

Passez en mode édition pour la couche d’union, et ouvrez la calculatrice de champ à partir de la table attributaire :

Fenêtre de la calculatrice de champ, paramétrée pour calculer la surface des entités dans le champ existant AREA_HA
Fenêtre de la calculatrice de champ, paramétrée pour calculer la surface des entités dans le champ existant AREA_HA
  • Vérifiez que la case Ne mettre à jour que les entités sélectionnées tout en haut soit décochée (elle est désactivée si aucune entité n’est sélectionnée)
  • Cochez la case Mise à jour d’un champ existant en haut à droite…
  • et choisissez le champ en question dans la liste en-dessous : AREA_HA
  • Nous allons utiliser une fonction conditionnelle pour ne calculer la surface que pour les polygones de vignes, c’est-à-dire dont la valeur pour le champ AREA_HA n’est pas nulle. Nous utiliserons donc la fonction if (rubrique Conditions) dont vous pouvez lire l’aide.
  • L’expression est donc la suivante : if("ID_2" is not null, $area/10000, 0). Cela signifie que si le champ ID_2 n’a pas de valeur nulle, il sera recalculé selon l’expression $area/10000, c’est-à-dire la surface en hectares, et sinon il prendra la valeur zéro.

Cliquez sur OK, vérifiez le résultat en testant sur quelques polygones, et quittez le mode édition en enregistrant les modifications.

Il ne nous reste plus qu’à agréger cette surface par maille !

8.5 Agrégation des données par maille

Cette opération consiste à additionner les surfaces en vignes par maille pour récupérer la surface totale en vigne pour chaque maille. La couche résultat aura donc la même géométrie que la grille, mais avec en attribut pour chaque case la surface en vigne.

Pour le logiciel, cette opération correspond à fusionner toutes les entités ayant la même valeur pour le champ id (identifiant de la maille) en récupérant pour les entités fusionnées la somme des valeurs du champ AREA_HA (surface en vignes).

L’outil permettant cela se nomme Agrégation, il est accessible dans la boîte à outils, rubrique Géométrie vectorielle :

Fenêtre de l’outil d’agrégation
Fenêtre de l’outil d’agrégation
  • Couche source : votre couche d’union
  • Grouper par expression : les entités ayant la même valeur pour le champ choisi ici seront fusionnées, choisir le champ id correspondant à l’identifiant unique des cases de la grille
  • Agrégats : on peut définir dans cette partie quels champs garder, et pour ceux-ci quelle fonction d’agrégation utiliser. On peut par exemple :
    • supprimer les champs left, top, right, bottom issus de la grille, et ID_2 et CODE_00 issus de la couche CLC, puisqu’ils ne nous seront pas utiles
    • garder le champ id (identifiant de la grille), avec la fonction d’agrégation first value : l’entité fusionnée aura la première valeur rencontrée pour ce champ (sachant que de toute manière toutes les valeurs seront égales puisqu’on fusionne selon ce champ)
    • garder le champ AREA_HA puisque c’est notre but, avec la fonction d’agrégation sum pour faire la somme de toutes les valeurs rencontrées pour une même case. Au passage, on en profite pour le renommer VIGNE_HA (colonne Nom) et en faire un champ de type entier, puisque les virgules à cette échelle n’auront pas vraiment de sens.
  • Agrégé : comme d’habitude, créez au choix une couche temporaire ou bien sauvegardez le résultat

Exécuter, patientez… et vérifiez le résultat dans la table attributaire.

La couche a la même géométrie que notre grille, avec un champ supplémentaire indiquant pour chaque case la surface en vignes correspondante.

Selon que votre couche est au format GeoPackage ou non, un champ fid sera présent ou non.

En modifiant le style de cette couche, on peut avoir un aperçu de la répartition des vignes en France, par exemple avec un style gradué et 7 classes selon une discrétisation de Jenks , et en filtrant pour ne garder que les valeurs différentes de zéro.

résultat du maillage avec un extrait de carte, du violet clair au violet foncé
résultat du maillage avec un extrait de carte, du violet clair au violet foncé

Bien sûr, le résultat serait différent avec une autre taille de maille. La répartition n’est pas la même selon l’échelle à laquelle on travaille.

Il est possible d’arriver au même résultat en n’utilisant non plus les outils de QGIS mais des requêtes SQL. C’est une autre logique qui nécessitera un apprentissage si vous ne connaissez pas déjà le langage SQL, mais l’avantage est que vous pourrez très rapidement relancer tout le processus (par exemple pour tester avec différentes tailles de maille).

En terme de reproductibilité, c’est une meilleure solution !