4 Manipuler des données vecteur

Ici, on commence à vraiment utiliser le logiciel ! Quelques exemples d’opérations courantes :

  • joindre des données à une couche en se basant sur les données attributaires pour faire la correspondance
  • joindre des données à une couche en se basant sur les géométries pour faire la correspondance
  • utiliser la calculatrice de champs pour créer de nouvelles colonnes dans la table attributaire
  • créer une couche de points à partir d’un fichier texte XY
  • et quelques géotraitements pour finir (découpage, intersection…)

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

  • DEPARTEMENT.gpkg : limites départementales, données IGN Admin Express
  • lycees_2023.csv : liste géolocalisée des établissements d’enseignement des premier et second degrés
  • TCRD_078.csv : données INSEE sur le nombre d’enseignants du 1er degré par département
  • communes_44.gpkg : communes de Loire-Atlantique, données IGN Admin Express
  • COURS_D_EAU_44.shp : cours d’eau de Loire-Atlantique, données IGN BD TOPO

Pour les exercices bonus :

4.1 Créer une couche de points à partir d’un tableau de coordonnées

L’exemple portera ici sur un fichier au format CSV : il s’agit d’un fichier texte comportant des colonnes séparées par un caractère, généralement une virgule, parfois aussi un point-virgule ou une tabulation http://fr.wikipedia.org/wiki/Comma-separated_values.

Pour information, il est possible de créer un fichier au format CSV à partir d’un fichier ODS (Libre Office) ou XLS (Microsoft Office) par exemple.

L’exercice portera ici sur les lycées de France.

4.1.1 Qu’y a-t-il dans le fichier texte ?

Dans l’explorateur de votre ordinateur, ouvrez le fichier lycees_2023.csv situé dans le dossier 4_manip_vecteur/donnees à l’aide d’un éditeur de texte simple (pas dans un tableur) : par exemple, WordPad dans Windows, TextEdit sous Mac, gedit sous Ubuntu.

Ici, le caractère utilisé pour séparer les colonnes est la virgule. La première ligne contient les en-têtes de colonnes.

Quelles colonnes contiennent les coordonnées des lycées ? Dans quel SCR sont mesurées ces coordonnées ?

Fermez le fichier sans enregistrer les modifications, quittez l’éditeur de texte.

4.1.2 Visualisation des données dans QGIS

Ouvrez un nouveau projet QGIS, et ajoutez-y la couche vecteur DEPARTEMENT.gpkg située dans le dossier 4_manip_vecteur pour vérifier que les points correspondant aux lycées seront bien placés.

icône d’ajout de texte délimité Cliquez sur l’icône Ajouter une couche de texte délimité, ou bien allez dans le Gestionnaire des sources de données > Texte délimité

Fenêtre de l’outil d’ajout de texte délimité
Fenêtre de l’outil d’ajout de texte délimité
  • Cliquez sur le bouton … et sélectionnez le fichier lycees_2023.csv
  • Nom de la couche : vous pouvez laisser le même nom que le CSV ou bien tapez le nom de votre choix
  • Format de fichier : choisir CSV (virgule) (si le séparateur était le point-virgule par ex., il faudrait choisir délimiteur personnalisés puis cocher point-virgule)
  • Définition de la géométrie : point, choisir les colonnes Coordonnee X et Coordonnee Y
  • Système de coordonnées : choisir le système RGF93/Lambert-93, code EPSG 2154.
  • Vérifiez l’aperçu du fichier tout en bas de la fenêtre : les colonnes doivent être bien séparées

Ici, les séparateurs décimaux sont des points pour les nombres à virgules (ex. 1.234). Si vous avez un fichier où ce sont des virgules (1,234), pensez à cocher la case Virgule en séparateur décimal !

Il serait aussi possible d’utiliser les colonnes “longitude” et “latitude” ; dans ce cas, il faudrait choisir le SCR WGS84.

Cliquez sur Ajouter puis fermez la fenêtre. La couche s’affiche, zoomez éventuellement dessus. Ouvrez sa table attributaire.

Point correspondant aux parc et jardins de la ville de Nantes, avec un fonds communes
Point correspondant aux parc et jardins de la ville de Nantes, avec un fonds communes

4.1.3 Création du shapefile de points

Regardez à quel emplacement est stockée votre couche (propriétés de la couche, rubrique Information). Vous pouvez observer que cet emplacement fait référence à un fichier CSV et non à un fichier SHP.

Par ailleurs, si vous sélectionnez la couche de lycées dans la table des matières, vous pouvez constater que l’icône pour passer en mode édition est désactivée (grisée), au contraire de notre couche de communes. La couche de lycées n’est donc pas éditable.

Bien que nous puissions visualiser les lycées dans QGIS, aucune couche n’a été créée, ce qui est d’ailleurs logique dans la mesure où QGIS ne nous a demandé à aucun moment de choisir un emplacement pour cette couche.

En fait, nous avons seulement créé une couche temporaire, uniquement stockée dans le projet en cours. Comment faire pour sauvegarder cette couche ?

Clic-droit sur la couche de lycées > Exporter > Sauvegarder les entités sous…

  • Format : GeoPackage ou Shapefile, au choix
  • Cliquez sur Parcourir pour sélectionner l’emplacement où la couche sera créée et lui donner un nom
  • Laissez les autres paramètres par défaut

Cliquez sur OK ; la couche est ajoutée à QGIS, vous devez donc avoir deux couches de lycées identiques au premier abord ; cependant, l’une est temporaire et l’autre permanente.

Supprimez la couche temporaire devenue inutile : clic-droit sur la couche, supprimer.

4.1.4 Explorer les données en changeant le mode de représentation

On peut ensuite facilement fouiller les données, en regardant dans la table attributaire d’abord, puis en modifiant le style de la couche.

Par exemple, pour voir où sont situés les lycées publics et privés, allez dans les propriétés de la couche > Symbologie, choisissez un style catégorisé sur la colonne Secteur Public/Privé, puis cliquer sur Classer.

Vous pouvez ensuite cliquer sur Appliquer pour appliquer les changements sans fermer la fenêtre, ou sur OK pour appliquer les changements puis fermer la fenêtre.

Fenêtre de style catégorisé sur pataugeoire et résultat sur la carte
Fenêtre de style catégorisé sur pataugeoire et résultat sur la carte

On peut aussi jouer avec le mode Déplacement de point pour gérer les superpositions :

Carte des lycées public/privés avec le mode déplacement de point / grille
Carte des lycées public/privés avec le mode déplacement de point / grille

4.2 Joindre des données attributaires à une couche

4.2.1 Comment fonctionne une jointure attributaire ?

Dans un logiciel SIG, une jointure attributaire consiste à lier à une couche des données provenant d’une table ou d’une autre couche, en se basant sur les données attributaires.

Un champ de la couche de départ et un champ de la table contenant les données à joindre servent de champs clé. Ces champs doivent être de même type (texte ou nombre) et contenir les mêmes données. Le logiciel se base sur le contenu de ces champs pour déterminer quel élément de la table est lié à quel élément de la couche.

Il arrive qu’un élément de la couche de départ corresponde à plusieurs éléments de la table. Différentes stratégies sont alors possibles selon les logiciels et le type de champ : ne prendre en compte que les données du premier élément lié, calculer la moyenne des données…

4.2.2 Application : nombre d’enseignants par département

Ici, nous allons partir d’une couche de départements et d’un tableau contenant des données INSEE sur le nombre d’enseignants du 1er degré par département. Le but sera de joindre les données du tableau INSEE à la couche de départements, pour pouvoir cartographier ces données.

Les données de départ sont donc :

  • une couche de polygone au format shapefile avec les départements de France métropolitaine, le code de chaque département étant indiqué dans la table attributaire
  • un tableau avec le code de chaque département et des données sur le nombre d’enseignants du 1er degré par département. Ce tableau ne comporte pas de colonne de géométrie.

Au final, on obtiendra une couche shapefile des départements, avec en données attributaires des informations sur le nombre d’enseignants.

Créez un nouveau projet QGIS. Ajoutez-y la couche 4_manip_vecteur/DEPARTEMENT.gpkg.

Ajoutez ensuite le fichier TCRD_078. Pour ajoutez un fichier CSV, il existe plusieurs méthodes mais la plus sûre afin que tous les champs ne soient pas reconnus comme du texte est de procéder comme ceci :

Gestionnaire des sources de données > Texte délimité, en choisissant Pas de géométrie dans la partie définition de la géométrie (et vérifiez le séparateur !).

La couche est ajoutée à QGIS avec une icône de table :

liste des couches avec TCRD_028 avec une icône de tabme
liste des couches avec TCRD_028 avec une icône de tabme

Ouvrez les deux tables attributaires des couches DEPARTEMENT et TCRD_078.

A votre avis, pour pouvoir effectuer une jointure entre les 2 tables, quels seront les 2 champs clés ?

Allez dans les propriétés de la couche DEPARTEMENT, rubrique Jointure :

Cliquez sur le symbole + pour ajouter une jointure :

Fenêtre de paramétrage d’une jointure attributaire
Fenêtre de paramétrage d’une jointure attributaire
  • Sélectionnez les données à joindre : TCRD_078
  • Sélectionnez les champs clés.
  • Cochez la case Personnaliser le préfixe du nom du champ, afin de choisir le préfixe des champs qui seront ajoutés grâce à cette jointure : data_ . Par défaut, le préfixe est le nom du CSV, ce qui peut être un peu long.

Vous pouvez également laisser vide cette case, pour ne pas ajouter de préfixe aux noms des champs joints. Attention cependant, dans ce cas s’il existe déjà des champs de même nom dans la table d’origine, cela peut causer des problèmes.

Notez également qu’il est possible de n’ajouter que certains champs du CSV en cochant Champs joints puis en sélectionnant les champs.

Cliquez sur OK : une ligne correspondant à la jointure apparaît. Fermez la fenêtre des propriétés. Ouvrez la table attributaire de la couche DEPARTEMENT : 4 colonnes ont été ajoutées.

La jointure n’est que temporaire, la couche DEPARTEMENT n’a pas été modifiée. Pour sauvegarder définitivement la jointure, il faut enregistrer la couche sous un autre nom (par un clic droit sur la couche > Exporter > Sauvegarder les entités sous…).

Notez également que les champs joints pourront être renommés, à l’aide de l’outil Refactoriser les champs de la boîte à outils de traitements.

Une fois les données jointes à la couche de points, il est possible de représenter ces données, par exemple la part des femmes dans l’enseignement public du 1er degré.

Pour cela, il faut choisir un style gradué puis une méthode de discrétisation et un nombre de classes. On peut aussi voir l’histogramme de fréquence des valeurs !

Nous verrons plus en détail plus loin comment faire ce type de carte. Pour exemple, une carte choroplèthe de la part des femmes dans l’enseignement ublic 1er degré, avec l’histogramme de distribution des valeurs :

Carte choroplèthe de la part des femmes dans l’enseignement ublic 1er degré, avec histogramme de distribution
Carte choroplèthe de la part des femmes dans l’enseignement ublic 1er degré, avec histogramme de distribution

4.3 Calculer des valeurs dans la table attributaire

Nous avons vu plus tôt comment éditer des valeurs directement dans la table attributaire. Il est également possible de mettre à jour les valeurs d’une colonne entière, en se basant par exemple sur une autre colonne, à la manière des formules utilisées dans Calc ou Excel.

L’objectif de cet exercice est de créer un champ contenant le nombre d’enseignants du 1er degré par km2 pour chaque département.

Ce n’est pas forcément un indice très pertinent, c’est pour l’exemple !

La première étape consistera à créer et calculer un champ contenant la surface de chaque département en km2. Lors d’une 2ème étape, il restera à diviser le champ contenant le nombre d’enseignants par cette surface.

On pourrait tout faire en une seule étape, mais ici on va décomposer !

4.3.1 Calcul de géométrie : l’exemple de la surface

icône de l’outil d’édition Passez la couche de départements en mode édition pour pouvoir modifier les données (par exemple avec un clic droit sur la couche > Basculer en mode édition).

icône de la calculatrice de champ Dans la barre d’outil de la table, cliquez sur le bouton Ouvrir la calculatrice de champ. La calculatrice permet la création et le calcul de champs.

Fenêtre de la calculatrice de champ
Fenêtre de la calculatrice de champ
  1. Choisissez Créer un nouveau champ (notez que la calculatrice peut aussi être utilisée pour mettre à jour un champ existant)
  2. Tapez le nom du champ : ici surf_km2 par exemple
  3. Sélectionnez le type de données que contiendra le champ (texte, nombre…) : ici ; un nombre décimal avec 2 chiffres après la virgule. Si vous avez créé une couche au format GeoPackage, cette partie est désactivée : les données y seront stockées au format « brut »
  4. Cette partie contient les différentes formules utilisables pour calculer un champ. Dans la rubrique Géométrie, double-cliquez sur la fonction $area pour qu’elle apparaisse dans la partie gauche de la fenêtre.
  5. La surface sera calculée dans l’unité de la couche, donc en m2 puisque cette couche est projetée en Lambert 93. Rajoutez à la main /1000000 pour obtenir une surface en Km2
  6. Vous pouvez lire l’aide pour chaque fonction dans la partie droite de la fenêtre
  7. Et vous avec un aperçu du résultat pour la 1ère ligne de la table en bas à gauche

Cliquez sur OK. Comme vous pouvez le voir dans la table attributaire, le nouveau champ a été ajouté et vous pouvez y lire la surface de chaque commune.

Icône de l’outil de mesure d’aire Vous pouvez vérifier le calcul pour une ou deux communes, à l’aide de l’outil Mesurer une aire.

4.3.2 Calcul sur des valeurs : l’exemple de la densité

Il ne nous reste plus qu’à calculer le nombre d’enseignants par km2 (champ 1deg_nb_ensgts), en divisant ce nombre par la surface.

Ouvrez la calculatrice de champs, calculez un nouveau champ 1deg_ens_km2 de type décimal avec 2 chiffres après la virgule. Dans la partie du milieu, rubrique Champs et Valeurs, double-cliquez sur le champ 1deg_nb_ensgts pour le faire apparaître dans la formule.

Au final, la formule doit être la suivante : "1deg_nb_ensgts" / "surf_km2"

Calcul de densité dans la calculatrice de champ
Calcul de densité dans la calculatrice de champ

Notez qu’après avoir cliqué sur le nom d’un champ, vous pouvez voir quelles valeurs contient ce champ, pour éventuellement les utiliser dans une formule.

Il est maintenant possible de cartographier ces données, en choisissant le mode Gradué dans la symbologie de la couche. Nous verrons cette opération plus en détail un peu plus loin !

4.3.3 Supprimer un champ

L’objectif est ici de supprimer le champ surf_km2 créé précédemment.

icône de l’outil de suppression de champ Vérifiez que votre couche DEPARTEMENT soit bien en mode édition. Cliquez sur le bouton Supprimer le champ.

Sélectionnez ensuite le champ surf_km2 puis cliquez sur OK.

Pour finir, quittez le mode édition en enregistrant vos modifications.

4.4 Pour aller plus loin : jointure spatiale

Nous allons maintenant essayer de connaître le nombre de lycées pour chaque département. le pas à pas n’est pas détaillé dans cet exercice, mais n’hésitez pas à demander de l’aide !

Deux points nouveaux :

Lors de la jointure attributaire que nous avons faite plus haut, une ligne du tableau sur les enseignants correspondait à un département : il s’agissait d’une jointure de type un-un.

Ici, à un même département correspondent plusieurs lycées : il s’agit d’une jointure de type un-plusieurs. Dans ce cas, il faut définir des fonctions d’agrégation pour savoir ce qu’on veut récupérer dans la table attributaire de la couche de départements : par exemple la somme ou la moyenne pour des champs numériques, une concaténation pour des champs de type texte…

Et deuxième point, la jointure que nous avons faite plus haut était basée sur les données attributaires. Ici, nous allons faire une jointure spatiale, en nous basant sur les géométries des couches de lycées et de départements. Il s’agira de joindre aux départements les informations des lycées dont la géométrie est contenue dans la géométrie des départements. En d’autres termes, les informations d’un point seront associées au polygone qui le contient.

Pour une jointure spatiale, différents opérateurs spatiaux sont possibles : à l’intérieur, intersecte, chevauche, croise, contient…

Partez d’un projet avec les couches DEPARTEMENT et lycees_2023 (créée plus haut).

A vous de jouer pour obtenir une nouvelle couche de départements avec une colonne en plus indiquant le nombre de lycées pour chaque département !

Indice : utilisez l’outil Joindre les attributs par localisation (résumé)

4.5 Manipuler les géométries

Nous aborderons dans cette partie quelques traitements possibles sur des données vecteur. Il en existe bien sûr beaucoup d’autres !

L’objectif sera ici de créer des zones tampons autour des cours d’eau d’un EPCI, afin de simuler des zones inondables. Vous disposez pour cela d’une couche de communes du département, et d’une couche de cours d’eau régionale.

4.5.1 Agréger des entités en fonction d’un attribut : créer les EPCI à partir des communes

Créez un nouveau projet QGIS. Ajoutez-y la couche des communes de Loire-Atlantique communes_44.gpkg.

Vérifiez que votre projet ait le même SCR que la couche de communes.

Notre but sera ici de regrouper ces communes pour créer une couche d’EPCI, en recalculant la population pour chaque EPCI.

Dans un premier temps, pour simplement visualiser les différents EPCI, nous allons représenter les communes de manière différente suivant le code EPCI. Cette étape n’est pas utile en soi mais permet de mieux comprendre la manipulation.

Affichez les propriétés de la couche communes_44, rubrique Symbologie :

Fenêtre des propriétés de la couche, symbologie : style catégorisé sur les EPCI, couleurs au hasard
Fenêtre des propriétés de la couche, symbologie : style catégorisé sur les EPCI, couleurs au hasard
Résultat de la catégorisation sur la carte : les communes d’un même EPCUI ont la même couleur
Résultat de la catégorisation sur la carte : les communes d’un même EPCUI ont la même couleur

Choisissez le mode Catégorisé au lieu de Symbole unique, en fonction de la colonne CODE_EPCI, avec comme palette de couleur Couleurs au hasard, et cliquez sur Classer.

Cliquez sur OK : chaque commune est colorée suivant son EPCI.

Nous allons maintenant créer une couche d’EPCI à partir des communes, en fusionnant toutes les communes ayant le même code EPCI. Et au passage, nous allons recalculer la population de chaque EPCI en faisant la somme des populations de ses communes.

Cette manip est juste pour l’exercice, puisqu’on trouve en téléchargement libre sur le site de l’IGN une couche d’EPCI pour toute la France.

Si vous ne voyez pas le panneau Boîte à outils de traitements, faites-le apparaître en allant dans le menu Traitement > Boîte à outils.

Recherchez l’outil de géométrie vectorielle Agrégation (vous pouvez vous aider de la barre de recherche) et double-cliquez dessus.

Fenêtre de l’outil d’agrégation
Fenêtre de l’outil d’agrégation
  • Couche source : vérifiez que la couche communes_44 soit bien sélectionnée
  • Grouper par expression : sélectionnez le champ CODE_EPCI
  • Agrégats : ici, nous allons définir comment seront calculées les valeurs de la table attributaire de la nouvelle couche. Commencez par supprimer tous les champs tels que le nom de commune, le code INSEE etc. qui n’auront plus de sens pour les EPCI. Pour POPULATION, choisissez la fonction d’agrégation sum, et first value ou last value pour les autres champs. Pour compter le nombre de communes par EPCI, vous pouvez ajouter un champ basé sur fid par exemple, avec la fonction count (de type entier)
  • Couche regroupée : cette couche sera temporaire (pour créer une couche sur votre ordinateur, il faut cliquer sur le bouton … puis choisir Enregistrer vers un fichier…)
  • Exécuter, puis fermer la fenêtre une fois l’opération terminée.

Notez que le calcul s’effectue « en tâche de fond » : il est possible de continuer à travailler dans QGIS pendant ce temps.

Le résultat est ajouté à QGIS. Vérifiez le contenu de la table attributaire.

Résultat de l’agrégation : carte et table attributaire
Résultat de l’agrégation : carte et table attributaire

Il ne reste plus ensuite qu’à créer une couche ne comportant que l’EPCI de Nantes Métropole, code 244400404. Pour cela, sélectionnez cet EPCI dans la table ou sur la carte, et faites un clic droit sur la couche, Exporter > Sauvegarder les entités sélectionnées sous…

4.5.2 Découper une couche par une autre

Ajoutez la couche COURS_D_EAU_44.shp.

Le but sera ici de découper cette couche pour ne garder que les cours d’eau de l’EPCI Nantes Métropole.

Dans la boîte à outils de traitement > Recouvrement de vecteur > Couper :

  • Couche source : sélectionnez la couche à découper : COURS_D_EAU_44
  • Couche de superposition: choisir la couche servant de masque de découpe, en l’occurrence l’EPCI de Nantes Métropole
  • Créez une couche temporaire en sortie
  • Cliquez sur Exécuter
Résultat du découpage : carte et liste des couches
Résultat du découpage : carte et liste des couches

La couche créée ne contient que les cours d’eau dans Nantes Métropole. Vérifiez le contenu de sa table attributaire.

4.5.3 Créer une zone tampon

L’objectif sera ici de créer une zone tampon de 500m autour des cours d’eau, pour simuler une zone inondable.

Dans la boîte à outils, trouvez l’outil de géométrie vectorielle Tampon et lancez-le :

Fenêtre de l’outil de zone tampon
Fenêtre de l’outil de zone tampon
  • Couche source : vérifiez que la couche temporaire Découpé soit bien sélectionnée
  • Distance : 500, en unités de la couche donc en mètres, puisque la couche est en Lambert 93
  • Cochez la case Regrouper le résultat, pour fusionner les zones tampon de tous les cours d’eau
  • Mis en tampon : cliquez sur le bouton pour enregistrer cette fois les données au format shapefile ou geopackage. Nommez la couche cours_eau_buffer500m par exemple.
  • Éxécuter
Résultat de la création de zone tampon sur la carte
Résultat de la création de zone tampon sur la carte

Lorsqu’on enchaîne différentes étapes comme ici, il n’est pas évident de se rappeler ce qu’on a fait si on reprend le travail un peu plus tard. Il est donc très utile de noter ce que vous faites.

Vous pouvez également opter pour une organisation de vos dossiers qui vous permettra de vous rappeler d’un seul coup d’œil les différentes étapes, comme ici :

Exemple d’organisation avec un dossier 01_donnees_originales, 02_agregation…
Exemple d’organisation avec un dossier 01_donnees_originales, 02_agregation…

(Le fichier notes.txt est aussi utile pour noter le pourquoi du comment ou toute autre chose dont vous souhaitez vous rappeler).

Dans tous les cas, gardez les données originales !

4.6 Exercices supplémentaires

Ces exercices facultatifs, moins guidés, vous permettront de refaire les manips par vous-même. N’hésitez pas à vous référez au support si besoin, ou à toute autre ressource (recherche internet…).

4.6.1 Création d’une couche de points à partir d’un fichier XY

Créez une couche ponctuelle des parcs et jardins de Nantes à partir du fichier 244400404_parcs-jardins-nantes.csv.

Ajoutez un fond OpenStreetMap ou autre, et testez le mode de représentation catégorisé sur différentes colonnes de la table attributaire.

4.6.2 Jointure attributaire

Dans un navigateur internet, rendez-vous sur : http://tinyurl.com/jrgn37u (ce qui correspond à l’url : http://www.insee.fr/fr/bases-de-donnees/default.asp?page=statistiques-locales.htm )

Dans la rubrique Niveau géographique, sélectionnez Toutes les régions ou tous les départements, ou bien Toutes les communes et téléchargez un tableau correspondant à un indicateur de votre choix, par département ou par commune.

Ouvrez le fichier téléchargé avec un tableur, mettez les données en forme pour qu’il n’y ait pas de lignes superflues en haut ou en bas du tableau. Enregistrez le fichier au format CSV.

Dans QGIS, chargez une couche de communes ou de départements selon que votre indice soit au niveau communal ou départemental (éventuellement téléchargez-la à partir de la base ADMIN EXPRESS de l’IGN). Joignez-y les données de votre fichier CSV.

Explorez ces données en changeant leur mode de représentation.

4.6.3 Jointure spatiale

Créez un nouveau projet QGIS contenant les couches DEPARTEMENT et prefectures du dossier 4_manip_vecteur.

Le but de l’opération est d’ajouter des colonnes dans la table attributaire de la couche de départements, avec le nom de la préfecture, son statut etc. Bien sûr, l’inverse est également possible : ajouter dans la table attributaire des préfectures des colonnes avec le nom du département, son code etc.