Auteur : Paul Passy

Licence : cc_by_nc_sa

Travailler sur les géométries vecteur

Dans ce chapitre vous trouverez quelques outils dédiés à la manipulation des géométries des couches vectorielles, comme les sélections spatiales, les géotraitements ou d’autres manipulations géométriques utiles.

Erreurs de géométries

Il arrive que les fichiers de polygones vecteurs contenant beaucoup d’entités et présentant des tailles très variées contiennent des erreurs de géométries. C’est souvent le cas des couches de polygones obtenues par polygonisation, ou vectorisation, d’une couche raster (cf Raster vers vecteur). Ces erreurs sont généralement décelées lors du plantage d’un géotraitement ultérieur faisant appel à la couche en question comme une intersection ou une différence. Ces erreurs ne sont pas vraiment des erreurs dans la géométrie, il ne s’agît pas de trous ou de décalage mais plutôt des erreurs dans la définition informatique de certains nœuds des polygones. Lors d’un plantage avec le message d’erreur suivant L'entité (1) de “ma couche vecteur” a une géométrie non valide. cela signifie que la couche mentionnée dans le message a un souci de géométrie.

Vérifier la géométrie

Il est possible d’extraire les nœuds qui posent problème via le menu Vérifier la validité qui se trouve dans la Boîte à outils de traitements ‣ Géométrie vectorielle ‣ Vérifier la validité. Une fois ce menu ouvert la fenêtre suivante apparaît (Fig. 211).

alternate text

Fig. 208 Vérification de la validité des géométries dans QGIS.

Dans le champ Couche source nous indiquons la couche à vérifier. Dans le panneau Méthode nous cochons simplement la méthode GEOS. C’est en effet la méthode de vérification la plus pointilleuse et donc celle qui décèlera vraiment les erreurs. Enfin nous pouvons laisser les autres champs vides, les couches de validité et d’invalidité seront affichées en temporaire, ce qui n’est pas génant. Puis nous cliquons sur Exécuter. Les polygones contenant des erreurs ainsi que les noeuds qui posent problème apparaissent alors dans QGIS (Fig. 209).

alternate text

Fig. 209 Les polygones présentant des erreurs de géométrie (en gris foncé) et le neud problématique (en rouge).

Sur la figure Fig. 209, les polygones présentant des erreurs sont en gris foncé et le nœud problématique est en rouge. Il y a aussi un problème car les deux carrés gris foncés sont en fait un seul polygone mais avec une forme de 8 avec un nœud qui se trouve à une sorte d’intersection. C’est cette configuration précise qui pose problème. Heureusement, il est possible de réparer facilement ce type de soucis.

Astuce

Lorsqu’un traitement plante à cause d’une géométrie non valide il n’est même pas nécessaire de vérifier où se trouve le problème. Nous pouvons réparer directement la couche comme présenté dans la section suivante.

Réparer la géométrie

Lorsqu’une couche présente une géométrie non valide, qu’on l’est vérifiée ou non, il est possible de la réparer dans QGIS. Nous utilisons le menu Réparer les géométries qui se trouve dans la Boîte à outils de traitements ‣ Géométrie vectorielle ‣ Réparer la géométrie. Le menu suivant s’ouvre (Fig. 210).

alternate text

Fig. 210 Réparer les géométries dans QGIS.

Dans le champ Couche source nous indiquons la couche à réparer et dans le champ Réparer les géométries nous spécifions un chemin et un nom pour la couche vecteur après réparation. Puis nous cliquons sur Exécuter. La couche réparée apparaît alors dans QGIS. Cette couche est, visuellement, en tout point identique à la couche d’origine, c’est simplement la façon dont sont codés les nœuds qui change.

Prédicats géométriques

La particularité fondamentale des SIG est de proposer une base de données qui contient une composante spatiale. Les entités manipulées, notamment les entités de type vecteur, possèdent une implantation dans l’espace. Il est donc possible de relier différentes couches de données en fonction de leurs localisations. Une couche A peut contenir des éléments d’une couche B ou intersecter des éléments d’une couche C et ainsi de suite. Toute cette série de relations spatiales peut se formaliser sous forme de prédicats géométriques. La figure suivante résume les plus courants (Fig. 211).

alternate text

Fig. 211 Les principaux prédicats géométriques.

Ces prédicats géométriques sont à la base de deux grands types de manipulation : la Sélection spatiale et la Jointure spatiale. Notons bien que les trois implantations (surfacique, linéaire et ponctuelle) se prêtent à ce jeu de prédicats.

Extraction des sommets

Les polygones et les polylignes sont en fait constitués d’une série de points, appelés vertex, ou sommets, reliés entre eux par des morceaux de lignes. Dans le cas des polygones, ces morceaux de lignes sont fermés et une surface est comprise dans ce périmètre. Dans certains cas, il est intéressant d’extraire les vertex constitutifs des lignes ou des polygones. Cette manipulation se fait plus ou moins facilement selon les outils.

Dans les exemples suivants, nous allons voir comment extraire les vertex constitutifs du polygone présenté sur la figure suivante (Fig. 212).

alternate text

Fig. 212 Vertex constitutifs d’un polygone.

Extraction avec QGIS

Version de QGIS : 3.22.0

L’outil à utiliser se trouve dans le menu Boîte à outils de traitements ‣ Géométrie vectorielle ‣ Extraire les sommets. Le menu suivant s’ouvre.

alternate text

Fig. 213 Extraction des vertex (aussi appelés sommets) avec QGIS.

Dans le menu Couche source nous indiquons le nom de la couche de polygone dont il faut extraire les sommets. Puis à la ligne Sommets nous indiquons un chemin et un nom pour la couche qui contiendra les sommets. Notons que si nous le souhaitons nous pouvons cocher la case Entité(s) sélectionnée(s) uniquement si seuls les sommets du ou des polygones sélectionnés sont nécessaires. À la fin du traitement nous obtenons une couche vectorielle de type points dans laquelle chaque point correspond à un sommet du polygone.

Sélection spatiale

La sélection spatiale, aussi appelée requête spatiale, permet de sélectionner des entités d’une couche selon leur position géographique par rapport aux entités d’une autre couche. Ce type de sélection repose sur les Prédicats géométriques. Il est par exemple possible de sélectionner tous les éléments d’une couche A qui contiennent des éléments d’une couche B, ou tous les éléments d’une couche A qui croisent les éléments d’une couche C.

Sélection spatiale dans QGIS

Version de QGIS : 3.22.3

Dans QGIS, il est facile de faire des sélections spatiales. Il faut juste charger les couches vecteurs à croiser et s’assurer qu’elles sont bien dans le même système de coordonnées de référence pour éviter toute surprise. Pour l’exemple, nous allons sélectionner toutes les communes d’Île-de-France contenant un lieu de culte. Nous nous basons sur une couche des polygones des communes et une couche ponctuelle des lieux de culte (Fig. 214).

alternate text

Fig. 214 Les lieux de culte (sûrement non exhaustifs) en Île-de-France.

La requête que nous souhaitons faire est la suivante : Je souhaite sélectionner toutes les communes qui contiennent un lieu de culte. Pour cela nous allons dans le menu Vecteur ‣ Outils de recherche ‣ Sélection par localisation… La fenêtre suivante apparaît (Fig. 215).

alternate text

Fig. 215 Sélection par localisation dans QGIS.

Dans le menu déroulant Sélectionnez les entités depuis, nous sélectionnons la couche depuis laquelle nous souhaitons sélectionner des entités, dans notre cas la couche des communes. Dans le panneau les entités (prédicat géométrique), nous cochons le prédicat souhaité, ici contient. Dans le menu déroulant En comparant les entités de, nous sélectionnons la couche de comparaison, ici la couche des lieux de culte. Enfin dans le menu déroulant Modifier la sélection actuelle en, nous laissons l’option par défaut. Puis nous cliquons sur Exécuter. Les communes qui contiennent un lieu de culte sont bien sélectionnées.

Notons que si nous avions choisi de sélectionner les lieux de culte qui sont à l’intérieur d’une commune, nous aurions sélectionné tous les lieux de culte… Le sens de la requête est donc important.

Note

Il est possible de jouer sur le menu Modifier la sélection actuelle en. Par exemple, nous pouvons ajouter la sélection à une sélection précédente via Ajouter à la sélection actuelle, ce qui est pratique pour combiner des sélections. Nous pouvons également enlever la sélection à une sélection précédente via Enlever de la sélection actuelle, pratique pour une requête de type sauf.

Jointure spatiale

La jointure spatiale est une manipulation très utile en SIG. La jointure spatiale permet de joindre les attributs de deux couches selon une caractéristique géographique qu’elles partagent. Par exemple, si nous disposons d’une couche ponctuelle des plus hauts sommets d’une région montagneuse et d’une couche de polygones des communes, il est possible de rapatrier les noms des communes à celle des sommets. La manipulation sera de lier les attributs des communes qui contiennent les sommets. D’une manière générale, la jointure spatiale repose sur les Prédicats géométriques.

Jointure spatiale dans QGIS

Version de QGIS : 3.22.3

La jointure spatiale se fait facilement dans QGIS. Il est d’abord nécessaire d’ouvrir les deux couches à joindre et de s’assurer qu’elles sont dans le même système de coordonnées de référence. Dans l’exemple, nous disposons d’une couche ponctuelle des lieux de culte d’Île-de-France et d’une couche de polygones des communes de cette même région (Fig. 214). Nous souhaitons rapatrier le nom de la commune dans lequel se situe chaque lieu de culte. La jointure va donc être de la forme : Je souhaite rapatrier le nom de la commune à l’intérieur de laquelle se trouve chaque lieu de culte. Le prédicat géométrique est donc à l’intérieur (within). Le formulaire de jointure spatiale se trouve dans le menu Vecteur ‣ Outils de gestion de données ‣ Joindre les attributs par localisation… Le menu suivant apparaît (Fig. 216).

alternate text

Fig. 216 Jointure spatiale dans QGIS.

Dans le champ Couche de base nous indiquons la couche sur laquelle nous souhaitons rapatrier les informations, ici la couche ponctuelle des lieux de culte. Dans le champ Joindre la couche nous indiquons la couche que nous souhaitons joindre à savoir la couche surfacique des communes. Dans le panneau Prédicat géométrique nous cochons le prédicat à utiliser, ici within (à l’intérieur). Dans le champ Champs à ajouter nous pouvons choisir le ou les champs à joindre, par défaut tous les champs sont joints. Dans le champ Type de jointure, nous choisissons la façon dont doit se faire la jointure, ici Créer une entité distincte pour chaque entité correspondante (un à plusieurs). Ça signifie qu’à chaque lieu de culte, les attributs de la commune d’appartenance seront joints. Dans le champ Préfixe de champ joint nous pouvons indiquer un préfixe qui sera au début des noms des champs joints. Enfin, dans le champ Couche issue de la jointure spatiale nous pouvons indiquer un chemin d’export pour la nouvelle couche qui sera créée, sinon il s’agira d’une couche temporaire. Il ne rste plus qu’à cliquer sur Exécuter. Une nouvelle couche des lieux de culte s’ouvre, géographiquement tout à fait identique à l’originale. Par contre, nous constatons bien qu’un nouveau champ nommé commune_NOM_COM est apparu, contenant le nom de la commune dans laquelle se trouve le lieu de culte.

Il est important de noter que l’ordre de jointure est important. Ainsi, si nous souhaitons joindre les attributs de la couche des lieux de culte à la couche des communes (l’inverse de l’exemple précédent), c’est possible mais le résultat sera différent. En effet, si un lieu de culte n’appartient qu’à une seule commune, une commune peut très bien avoir plusieurs lieux de cultes. Que va-t-il ainsi se passer dans notre cas ? Si nous choisissons l’option Créer une entité distincte pour chaque entité correspondante (un à plusieurs), les communes disposant de plusieurs lieux de culte seront dupliquées. Ainsi, une commune disposant de 3 lieux de culte sera copié trois fois. Cette commune aura donc trois lignes dans la table attributaire, soit une par lieu de culte, mais aura aussi 3 polygones parfaitement superposés. Deux polygones seront cachés par le troisième. Il n’est pas conseillé de manipuler des couches vecteur avec des entités superposées, même si c’est possible. Sinon, nous pouvons sélectionner l’option Prendre uniquement les entités de la première entité correspondante (un à un), auquel cas simplement le premier lieu de culte rencontré sera joint au polygone de la commune. Ainsi, à une commune donnée, il n’y aura bien qu’une ligne et un seul polygone. Par contre, nous ne contrôlons pas ce que QGIS entend par première entité correspondante

Conversion de polygones en lignes

Il est possible de convertir un polygone, donc constitué d’une limite et d’une surface, en une simple polyligne, i.e. juste la limite sans la surface. Ce type de traitements n’est pas forcément très fréquent mais peut être utile.

Avec QGIS

QGIS propose un module pour convertir un polygone en polylignes. Dans l’exemple suivant, nous allons convertir le polygone du département de l’Essonne vers une couche de type polylignes qui ne contiendra que les limites de ce département. Le module à utiliser se trouve dans le menu Vecteur ‣ Outils de géométrie ‣ Polygones vers lignes… (Fig. 217).

alternate text

Fig. 217 Conversion de polygones vers lignes dans QGIS.

Dans le champ Couche source nous indiquons la couche de polygones à convertir, ici Essonne.gpkg. Dans le champ Lignes nous spécifions un chemin et un nom pour le fichier de lignes issu de la conversion, ici Essonne_limites.gpkg. Puis nous cliquons sur Exécuter.

Géotraitements

Grâce à la spatialisation des SIG, il est possible de croiser les géométries des entités de différentes couches entre elles par le jeu de ce que nous appelons communément des géotraitements. Ces géotraitements peuvent être des intersections, des unions, des différences de polygones ou de lignes parfois. Les géotraitements sont très utilisés, c’est une des fonctionnalités de base à connaître des SIG. La figure suivante récapitule les principaux géotraitements en SIG (Fig. 218).

alternate text

Fig. 218 Principes de quelques géotraitements fréquemment utilisés.

Les zones tampons sont aussi connues sous l’appellation anglaise de buffers (tampon). Les zones tampons peuvent être calculées autour d’un polygone, d’une ligne ou d’un point. La taille de la zone tampon est souvent exprimée dans les mêmes unités que le SCR employé. Il est donc plus facile de créer des zones tampons avec des SCR exprimés en mètres plutôt qu’en degrés. Certains modules permettent de calculer des tampons unilatéraux le long des lignes, soit juste un tampon à droite ou un à gauche.

Avertissement

Lors d’un géotraitement faisant intervenir deux couches, il est fortement recommandé que les deux couches soient dans le même système de coordonnées de référence.

Zones tampons

Les zones tampons permettent de créer une zone, donc une surface autour d’une ou plusieurs géométries en entrée. La dimension du tampon est la plupart des cas définie par l’utilisateur dans les paramètres du module dédié. Cependant certains modules proposent de calculer une zone tampon pour chaque entité de la couche en fonction d’une valeur définie dans un champ attributaire. Il est préférable de réaliser des zones tampons sur des couches dont le SCR est exprimé en mètres. Enfin, les zones tampons sont réalisables autour de polygones, de lignes ou de points.

Note

Les zones tampons ne sont pas des anneaux encerclant juste la géométrie de départ, mais sont les géométries de départ qui ont été élargies.

Zones tampons dans QGIS

Version de QGIS : 3.22.3

QGIS propose plusieurs modules pour calculer des zones tampons autour d’une couche vecteur préalablement chargée dans le logiciel. Dans cet exemple nous allons créer une zone tampon de 500 m de large autour du réseau hydrographique du bassin-versant de la Roya dans les Alpes-Maritimes. Un tampon de 500 m m signifie ici que nous allons défnir en fait une surface de 1000 m de large, 500 m de chaque côté, autour de chaque tronçon de cours d’eau. Le module le plus couramment utilisé se trouve dans le menu Vecteur ‣ Outils de géotraitements ‣ Tampon… La fenêtre suivante s’ouvre (Fig. 219).

alternate text

Fig. 219 Création de zones tampons dans QGIS.

Dans le champ Couche source nous indiquons la couche autour de laquelle nous souhaitons obtenir une zone tampon hydro_Roya.gpkg. Dans le champ Distance nous indiquons la largeur du tampon désiré, ici 500 et nous choisissons comme unité mètres dans le menu déroulant. Il est important de cocher ou pas sur Regrouper le résultat. Si nous ne cochons pas cette option, il y aura autant de tampons que d’entités dans la table de départ. Si nous cochons l’option, toutes les zones tampons de formeront qu’une seule entité, éventuellement multi-parties (Fig. 220). Dans le champ Mis en tampon nous spécifions un nom et un chemin pour le tampon qui sera créé. Les autres options peuvent être laissées par défaut, elles influenceront peu la forme du résultat.

alternate text

Fig. 220 Zones tampons groupées (A) et non groupées (B).

Si nous ne groupons pas le résultat des zones tampons (Fig. 220 B), les tampons se chevauchent les uns les autres.

Intersection de polygones

Un traitement SIG très fréquent est l’intersection de deux couches vecteurs de polygones. C’est une manipulation courante lorsque nous souhaitons par exemple croiser un raster d’occupation du sol avec des entités administratives ou biophysiques comme des bassins-versants ou des zones géologiques. Tous les outils SIG proposent des solutions pour ce genre de traitements.

Intersection de polygones dans QGIS

Version de QGIS : 3.22.3

Il est tout d’abord nécessaire de charger dans QGIS les deux couches de polygones que nous souhaitons intersecter. Ces deux couches doivent être de préférence dans le même SCR. Dans l’exemple suivant nous allons intersecter un raster d’occupation du sol (Corine Land Cover 2018) avec les départements d’Île-de-France. Cette manipulation permet de connaître l’occupation du sol par département francilien. Nous allons dans le menu Vecteur ‣ Outils de géotraitements ‣ Intersection… Le menu suivant s’affiche (Fig. 221).

alternate text

Fig. 221 Intersection de couches de polygones dans QGIS.

Dans le champ Couche source nous indiquons la couche à intersecter, ici l’occupation du sol CLC_2018_IDF.gpkg. Dans le champ Couche de superposition nous indiquons la couche qui nous sert à intersecter, ici les départements departements_IDF.gpkg. Dans le champ Champs d'entrée à conserver nous pouvons indiquer quels champs attributaires de la première couche nous souhaitons conserver dans la couche finale, ici simplement l’identifiant CLC de l’occupation du sol. Dans le champ Champs à conserver nous pouvons indiquer quels champs attributaires de la seconde couche nous souhaitons conserver dans la couche finale, ici le code des départements, la population départementale et la superficie départementale par exemple. Puis dans le champ Intersection nous spécifions un chemin et un nom pour la couche résultat. Enfin, nous cliquons sur Exécuter. La couche des polygones d’occupation du sol intersectée par les départements apparaît bien dans QGIS.

Note

Il est fréquent que dans l’une ou l’autre (ou les deux) couches d’entrées d’une intersection il existe un attribut superficie. Dans ce cas, cet attribut superficie sera également présent dans la couche final mais ne correspondra plus à la superficie des entités, puisqu’elles auront été intersectées. Attention donc à ne pas s’embrouiller à ce niveau. Il peut être utile de renommer l’attribut en question en superficie_departement par exemple (cf Renommer un champ).

Différence de polygones

Faire la différence entre deux couches de polygones est une manipulation courante en SIG. Elle s’utilise par exemple dans le cas où nous souhaitons exclure une zone d’une autre. Par exemple nous souhaitons conserver simplement le territoire d’une région donnée qui ne soit pas couvert d’une certaine occupation du sol.

Différence de polygones dans QGIS

Version de QGIS : 3.22.3

Dans l’exemple, nous souhaitons connaître la portion de territoire du département du Val-d’Oise qui n’est pas recouvert de forêt. Pour cela nous chargeons dans QGIS le polygone du département du Val-d’Oise et le polygone des forêts d’Île-de-France. Une fois ces deux couches chargées dans QGIS, nous allons dans le menu Vecteur ‣ Outils de géotraitements ‣ Différence… Le menu suivant apparaît (Fig. 222).

alternate text

Fig. 222 Différence de couches de polygones dans QGIS.

Dans le champ Couche source nous indiquons la couche de laquelle nous souhaitons exclure des portions, ici la couche du département val-d-oise.gpkg. Dans le champ Couche de superposition nous indiquons la couche à enlever, à savoir les forêts. Puis dans le champ Différence nous spécifions un chemin et un nom pour la couche résultat. Enfin nous cliquons sur Exécuter. La couche du Val-d’Oise trouée par les forêts apparaît alors dans QGIS (Fig. 223).

alternate text

Fig. 223 Les polygones de forêts superposés au polygone du Val-d’Oise (A) et le résultat de la différence qui permet d’obtenir les portions du Val-d’Oise non recouverts de forêt (B).

Avertissement

Contrairement à l’intersection, le sens à ici un sens. Si nous avions mis la couche des forêts en premier et le département en second, nous aurions obtenu en résultat les forêts qui ne sont pas dans le Val-d’Oise.

Intersection de lignes

Il est possible d’intersecter des lignes entre elles. Le résultat sera une couche vecteur de type points où chaque point correspondra à une intersection.

Intersection de lignes dans QGIS

Version de QGIS : 3.22.3

Il est possible d’intersecter deux couches de type lignes dans QGIS, de préférence dans le même système de coordonnées de référence. À l’issue de ce traitement, une couche de points sera créée. À chaque point correspondra une intersection entre 2 lignes. Dans cet exemple, nous allons intersecter une couche linéaire de routes avec une couche linéaire de rivières. Les intersections correspondront ainsi finalement aux emplacements des ponts routiers (Fig. 224 A).

alternate text

Fig. 224 Jointure spatiale dans QGIS.

Pour ouvrir le menu d’intersection de lignes, nous allons dans le menu Vecteur ‣ Outils d’analyse ‣ Intersection de lignes… Le menu suivant s’ouvre (Fig. 225).

alternate text

Fig. 225 Intersection de lignes dans QGIS.

Dans le champ Couche source nous indiquons la première couche de lignes, les voies de communication par exemple. Dans le champ Couche d'intersection nous indiquons la couche à intersecter, ici le réseau hydrographique. Aux deux lignes Champ d'entrée à conserver nous pouvons indiquer quels attributs conserver sur les deux couches. Ce sont les attributs qui seront présents sur la couche ponctuelle issue du traitement. Nous pouvons également indiquer un chemin et un nom pour la couche qui sera créée dans le champ Intersections. Nous cliquons pour finir sur Exécuter. Nous obtenons bien une nouvelle couche de points où chaque point correspond à une intersection entre 2 lignes (Fig. 224 B).