Tutoriel Qgis 09 Analyse Spatiale
Tutoriel Qgis 09 Analyse Spatiale
Analyse spatiale
Export PDF de mai 2021
Ceci est un export PDF du tutoriel QGIS 3.22 'Białowieża' disponible ici : https://ouvrir.passages.cnrs.fr/tutoqgis/
Ce tutoriel est sous licence Creative Commons : vous êtes autorisé à le partager et l'adapter, pour toute utilisation y compris commerciale, à
condition de citer l'auteur : UMR 6554 LETG/UMR 5319 Passages, https://ouvrir.passages.cnrs.fr/tutoqgis/, et de partager votre travail sous les
mêmes conditions. Le texte complet de la licence est disponible ici : https://creativecommons.org/licenses/by-sa/4.0/deed.fr
Sommaire
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 2
IX. Analyse spatiale
Dans cette partie, nous allons aborder un domaine particulièrement utile des SIG : comment croiser spatialement des données, ou créer des données à
partir d'autres données.
Nous verrons quelques exemples de traitements possibles sur des données vecteur et raster .
Notions abordées :
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 3
IX.1 Analyse spatiale : quelques exemples d'opérations sur des données vecteur
Découper des données par d'autres données
Quel est le principe ?
Découpage, mode d'emploi
Sans oublier de penser aux systèmes de coordonnées...
Création d'une zone tampon autour d'un cours d'eau
Qu'est-ce qu'une zone tampon ?
Sélection d'un cours d'eau
Création d'une zone tampon autour de la sélection
Pour aller plus loin : détail des autres paramètres
Données communes entre deux couches : intersection
Qu'est-ce qu'une intersection ?
Intersection entre communes et zone tampon
Si on voulait aller plus loin...
Relancer rapidement un outil à l'aide de l'historique
Nous aborderons ici quelques traitements possibles sur des données vecteur. Il en existe bien sûr beaucoup d'autres !
Le but sera ici, à partir d'une couche de cours d'eau de la région Pays de la Loire et d'une couche des départements de France métropolitaine, de
découper les cours d'eau pour ne garder que ceux dans notre zone d'étude , en l'occurrence le département de la Loire-Atlantique (44).
A gauche, les 2 couches de départ : cours d'eau des Pays de la Loire et départements. A droite, le résultat souhaité : les cours d'eau découpés selon le département de la Loire-Atlantique
(44)
Une telle opération est utile pour avoir des données moins lourdes, ce qui diminue les temps de traitement. Par ailleurs, votre travail sera plus clair si
vous utilisez des données adaptées à votre zone d'étude.
Le but sera donc de découper les cours d'eau par le département 44, pour ne garder que les cours d'eau à l'intérieur de ce département. Cette
opération crée une nouvelle couche.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 4
Puis rendez-vous dans la boîte à outils de traitements → Recouvrement de vecteur → Couper
Couche source : choisir la couche à découper, en l'occurrence les cours d'eau : gis_osm_waterways_free_1
Entité(s) sélectionnée(s) uniquement : cochez cette case pour ne garder que les cours d'eau à l'intérieur du département sélectionné, et non à
l'intérieur de tous les départements
Découpé : cliquez sur ..., sélectionnez l'option Enregistrer vers un chier , et choisissez l'endroit où la couche sera créée, et son nom :
coursdeau_osm_44 (au format GeoPackage)
Véri ez ses données attributaires : elle contient les mêmes champs que la couche de cours d'eau initiale . Les valeurs des champs ne sont pas
recalculées (sauf dans le cas de champs virtuels) : s'il y a un champ longueur, ses valeurs seront donc erronées.
Contrairement à une requête spatiale, le découpage modi e les entités en les découpant suivant les limites de la couche de découpage. Une requête se
borne à sélectionner par exemple les cours d'eau à l'intérieur d'un département, ou intersectant ce département.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 5
A gauche, cours d'eau intersectant un département sélectionné par une requête spatiale (en jaune). A droite, cours d'eau découpé par un département (en rouge).
Avez-vous noté que les 2 couches de départ ont 2 SCR différents ? (WGS84 pour les cours d'eau, RGF93/Lambert 93 pour les départements). Pourtant, le
découpage fonctionne correctement. Ce comportement n'existe que depuis la version 3 de QGIS, la version 2.18 retournait dans ce cas une couche vide.
Même si ça n'est plus obligatoire, cela reste une bonne pratique de travailler avec des couches dans le même SCR.
Une zone tampon (aussi appelée « bu er ») est une zone épousant la forme des objets d'une couche, d'une largeur donnée . Si elles sont tracées
autour de points, les zones tampons seront des cercles. Autour de lignes et de polygones, ce sera des polygones de forme variable. Une zone tampon
peut servir par exemple à modéliser une zone inondable, un périmètre de sécurité, une zone d'achalandage...
L'objectif est ici de créer une zone tampon de 100 mètres autour de l'Erdre. Cette zone pourra représenter par exemple une zone inondable, ou bien une
zone s'interposant entre rivière et cultures.
Comment faire pour sélectionner le cours d'eau dont le nom est L'Erdre de la couche coursdeau_osm_44 ?
2 méthodes au choix :
1/ Sélectionner à la main dans la table attributaire les lignes où la valeur du champ name est L'Erdre (pour les trouver plus facilement, cliquez sur l'intitulé de
colonne name pour classer les lignes par nom)
2/ utiliser une requête attributaire : "name" = 'L\'Erdre'. Attention, le caractère \ (antislash) est nécessaire avant l'apostrophe, pour que ce dernier ne soit
pas considéré comme la fin de la chaîne de caractères.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 6
Ce cours d'eau est donc constitué de plusieurs entités.
Pour créer la zone tampon : Boîte à outils de traitements → Géométrie vectorielle → Tampon
Sélectionnez la couche source : coursdeau_osm_44. En-dessous, la distance permet de paramétrer la taille de la zone tampon.
Vous pouvez voir que les unités de taille sont les degrés ! En effet, notre couche de cours d'eau étant en WGS84, il s'agit des unités de cette couche.
Avant d'aller plus loin, il nous faudra donc projeter notre couche pour pouvoir xer une taille en mètres. Nous utiliserons pour cela le système o ciel
français, à savoir le RGF93/Lambert-93 (code EPSG 2154).
Modifiez le SCR de la couche coursdeau_osm_44, pour passer du WGS84 vers le RGF93/Lambert-93 (code EPSG 2154) grâce à l'outil Reprojeter une
couche (Outils généraux pour les vecteurs) de la boîte à outils.
Vérifiez dans les propriétés de cette nouvelle couche, rubrique Source, que son SCR soit bien le Lambert 93 :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 7
Attention, si le SCR n'est pas le bon, ne le modi ez pas ici ! Utilisez l'outil Reprojeter une couche de la boîte à outils. Modi er le SCR et redé nir le SCR
sont 2 manipulations différentes.
Couche source : il s'agit de la couche autour de laquelle sera créée la ou les zones tampons, donc ici la couche de cours d'eau
coursdeau_osm_44_L93
Entité(s) sélectionnée(s) uniquement : cocher cette case afin de ne créer de zone tampon qu'autour de l'Erdre
Distance tampon : la couche étant projetée en Lambert 93, son unité est le mètre. Choisissez une distance de 100 mètres. Le bouton tout à
droite permet de faire varier la largeur de la zone en fonction des valeurs d'un champ ou d'une expression ; nous ne l'utiliserons pas ici
Regrouper le résultat : cette case permet de fusionner toutes les zones tampon qui seront créées ; sinon, une zone tampon est créée par
entité de la couche source. Cochez cette case pour cet exercice (cf. image ci-dessous)
Mis en tampon : cliquez tout à droite sur le bouton ... → Enregistrer vers un chier... choisir le nom : Erdre_tampon100m.gpkg par exemple
et l'emplacement de la couche qui sera créée
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 8
Pour aller plus loin : détail des autres paramètres
Les autres paramètres de l'outil de zone tampon sont moins fréquemment modi és et vous pouvez souvent laisser les valeurs par défaut. Voici leur
description pour information, que vous pouvez également retrouver dans l'aide (partie droite de la fenêtre de l'outil) ou bien la documentation QGIS [↗] :
Segments : plus cette valeur est élevée, plus les contours de la zone seront « arrondis ». Il s'agit en fait du nombre de segments utilisés pour
représenter un quart de cercle.
Style d'extrémité : il s'agit de la manière dont les zones tampons sont « terminées ». 3 valeurs sont possibles : rond, plat et carré
Différents types d'extrémité pour les zones tampon : de gauche à droite, rond, plat et carré.
Style de jointure : les zones tampons sont créées en « décalant » les sommets d'une entité, ici une ligne. Il existe plusieurs manières de réaliser ce
décalage, ce que contrôle ce paramètre. 3 valeurs sont possibles : rond, angle droit et oblique.
Différents types de jointure pour les zones tampon : de gauche à droite, rond, angle droit, oblique et superposition des 3.
Limite d'angle droite : ce paramètre n'est utilisé que pour les styles jointure à angle droit. D'après l'aide, il contrôle « la distance maximale de la
courbe de décalage ». Personnellement je trouve cette dé nition peu claire, et d'après mes observations les di érences sont minimes (on peut les
observer en passant de 1 à 2 par exemple). Ecrivez-moi si vous en savez plus !
L'intersection entre deux couches crée une troisième couche, avec uniquement les parties communes aux deux couches.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 9
La zone hachurée correspond à l'intersection entre le rectangle et le cercle.
L'idée sera ici de créer la couche d'intersection entre les communes et la zone tampon autour de l'Erdre créée ci-dessus. Ceci pourrait permettre de
visualiser par exemple pour chaque commune la partie qui se trouve en zone inondable.
Couche source : choisir la couche COMMUNE_44. Ne pas cocher la case « Entités sélectionnées uniquement » puisqu'il s'agit d'intersecter
toutes les communes
Couche de superposition : choisir la couche Erdre_tampon_100m. Idem, ne pas cocher la case « Entités sélectionnées uniquement »
Champs d'entrée à conserver : cette option permet de choisir les champs de la couche source à conserver. Ici, nous garderons tous les champs
et nous n'utiliserons donc pas ce paramètre
Champs à conserver : cette option permet de choisir les champs de la couche de superposition. Ici, nous garderons tous les champs et nous
n'utiliserons donc pas ce paramètre
Intersection : cliquez tout à droite sur le bouton ... → Enregistrer vers un chier... choisir le nom : inters_communes_tampon.gpkg par
exemple et l'emplacement de la couche qui sera créée
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 10
Ouvrez la table attributaire de cette couche : notez que les champs des deux couches sont présents.
A titre d'exemple d'application, comment faire pour obtenir pour chaque commune le pourcentage de sa surface en zone inondable ?
1. Ajouter un champ Surface à la couche d'intersection, en calculant pour chaque entité sa surface par exemple en hectares
2. Joindre ce champ Surface à la couche de communes, en effectuant une jointure attributaire sur les codes INSEE
3. Ajouter un champ à la couche de communes et y calculer le pourcentage en zone inondable, en utilisant le champ Surface joint et la surface de la
commune
En combinant les outils vus dans ce tutoriel (et d'autres !), on peut essayer de répondre à des questions sur des données spatiales.
Cette astuce est valable pour tous les outils de la boîte à outils, sur les vecteurs, rasters ou autres !
Dans cette fenêtre, chaque ligne correspond à une fois où vous avez lancé un outil de la boîte à outils, le tout classé par ordre chronologique.
Cliquez sur une des lignes : dans la partie basse de la fenêtre, vous pouvez voir la commande Python correspondante, que le logiciel a lancé pour
exécuter l'outil (voir partie XI.4).
Si vous double-cliquez sur une ligne, la fenêtre de l'outil se lance avec exactement le même paramétrage que celui utilisé cette fois-là. Ce qui
est très utile en particulier pour les outils avec beaucoup de paramètres, par exemple quand on fait des tests et qu'on est amené à relancer plusieurs
fois un outil.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 11
IX.2 Analyse spatiale : quelques exemples d'opérations sur des données raster
Préparation des données : découpage d'un raster
Explorer les données en modifiant le mode de représentation
Répartition des valeurs : histogramme de fréquence
La valeur des pixels sans valeur
Modifier le style pour explorer les données
Manipuler les données : extraction de valeurs
Exemples d'opérations sur des données d'altitude
Création de courbes de niveau
Projection d'un raster
Calcul de pente à partir du raster projeté
Vous verrez ici quelques manipulations sur un raster d'altitude, appliquées au modèle d'élévation numérique (MNE) de la Jamaïque.
Le but sera ici de découper un raster pour ne garder que la zone qui nous intéresse. Cette manipulation permet d'alléger les données et les futurs
traitements.
Ouvrez un nouveau projet QGIS. Ajoutez la couche raster srtm_21_09.tif située dans TutoQGIS_09_AnalyseSpat/donnees.
Le but va être de ne garder que la partie du MNE correspondant à la Jamaïque, en éliminant les parties de Cuba et des îles Caïman.
MNE sur fond OpenStreetMap. En gris transparent, l'emprise de la couche, en rouge encadré, la partie à conserver.
Rendez-vous dans la boîte à outils → GDAL → Extraction raster → Découper un raster selon une emprise :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 12
Couche source : sélectionnez srtm_21_09
Etendue de découpage : cliquez sur le bouton ... tout à droite, choisissez Dessiner sur le canevas. Il faut ensuite dessiner l'emprise à garder,
toujours dans l'outil de découpage. Dessinez un rectangle approximatif autour de l'île de la Jamaïque :
Découpé (étendue) : cliquez sur le bouton à droite ... et choisissez où la nouvelle couche sera créée, et son nom : srtm_jamaique
Dans la liste des couches, décochez srtm_21_09 pour ne voir que la couche découpée : elle ne comprend que la Jamaïque.
Notez qu'il est également possible de découper un raster suivant l'emprise d'une couche de polygones, en utilisant l'option Utiliser l'emprise de la
couche. Vous pouvez aussi directement rentrer à la main les coordonnées de l'emprise à conserver.
Les données ne contiennent maintenant plus que la zone d'étude et sont donc prêtes pour la suite... Mais au fait, que contiennent-elles, ces données ?
Avant de créer de nouvelles données à partir de ce MNE, ou bien de le croiser avec d'autres couches, il peut être judicieux d'explorer un peu ces données.
Pour cela, il est possible de faire beaucoup de choses en allant simplement dans les propriétés de la couche !
Une manière simple d'avoir un aperçu du contenu des données est de visualiser l'histogramme de fréquence des valeurs des pixels. Vous pourrez ainsi
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 13
voir d'un coup d'œil la répartition des valeurs d'élévation.
Propriétés de la couche srtm_jamaique → rubrique Histogramme : cliquez sur le bouton Calculer l'histogramme.
L'axe horizontal représente les valeurs de pixels, donc ici d'élévation. L'axe vertical représente le nombre de pixels ayant une valeur donnée. Il est
également possible de lire les valeurs minimale et maximale sou l'histogramme.
On peut voir d'un seul coup d'œil que beaucoup de pixels ont une valeur inférieure à 100 mètres d'élévation.
Il est possible de zoomer sur le graphique en dessinant un rectangle, ou bien en modi ant les valeurs min et max. Un clic droit permet de revenir à la
vue initiale.
Une information utile à savoir est la valeur des pixels « sans données » . En e et, vous ne voyez dans QGIS que les pixels de la Jamaïque et non ceux de
l'océan les environnant, bien que nous ayons précédemment découpé cette couche suivant un rectangle.
En fait, un raster étant un tableau, son emprise sera toujours rectangulaire et tous les pixels auront toujours une valeur . Cependant, par
commodité, on donne une valeur aberrante aux pixels « sans données ». D'où ce titre énigmatique !
Pour savoir quelle est cette valeur : propriétés de la couche → rubrique Transparence :
Regardez la valeur à droite de Aucune valeur de données : pour cette couche, cette valeur est de -32768.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 14
Il est évident que l'élévation n'est jamais de -32768 mètres : il s'agit d'une valeur aberrante pour indiquer que certains pixels n'ont pas de valeur
d'élévation associée.
Pour tester cela, décochez la case devant Aucune valeur de données et fermez la fenêtre des propriétés. Vous pouvez voir toute l'emprise de la
couche, y compris les pixels sans données.
Vous pouvez utiliser l'outil Identi er des entités pour cliquer sur un pixel « sans données » sur le bord du raster et voir que sa valeur
correspond bien à -32768.
Retournez dans les propriétés de la couche et recochez la case Aucune valeur de données.
Si vous utilisez à nouveau l'outil d'identi cation sur un pixel du bord du raster (désormais invisible), vous verrez qu'il est maintenant considéré comme
« sans données ». En cliquant en-dehors de l'emprise du raster, l'outil d'identification ne renvoie aucun résultat.
Pourquoi la valeur -32768 ? Voici quelques explications si vous désirez en savoir plus. Il existe di érents types de raster : 8 bits, 16 bits, 32 bits... Ce qui
correspond en fait au nombre de bits sur lesquels est stockée la valeur d'un pixel.
Ici, notre raster est de type 16 bits (ce que vous pouvez véri er en allant dans les propriétés de la couche, rubrique Information). Chaque valeur de pixel
est codée sur 16 bits, ce qui donne 216 soit 65536 possibilités. Les valeurs pouvant être positives ou négatives, elles vont de -32768 à 32767, puisque
65536/2=32768.
La valeur nulle est donc la valeur la plus aberrante possible, ici -32768.
Rendez-vous ici [↗] pour en savoir plus sur les di érents types de raster et les données qu'ils peuvent contenir. En règle général, on choisit le type codé
sur le moins de bits possibles en restant compatible avec les données, pour obtenir des rasters moins lourds.
Une manière simple d'explorer les données, aussi bien pour un vecteur que pour un raster, est de modi er la manière dont sont représentées les
données.
A la place de Bande grise unique, sélectionnez Pseudo-couleur à bande unique et appliquez les changements (sans forcément fermer la fenêtre des
propriétés).
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 15
Ce style permet de choisir le degradé de couleur utilisé pour étirer les valeurs.
Il est possible de modi er les classes, soit de manière automatique en choisissant le mode intervalle égal ou quantile et le nombre de classes, sous
le tableau des valeurs, soit à la main en double-cliquant sur une valeur dans le tableau.
Pour en savoir plus sur les méthodes de discrétisation : voir notammentici [↗].
Par exemple, modi ez les classes pour faire apparaître les pixels de valeur inférieure à 100 mètres, comprise entre 100 et 700 mètres et supérieure à
700 mètres :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 16
En modi ant le style des données, notamment en discrétisant les données et en faisant varier les classes, on peut avoir une meilleure idée du sujet
étudié, ici l'élévation de la Jamaïque. C'est une première approche !
Admettons maintenant que l'étape précédente nous ait permis de décider qu'on souhaite s'intéresser uniquement à la zone inférieure à 100 mètres
d'altitude.
Comment faire pour obtenir un nouveau raster, où les pixels d'élévation inférieure à 100 mètres ont une valeur de 1 et les autres une valeur de
0 ? Une telle couche pourra servir par exemple de masque, ou bien pour ne garder que les valeurs d'un raster portant sur un autre thème de la zone
inférieure à 100 mètres.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 17
Cet outil permet d'e ectuer des calculs sur des rasters, par exemple soustraire un raster à un autre. Nous l'utiliserons ici pour obtenir un raster où les
pixels d'élévation inférieure à 100 mètres ont une valeur de 1 et les autres une valeur de 0.
Dans la partie Couches en haut à gauche, double-cliquez sur srtm_jamaique pour faire apparaître le nom de la couche dans la partie
Expression en-dessous
Complétez l'expression en rajoutant à la main < 100 : l'expression complète est donc "srtm_jamaique@1" < 100
Dans la partie Reference Layer(s), cliquez sur le bouton ... à doite et sélectionnez la couche srtm_jamaique, pour que le raster créé ait la
même emprise, résolution et CRS
Comment l'expression "srtm_jamaique@1" < 100 nous pemet-elle d'obtenir le résultat souhaité ? Cette expression est évaluée pour chaque pixel, le
résultat est soit vrai (1) soit faux (0).
Contrairement à ce à quoi on aurait pu s'attendre, on peut voir en noir les valeurs supérieure à 100 mètres. Cependant, en interrogeant le raster avec
l'outil d'identification on peut voir que les pixels qui avaient une élévation < 100 mètres ont maintenant une valeur de 1, et les autres 0.
Il est facile de changer le mode de représentation, par exemple dans les propriétés → Symbologie → Dégradé de couleur : choisir Blanc vers noir
au lieu de Noir vers blanc.
Cette couche pourra servir par exemple de masque, telle quelle ou bien en la transformant en couche vecteur au moyen de l'outil Polygoniser.
Il existe un certain nombre d'opérations proposées par les logiciels SIG sur les rasters d'altitude, par exemple la création de courbes de niveaux,
d'ombrage, de pente... Nous verrons ici 2 exemples, sur les courbes de niveau et le calcul de pente.
Les courbes de niveaux sont des lignes imaginaires joignant tous les points situés à la même altitude. Nous allons créer des courbes de niveau distantes
de 100 mètres à partir du MNE de la Jamaïque.
Rendez-vous dans la boîte à outils → GDAL → Extraction raster → Courbe de niveau (dans les versions pécédentes de QGIS, cet outil peut se nommer
contour) :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 18
Couche source : sélectionnez srtm_jamaique
Intervalle entre les courbes de niveaux : tapez 100 pour un intervalle de 100 mètres
Nom de l'attribut : il s'agit du nom du champ qui contiendra l'altitude de la courbe. Vous pouvez laisser la valeur par défaut ELEV, ou bien
taper le nom de votre choix
Une couche de lignes a été créée. Chaque ligne possède en attribut son élévation, qui varie ici de 0 à 2200 mètres.
Il est également possible de créer à partir d'un raster d'altitude un raster de pente : chaque pixel aura la valeur de la pente en ce point. Pour en savoir plus
sur la manière dont est calculée la pente, vous pouvez vous référer à l'aide d'ArcGIS [↗] sur ce point.
La pente est calculée en fonction de la distance horizontale et de la hauteur. Dans notre cas, la hauteur est en mètres, et la
distance horizontale en degrés. Les deux unités étant différentes, le calcul de pente donnera des valeurs aberrantes.
La première étape est donc de projeter notre raster, pour obtenir des unités identiques verticalement et
horizontalement.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 19
En règle générale, il y a deux possibilités quand on cherche une projection pour un pays : utiliser une projection nationale, ou bien une projection UTM.
Pour savoir s'il existe dans QGIS des projections nationales pour la Jamaïque, vous pouvez faire une recherche dans les SCR proposés.
Rendez-vous dans les propriétés du projet, rubrique SCR, par exemple en cliquant sur l'icône de sphère tout en bas à droite de la fenêtre de
QGIS :
Tapez jamaica dans la rubrique Filtre : plusieurs réponses sont proposées, dont 3 SCR projetés. Une rapide recherche internet semble indiquer que
le SCR JAD2001 est le plus récent (source : http://www.jamaicancaves.org/jad2001.htm [↗]). C'est donc ce SCR que nous utiliserons.
Nous venons de changer le SCR du projet, mais pas celui de notre raster (pour rappel, voir ici).
Une étape préliminaire avant de projeter le raster : ouvrez les propriétés du raster, rubrique Information, sous-rubrique Bandes, recherchez
Aucune valeur de données. Vous devriez avoir -32768, notez cette valeur. C'est celle utilisée pour les pixels « sans valeur » (qui ont donc en réalité la
valeur -32768), en-dehors de l'île.
Ensuite, pour changer le SCR du raster : Boîte à outils → GDAL → Projections raster → Projection (warp) :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 20
Couche source : sélectionnez srtm_jamaique dans la liste
SCR cible : cliquez sur le bouton à droite pour rechercher le SCR JAD2001 code EPSG:3448
Laissez tous les autres paramètres par défaut, cliquez sur Exécuter.
Patientez... La nouvelle couche est ajoutée, vous pouvez vérifier dans ses propriétés (rubrique Source) que son SCR soit bien le JAD2001.
Il semblerait qu'il ne soit plus utile de préciser la valeur NoData, celle-ci étant automatiquement lue dans les propriétés du raster en entrée !
Supprimez les autres couches, pour ne garder dans le projet que la couche srtm_jamaique_JAD2001.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 21
Couche source : sélectionnez srtm_jamaique_JAD2001
Laissez les autres paramètres par défaut (pour plus d'infos sur les méthodes de Zevenberger & Thorne et Horn :
http://www.macaulay.ac.uk/LADSS/documents/DEMs-for-spatial-modelling.pdf [↗], pp. 12 et 13).
Ici, les pixels sombres représentent des pentes faibles et les pixels clairs de fortes pentes.
En cliquant sur un pixel avec l'outil Identifier les entités, vous pouvez connaître la valeur de la pente pour ce pixel :
Il existe beaucoup d'autres traitements possibles sur les données raster. Mais pourquoi toujours opposer raster et vecteur ? Dans le prochain chapitre,
découvrez comment les faire fonctionner main dans la main !
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 22
IX.3 Analyse spatiale : croisement de données vecteur et raster
Préparation des données : un seul SCR pour tous
Attribuer à chaque point une valeur d'élévation
Pour compléter ce chapitre, voici un exemple d'analyse mettant en jeu données vecteur et raster : en partant d'une couche de pente, et d'une couche de
points représentant des échantillons, nous allons calculer la valeur de la pente pour chacun des échantillons.
Ajoutez également la couche echantillons_jamaique_JAD2001 fournie dans le dossier TutoQGIS_09_AnalyseSpat/donnees. Cette couche
correspond à la localisation de points d'études imaginaires.
Comment vous-y prendriez-vous pour passer ces deux couches dans le même SCR ?
Il est possible soit de changer le SCR du raster, soit de changer le SCR du vecteur. Néanmoins, le temps de calcul est généralement moins long lorsqu'il s'agit
de modifier le SCR d'une couche vecteur, en particulier pour une couche de points.
Modi ez le SCR de la couche echantillons_jamaique_JAD2001 vers le WGS84 EPSG:4326. Nommez la nouvelle couche
echantillons_jamaique_WGS84.
Votre projet QGIS doit contenir uniquement les 2 couches echantillons_jamaique_WGS84 et srtm_21_09. Véri ez qu'elles sont toutes deux en
WGS84.
Nous avons vu qu'il n'est pas toujours nécessaire de travailler avec des couches dans le même SCR, certains outils acceptant de croiser 2 couches dans 2
SCR différents. Cependant, cela reste une bonne pratique et peut éviter des problèmes !
Comment faire pour donner à chacun des points sa valeur d'élévation ? Il faut pour cela attribuer à chaque point la valeur du pixel qui le recouvre.
Une recherche dans la boîte à outils, rubrique Analyse Raster, permet de découvrir l'outil Prélèvement des valeurs rasters vers ponctuels qui semble
correspondre à ce que l'on cherche.
Boîte à outils → Analyse raster → Prélèvement des valeurs rasters vers ponctuels
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 23
Couche de points en entrée : echantillons_jamaique_WGS84
Laissez l'option de sortie par défaut, pour créer une couche temporaire
Ici, notre raster ne possède qu'une seule bande. Certains raster en possèdent plusieurs, c'est le cas par exemple des images satellites qui ont di érentes
bandes pour le vert, le rouge, l'infrarouge etc.
Cet outil ajoutera autant de colonnes à la table de la couche de points que de bandes dans le raster. Ces champs auront en su xe le numéro de bande
(1, 2...), auquel il est donc possible de rajouter un préfixe.
Cliquez sur Exécuter, la couche temporaire est ajoutée et se nomme Sampled Points. Elle possède les mêmes géométries que la couche de points en
entrée, et une colonne de plus dans sa table.
Ouvrez sa table attributaire pour le vérifier : une colonne elev1 a été ajoutée, où l'élévation de chaque point est renseignée.
Attention toutefois, la résolution des données d'élévation est de 90 mètres : si les points représentent une location précise par exemple au mètre près,
l'élévation que nous leur avons attribué n'aura pas cette précision.
Nous avons vu ici un exemple très simple montrant qu'on peut croiser données vecteur et raster. Il est également possible de transformer des données
vecteur en raster (rastérisation) et inversement (polygonisation).
Par exemple, on peut vouloir rasteriser une série de couches vecteurs surfaciques pour pouvoir les additionner facilement, ou bien vectoriser une
couche raster représentant des zones pour pouvoir y affecter des données attributaires...
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 24
Chaque type de données a une utilisation différente, mais il est utile de garder à l'esprit que les 2 existent !
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 25
IX.4 Un exemple d'application : créer un maillage
Principe
Création d'une grille
Union !
Recalcul de la surface
Agrégation des données par maille
Rastérisation
Pour finir cette partie sur l'analyse spatiale, voici un exemple d'application mettant en jeu plusieurs notions. Il s'agira ici, à partir de données Corine Land
Cover [↗] d'occupation du sol, de créer un maillage sous forme de grille à l'échelle de la France métropolitaine, avec pour chaque case de cette
grille la surface en vignes.
Les mailles sont beaucoup utilisées dans di érents domaines, par exemple pour étudier la répartition des espèces en écologie. Cette méthode permet de
créer des représentations facilement comparables, et de travailler à différentes échelles en faisant varier la taille des mailles.
Nous verrons d'abord comment réaliser cela avec les outils QGIS, puis dans le chapitre suivant comment automatiser cette tâche avec le langage SQL,
afin de pouvoir facilement reproduire ce traitement sur d'autres données, avec une autre taille de grille...
...Et pour tirer partie de cette automatisation, nous finirons en soustrayant 2 maillages afin de voir l'évolution de la surface en vignes entre 2 dates.
Pour ce chapitre et le suivant, vous pouvez soit télécharger les données Corine Land Cover [↗] : Données Métropole 2000 [↗] puis les ltrer
pour ne garder que les vignes, comme détaillé dans le tutoriel, ou bien utiliser les données en téléchargement déjà ltrées (pour un
téléchargement moins lourd).
Principe
Pour bien comprendre la manip, nous allons commencer par créer un maillage en utilisant les outils QGIS.
Nous partirons des données Corine Land Cover (CLC) d'occupation du sol, en filtrant les données pour ne garder que celles correspondant au vignoble :
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
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 26
4. Rastériser le résultat, ce qui sera utile pour par exemple soustraire 2 maillages l'un à l'autre
Si ça n'est pas clair, ne vous inquiétez pas, tout devrait s'éclaircir par la pratique !
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_FR_RGF [↗] ou bien CLC00_221_FR_RGF (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 signi cation des codes, lisez le chier CLC_nomenclature.xls dans le
dossier TutoQGIS_09_AnalyseSpat/metadonnees.
Le SCR de cette couche est IGNF:LAMB93 équivalent au RGF93/Lambert93 code EPSG 2154.
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.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 27
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_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 : cliquez sur le bouton ... à droite pour spéci er l'emplacement et le nom de la grille qui sera créée → Enregistrer vers un chier ou dans
un GeoPackage, et nommez-la par exemple grille_CLC_50km
La table comporte un champ d'identi ant 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 de récupérer pour chaque case la surface en vigne correspondante. Nous allons voir maintenant que pour cela, l'union fait la force ! (et
l'agrégation aussi).
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 28
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 di é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.
Union : couche en entrée 1, couche en entrée 2 et couche résultat : elle contient 3 polygones distincts, sans superposition.
Notre but sera ici de faire une union entre la grille et les données CLC sur la vigne. La première étape sera de ne garder que les données CLC qui nous
intéressent.
Cette étape n'est pas nécessaire si vous utilisez la couche CLC00_221_FR_RGF disponible en téléchargement.
Il existe plusieurs possibilités pour cela, on pourrait par exemple sélectionner les vignes avec une requête attributaire puis exporter la sélection pour en
faire une nouvelle couche.
Pour changer un peu, nous allons ici filtrer les données, ce qui permet de n'a cher que les données répondant à un critère, à la fois dans la table et sur
la carte.
Quelle que soit la méthode choisie, l'important est de garder les données originales, pour pouvoir y revenir en cas de besoin !
Il faut d'abord rechercher quel est le code correspondant au vignoble : ouvrez le chier CLC_nomenclature.xls dans le dossier
TutoQGIS_09_AnalyseSpat/metadonnees.
Utilisez l'expression "CODE_00" = '221' pour ne garder que les entités ayant pour valeur 221 pour le champ CODE_00, qui correspondent donc aux
vignes.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 29
Nous pouvons maintenant procéder à l'union. Comme d'habitude, pour trouver l'outil adéquat, utilisez la barre de recherche de la boîte à outils avec
le mot union :
Couche source et couche de superposition : choisissez grille_CLC_50km et CLC00_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 : cliquez sur le bouton ... à droite, et enregistrez le résultat au format shape le ou GeoPackage. Nommez-le par exemple
union_grille50km_CLC.
Exécuter, patientez...
Vous pouvez vérifiez dans le résultat que l'union a bien été exécuté, les vignobles ayant été découpés selon les cases de la grille :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 30
Les champs des 2 couches en entrée sont présents.
Recalcul de la surface
Notre but étant de calculer la surface en vigne par maille, nous allons mettre à jour le champ AREA_HA. En e et, 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 (sélectionné en
jaune ci-dessous par exemple) :
Ces polygones étaient présent 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.
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 :
Véri ez 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)
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.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 31
L'expression est donc la suivante : if("AREA_HA" is not null, $area/10000, 0). Cela signi e que si le champ AREA_HA 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 dans la table attributaire, et quittez le mode édition en enregistrant les modifications.
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 (identi ant de la maille) en
récupérant pour les entités fusionnées la somme des valeurs du champ AREA_HA (surface en vignes).
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 pro te pour le renomme VIGNE_HA et en faire un champ de type entier, puisque
les virgules à cette échelle n'auront pas vraiment de sens.
Agrégé : comme d'habitude, cliquez sur ... tout à droite pour spécifier le nom et l'emplacement du résultat, au format GeoPackage ou shapefile.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 32
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 modi ant 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 :
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.
Rastérisation
On pourrait s'arrêter là... Mais nous allons faire une étape de plus, pour transformer notre couche de vecteur en couche raster, où 1 maille = 1 pixel.
Pourquoi cette opération ? Les données raster sont moins lourdes, et nous n'aurons pas de perte de précision puisque chaque maille correspondra à un
pixel. Nous pourrons ensuite très facilement faire des opérations telles que soustraire 2 maillages pour 2 années di érentes a n de voir l'évolution entre
ces 2 années.
Un autre avantage, plus minime, est au niveau de la représentation : sur une couche vecteur, même avec aucun contour, ceux-ci sont toujours
légèrement visibles, ce qui n'est pas le cas avec un raster.
Nous allons utiliser l'outil rasteriser (vecteur vers raster) de la boîte à outils :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 33
Couche source : il s'agit de la couche à rastériser, ici notre couche issue de l'agrégation
Champ à utiliser pour la valeur fixe à créer : choisissez ici le champ qui sera utilisé pour déterminer les valeurs des pixesls, donc VIGNE_HA
Unité du raster résultat : nous allons spéci er non pas un nombre de pixels en largeur et hauteur pour le futur raster, mais une taille de pixels
en mètres, choisir donc Unités géoréférencées
Largeur/Résolution horizontale et Hauteur/Résolution verticale : tapez la largeur et hauteur de chaque pixel en mètres, soit 50 000 puisque
notre grille a une résolution de 50 km
emprise du résultat : cliquez sur les ... à droite pour spéci er une couche modèle pour l'emprise du futur raster, par exemple la grille en entrée,
ou la couche d'agrégation
Rastérisé : spécifiez un nom et un emplacement pour le raster, ainsi que son format : TIF
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 34
Ce comportement peut être modifié en allant dans les propriétés de la couche → Transparence et en décochant la case Aucune valeur de données.
Pour a cher la répartition des vignes, modi ez le style de la couche en choisissant le type de rendu pseudo-couleur à bande unique, par exemple
avec une représentation en couleur continue :
Avec cette représentation utilisant une interpolation linéaire, contrairement à ce que la fenêtre pourrait laisser croire, il n'y a pas de classes : chaque
valeur correspond à une couleur unique, en étirant les couleurs de début et de n du dégradé pour les faire correspondre aux valeurs minimales et
maximales.
Vous aurez remarqué que nous avons dû procéder en plusieurs étapes, avec pour chaque étape di érents paramètres à spéci er. Si nous voulons
relancer cette opération pour une autre couche en entrée, il va nous falloir tout recommencer. A moins que ?
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 35
IX.5 Un exemple d'application : dites-le avec du SQL !
Création d'une nouvelle base SpatiaLite ou PostGIS
Création d'une base SpatiaLite
Création d'une base PostGIS
Import de données dans SpatiaLite ou PostGIS
Lancer une requête simple
Création d'une grille
Créer une grille avec SpatiaLite
Créer une grille avec PostGIS
Union et agrégation
Évolution temporelle : soustraction de 2 maillages
Relancer l'opération sur les données Corine Land Cover 2012
Soustraire les 2 maillages 2012 et 2000
Comment faire pour automatiser les opérations réalisées au chapitre précédent, afin de pouvoir rendre le processus plus reproductible ?
Une première solution serait d'utiliser un modèle. Nous ne verrons pas ici le pas à pas pour créer le modèle en question, mais vous pouvez essayer vous-
même en vous référant ici !
Une autre solution pour automatiser ce traitement est d'utiliser des requêtes SQL. Il s'agit d'une partie « pour aller plus loin », d'un niveau plus avancé, et
vous pouvez très bien décider de vous arrêter ici. Nous nous appuierons sur cette partie.
Il est possible d'utiliser 2 logiciels différents à partir de QGIS pour lancer des requêtes SQL :
SQLite et son module spatial SpatiaLite ne nécessitent pas d'installation, mais les fonctions disponibles sont plus limitées que celles de
Postgresql/PostGIS
Postgresql et son module spatial PostGIS doivent être installés en plus de QGIS, mais une fois cette opération réalisée beaucoup de possibilités
s'offriront à vous !
Il n'y a pas une solution meilleure qu'une autre mais elles répondent à des besoins différents.
Pour cet exercice les 2 logiciels peuvent être utilisés. Si vous choisissez Postgresql/PostGIS, l'installation ne sera pas détaillée ici mais on trouve de
nombreuses ressources sur internet. La syntaxe étant légèrement différente d'un logiciel à l'autre, les requêtes seront proposées en 2 versions.
Pour ce chapitre, vous pouvez soit télécharger les données Corine Land Cover [↗] : Données Métropole 2000 [↗] et Données Métropole 2012 [↗]
puis les ltrer pour ne garder que les vignes, comme détaillé dans le tutoriel, ou bien utiliser les données en téléchargement déjà ltrées (pour
un téléchargement moins lourd).
La première étape consiste à créer une base de données vides dans le logiciel choisi, et à y importer les données de départ, à savoir la couche Corine
Land Cover.
Si vous choisissez d'utiliser Postgresql/PostGIS, assurez-vous d'avoir installé ces logiciels avant de poursuivre !
Commencez par ouvrir un nouveau projet QGIS et chargez la couche CLC00_FR_RGF [↗] ou bien CLC00_221_FR_RGF (données déjà ltrées pour ne
garder que les vignes).
Dans le panneau Explorateur, faites un clic droit sur SpatiaLite → Créer une base de données... :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 36
Naviguez jusqu'au dossier où vous souhaitez créer votre base, et nommez-la par exemple maillage_clc. Elle est maintenant visible dans l'explorateur :
Si vous naviguez dans l'explorateur de chiers de votre ordinateur jusqu'à votre base de données, vous verrez qu'un chier SQLite a été créé. Par rapport
à un format comme le shapefile, une base de données est comme une boîte qui peut contenir plusieurs jeux de données.
Une base SpatiaLite est une base SQLite qui peut gérer des données spatiales grâce au module SpatiaLite. Elle est constituée d'une seule chier qu'on
peut copier d'un dossier à l'autre.
Ça n'est pas le cas des logiciels de bases de données « traditionnels » tels que PostgreSQL, qui fonctionnent selon une logique client-serveur [↗] : la base
est installé sur un serveur, et des utilisateurs peuvent s'y connecter à partir d'autres ordinateurs. Bien sûr il est possible de se servir de son propre
ordinateur comme de serveur, et la base ne sera accessible que depuis celui-ci : c'est ce qu'on appelle une base « en local ».
...Et c'est ce que nous allons faire ici ! Si vous avez décidé de travailler avec SpatiaLite, passez directement à l'import des données .
Je pars du principe ici que vous avez déjà installé PostgreSQL et PostGIS, et que vous êtes connecté à un serveur PostgreSQL, local ou distant.
QGIS peut uniquement se connecter à une base déjà existante, la création d'une nouvelle base PostgreSQL/PostGIS ne peut se faire dans QGIS .
Il existe plusieurs méthodes pour cela, qui sortent un peu de ce tutoriel : cette partie consistera surtout en des renvois vers des tutoriels existants.
PostgreSQL en soi ne possède pas d'interface graphique mais fonctionne en lignes de commande. Si ce mot vous fait peur, pas de panique ! Il existe
plusieurs logiciels qui peuvent servir d'interface graphique à PostgreSQL et vous permettre d'arriver à vos fins en quelques clics.
Le plus connu est peut-être pgAdmin [↗], qui est peut-être déjà installé sur votre ordinateur selon la manière dont vous avez installé PostgreSQL. Vous
pouvez également utiliser par exemple DBeaver [↗].
Il faut ensuite donner les 2 extensions postgis et postgis_topology à la base pour pouvoir y mettre des données géographiques. Encore une fois, vous
pouvez procéder au choix :
en ligne de commande [↗] avec ces 2 commandes : CREATE EXTENSION postgis; et CREATE EXTENSION postgis_topology;
avec pgAdmin, en faisant un clic droit sur la base → Créer → Extension puis en choisissant postgis et postgis_topology
avec DBeaver, sensiblement de la même manière qu'avec pgAdmin
Votre base PostGIS est créée, il ne reste plus qu'à s'y connecter dans QGIS !
Menu Couche → Gestionnaire des sources de données ou bien clic sur l'icône correspondante, rubrique PostgreSQL :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 37
Cliquez sur Nouveau pour créer une nouvelle connexion à notre base maillage_clc :
Nom : vous pouvez donner le nom de votre choix à la connexion, mais le plus simple est probablement de lui donner le même nom que la base :
maillage_clc
Hôte : tapez localhost si votre base est en local, sinon l'adresse de votre serveur PostgreSQL
Port : par défaut, le numéro du port est 5432, mais il peut être différent selon votre configuration
Cliquez ensuite sur Tester la connexion : selon votre configuration, il sera nécessaire ou non de rentrer vos identifiants
Si le test de connexion est réussi, vous pouvez cliquer sur OK et fermer la fenêtre. Vous pouvez également fermer la fenêtre du gestionaire de sources
de données.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 38
Une dernière étape consiste à créer un schéma nommé tutoqgis dans cette base. Un schéma correspond à un sous-dossier dans la base de données. Le
schéma par défaut se nomme public mais c'est une bonne pratique de créer vos propres schémas.
Rien de compliqué : toujours dans l'explorateur, clic droit sur votre base → Nouveau schéma...
Nommez-le par exemple tutoqgis. Votre base doit donc contenir 3 schémas : tutoqgis, public et topology.
Vous remarquerez que cette étape est plus longue et complexe avec PostgreSQL. Néanmoins, une fois ce logiciel con guré et avec un peu d'habitude, il ne vous faudra plus
que quelque secondes pour créer une nouvelle base !
Cette étape est presque équivalente pour les 2 logiciels, en passant par le gestionnaire de base de données de QGIS.
Avant d'importer les données, nous allons sélectionner dans la couche Corine Land Cover les entités correspondant au vignoble, pour n'importer que
celles-ci. Cette étape pourrait tout à fait être e ectuée une fois les données importées dans la base, mais comme cela le temps d'import dans SpatiaLite
ou PostGIS sera plus court.
Cette sélection n'est pas nécessaire si vous utilisez la couche CLC00_221_FR_RGF disponible en téléchargement.
Utilisez une requête attributaire sur la couche CLC00_FR_RGF pour ne sélectionner que les vignes : "CODE_00" = '221' (en jaune ci-dessous).
Il ne reste plus qu'à importer les entités sélectionnes, dans SpatiaLite ou PostGIS selon votre choix.
Dans QGIS, ouvrez la fenêtre du gestionnaire de bases de données : menu Base de données → DB Manager... ou bien clic sur l'icône
correspondante.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 39
...Ou bien PostGIS :
Dans les 2 cas, cliquez sur le petit triangle devant le nom de la base pour être sûr d'y être bien connecté.
Cliquez ensuite sur le bouton Import de couche/fichier en haut de la fenêtre du gestionnaire de bases de données :
N'oubliez pas de cocher la case Importer uniquement les entités sélectionnées pour n'importer que les vignes que vous avez préalablement
sélectionnées
Table en sortie : pour PostGIS, sélectionnez le schéma tutoqgis, et dans tous les cas nommez la future table SpatiaLite ou PostGIS clc00_vignes
(il est plus pratique d'éviter les majuscules)
clé primaire [↗] : il s'agit d'un champ d'identifiant unique qui sera créé, nommez-le gid par exemple
SCR cible : le SCR original IGNF:LAMB93 n'est pas reconnu par SpatiaLite ou PostGIS : sélectionnez son équivalent RGF93/Lambert93 EPSG 2154
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 40
Vous pouvez également cocher la case créer un index spatial, ce qui accélérera certaines opérations spatiales (mais il peut être créé par la
suite)
Cliquez sur OK, patientez... Il faut éventuellement actualiser la base pour que la nouvelle couche soit visible :
Bravo ! Vous disposez maintenant d'une base de données avec une couche de données.
Pour chaque couche PostGIS ou SpatiaLite, on peut accéder à partir du gestionnaire de bases de données à 3 onglet : info, table et aperçu.
L'onglet info vous permet de voir le nombre d'entités (4215), le type de géométrie (multipolygone), le SCR (RGF93 Lambert93 EPSG 2154), la liste des
champs...
Les onglets table et aperçu permettent un aperçu des données attributaires et spatiales : cliquez sur chacun d'eux.
Double-cliquez sur la couche dans la partie gauche du gestionnaire de bases de données pour l'ajouter à QGIS. Vous pouvez maintenant l'utiliser
comme n'importe quelle couche shapefile ou GeoPackage.
A ce stade, si vous n'avez aucune notion de SQL, je vous conseille de d'abord suivre cette partie sur les requêtes SQL.
Nous allons ici lancer une requête simple dans SpatiaLite ou PostGIS, en guise d'introduction.
Cliquez ensuite sur l'icône Fenêtre SQL (ou menu Base de données → Fenêtre SQL) : un nouvel onglet s'ouvre.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 41
Remarquez que cet onglet porte le nom de votre base : il ne sera pas possible d'y lancer une requête concernant une autre base (mais on peut très bien
ouvrir plusieurs onglets de requête).
Pour tester cet outil, nous allons sélectionner les polygones ayant une surface inférieure à 25 hectares.
Puis cliquez sur le bouton Exécuter : les 10 lignes correspondant à des polygones de surface < 25 hectares s'affichent.
Les di érents mots clés (select, from, where...) peuvent être écrits indi éremment en minuscules ou majuscules. De même, la requête peut être écrite en une seule ligne ou bien
avec des retours à la ligne.
SELECT *
signi e que nous allons sélectionner ( select) toutes (la mention *) les colonnes de la table attributaire, ainsi que la géométrie, qui est considérée comme
une colonne nommée geom, comme vous pouvez le vérifier dans l'onglet Info.
FROM clc00_vignes
applique un critère à la requête : seules seront sélectionnées les lignes répondant à ce critère, c'est-à-dire dont la valeur pour le champ area_ha est
inférieure à 25.
Ici, la requête ne crée pas de nouvelles couches mais renvoie les lignes sélectionnées. Comment faire pour créer une nouvelle couche à partir de cette
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 42
sélection ?
Dans PostGIS, il suffira d'ajouter devant cette requête CREATE TABLE nouvelle_table AS : la requête complète sera donc
pour créer une nouvelle couche nommée inf25ha dans le schéma tutoqgis par exemple.
Cliquez sur Exécuter : aucun résultat n'est renvoyé mais une nouvelle couche est ajoutée à la base, visible après l'avoir actualisée.
Pour SpatiaLite, les choses sont se compliquent un petit peu : la même requête renvoie bien une table avec les mêmes colonnes, mais la colonne geom
n'est pas reconnue comme colonne de géométrie. Il s'agit d'une simple table sans composante géographique.
Vous pouvez d'ailleurs le voir dans l'illustration ci-dessus : l'icône de inf25ha dans la base SpatiaLite est celle d'une table, alors que c'est un polygone dans
la base PostGIS.
Il faudra donc lancer une deuxième requête pour que la colonne geom soit bien reconnue comme colonne de géométrie dans SpatiaLite :
Après avoir cliqué sur le bouton Exécuter, cette requête doit renvoyer la valeur 1 indiquant que tout s'est bien passé. Après avoir cliqué sur le bouton
Actualiser en haut à gauche, inf25ha a une icône de polygone et est maintenant une couche géographique.
Pour expliquer cette requête : RecoverGeometryColumn [↗] est la fonction permettant de transformer une colonne ordinaire en colonne de géométrie
(sous réserve bien sûr que son contenu corresponde bien à des géométries). Cette fonction prend plusieurs arguments :
Une autre di érence entre PostGIS et SpatiaLite : dans PostGIS, il est possible de lancer plusieurs requêtes à la suite les unes des autres, pourvu que
chaque requête se termine par un point-virgule. Dans SpatiaLite, il faut lancer les requêtes une à une, en cliquant sur le bouton Exécuter entre chaque.
Nous allons maintenant utiliser des requêtes plus complexes pour créer une grille !
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 43
Création d'une grille
Notre première étape consiste à créer une grille ayant la même étendue que notre couche clc00_vignes, avec une maille de 50km. C'est l'équivalent de
cette étape réalisée au chapitre précédent.
Il existe dans SpatiaLite une fonction spéci que pour créer une grille ; la fonction équivalente n'est accessible dans PostGIS qu'à partir de la version 3.1. A
moins de disposer de cette version, il faudra donc utiliser une fonction « fait maison ».
Dans SpatiaLite, nous allons pouvoir utiliser la fonction ST_SquareGrid. 4 étapes seront nécessaires :
Pour créer une table vide avec une clé primaire id, la requête est la suivante :
CREATE TABLE grid00 (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT);
Après avoir exécuté cette requête et actualisé la base, la table grid00 est visible. Elle ne comporte aucune ligne et une seule colonne id.
SELECT AddGeometryColumn('grid00','geom',2154,'MULTIPOLYGON','XY');
La table est maintenant une couche de polygones avec une colonne de géométrie geom. Elle ne contient encore aucune entité, ce que vous pouvez
vérifier dans les onglets table et aperçu.
Il ne reste plus qu'à mettre à jour la géométrie avec la fonction ST_SquareGrid [↗] :
INSERT INTO grid00 (geom) SELECT ST_SquareGrid(Extent(v.geom), 50000) AS geom FROM clc00_vignes AS v
Cette dernière requête créer une grille avec la même étendue que clc00_vignes, et une maille de 50 km. La fonction ST_SquareGrid prend 2
arguments :
une géométrie correspondant à l'étendue de la grille, ici l'étendue de clc00_vignes récupérée au moyen de la fonction Extent
la taille de maille dans le SCR de la couche, ici 50 000 mètres
Notez également que pour simplifier la requête, la couche clc00_vignes est appelée v : clc00_vignes AS v. On peut donc y faire référence dans le reste
de la requête par la lettre v sans taper son nom complet.
Vous pouvez ajouter cette couche à QGIS en double-cliquant sur son nom :
Cependant, cette couche ne contient qu'une seule entité multi-partie : vous ne pouvez pas sélectionner une seule case. Une dernière requête est donc
nécessaire :
Ici, nous utilisons la fonction ElementaryGeometries pour passer d'une couche de multipolygones à une couche de polygone. Cette fonction utilise
les arguments suivants :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 44
La couche grid00_sp comporte maintenant autant d'entités que de cases et est de type POLYGON. Il est possible de sélectionner une seule case.
Malheureusement, la fonction ST_SquareGrid permettant la génération d'une grille avec PostGIS n'est accessible qu'à partir de la version 3.1. A moins de
disposer de cette version, il faudra donc utiliser notre propre fonction !
Une fonction [↗] est un bout de code pouvant être « appelé ». C'est en quelque sorte un raccourci qui permet d'éviter de taper une série d'instructions,
en tapant seulement le nom de cette série d'instructions.
Les fonctions peuvent prendre des arguments en entrée : par exemple, une couche, une taille de maille... Et peuvent renvoyer un résultat un sortie, par
exemple une grille.
Nous allons ici utiliser cette fonction [↗] créée par Alexander Palamarchuk pour générer une grille.
Dans la fenêtre du gestionnaire de bases de données, après avoir sélectionné la base PostGIS, ouvrez un nouvel onglet de requête (menu Base de
données → Fenêtre SQL).
Copiez et coller le code suivant dans cet onglet, issu de ce post sur StackExchange [↗] (la seule modi cation est celle du code EPSG du SCR : 2154 au
lieu de 28408) :
X := Xmin;
<<xloop>>
LOOP
IF (X >= Xmax) THEN
EXIT;
END IF;
i := i + 1;
sectors[i] := ST_GeomFromText('POLYGON(('||X||' '||Y||', '||(X+$2)||' '||Y||', '||(X+$2)||' '||(Y+$2)||',
'||X||' '||(Y+$2)||', '||X||' '||Y||'))', $3);
X := X + $2;
END LOOP xloop;
Y := Y + $2;
END LOOP yloop;
La fonction makegrid_2d est maintenant accessible dans PostGIS : vous n'aurez plus besoin de retaper ce code.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 45
l'étendue de la grille, c'est-à-dire l'étendue de clc00_vignes
la taille de maille, soit 50 000 mètres
Quelques explications, cette fois-ci nous prendrons cette requête non plus ligne par ligne, mais fonction par fonction...
Une petite astuce : en cliquant sur une parenthèse ouvrante ou fermante dans l'onglet de requête du gestionnaire de bases de données, cette parenthèse et son alter ego sont
surlignées en vert, ce qui permet de mieux comprendre l'emboîtement des fonctions.
Cette première ligne veut simplement dire que cette requête va créer une nouvelle table nommée grid00 dans le schéma tutoqgis.
Cette nouvelle table contiendra 2 colonnes : une colonne gid d'identi ant unique, créée avec la fonction row_number() [↗], et une colonne de géométrie
geom. Comme la table est créée à partir d'un deuxième SELECT, il faut donner un nom (alias) à cette sous-requête, ici q_grid.
Vous pouvez essayer de relancer la requête en omettant la partie AS q_grid, vous obtiendrez un message d'erreur vous indiquant que la sous-requête doit avoir un alias :
ERROR: subquery in FROM must have an alias.
La sous-requête utilise la fonction ST_Dump [↗], qui permet de créer des entités à une seule partie. Pour récupérer une géométrie en retour avec cette
fonction, on a ajouté .geom, et pour nommer cette géométrie geom AS geom.
makegrid_2d(..., ...)
La fonction ST_Dump prend un seul paramètre en entrée correspondant à une géométrie. Ici, cette géométrie sera celle renvoyée en sortie par la
fonction st_makegrid créée précédemment, qui prend elle en entrée 2 arguments, séparés par une virgule.
Le premier argument de la fonction makegrid_2d correspond à une étendue. On utilise pour la créer la fonction ST_Extent [↗] sur la couche
clc00_vignes. Il faut également attribuer un système de coordonnées (SRID dans la jargon PostGIS) à cette étendue, ce qui est fait avec la fonction
St_SetSRID [↗], qui utilise 2 paramètres : le résultat de ST_Extent, et le code EPSG 2154 (RGF93 Lambert 93).
Si vous testez la requête sans utiliser la fonction ST_SetSRID, en remplaçant la partie ci-dessus par « select st_extent(geom) from tutoqgis.clc00_vignes », vous obtiendrez un
message d'erreur vous indiquant que la géométrie en entrée n'a pas de système de coordonnées : ERROR: ST_Transform: Input geometry has unknown (0) SRID
50000
50000 est le deuxième paramètre utilisé par la fonction makegrid_2d, qui correspond à la longueur du côté d'une maille dans le SCR utilisé (ici Lambert
93, donc en mètres).
Actualisez la base : la couche grid00 est visible, on peut l'ajouter à QGIS, mais son type de géométrie n'est pas reconnu. Pour cela, une dernière
requête :
Select populate_geometry_columns()
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 46
A ce stade, si vous avez suivi le chapitre précédent et créé une grille avec l'outil Créer une grille de QGIS, l'opération paraît bien plus compliquée en SQL.
Avec un peu de chance la partie suivante vous donnera l'impression inverse !
Union et agrégation
Nous allons maintenant donner à chaque case de cette grille une valeur correspondant à sa surface en vignes, à partir de la couche clc00_vignes.
Cette opération regroupe les 3 parties du chapitre précédent : union, recalcul de la surface et agrégation des données par maille (je vous avais bien dit
que le SQL avait des avantages).
Comme d'habitude, à vous de choisir votre logiciel préféré pour cette opération, qui nécessite donc 2 couches : une grille, et une couche de polygones.
La requête est la même pour SpatiaLite et PostGIS, il faut juste ajouter le nom du schéma tutoqgis pour PostGIS, et exécuter la requête sur grid00_sp
et non grid00 pour SpatiaLite.
SpatiaLite :
PostGIS :
Comment fonctionne cette requête ? Prenons ses lignes une à une, mais dans le désordre (ici il s'agit de la requête PostGIS, mais les explications sont les
mêmes pour SpatiaLite) :
Pas de souci ici, il s'agit de créer une table nommée grid00_surf dans le schéma tutoqgis. On passe 2 lignes plus loin !
Comme prévu, cette requête va utiliser les 2 couches grid00 et clc00_vignes, toutes 2 dans le schéma tutoqgis. Dans le reste de la requête, on se
référera à ces tables par leur alias : g pour la grille, v pour les vignes. On remonte à la ligne du dessus...
Si on veut relancer cette requête sur d'autres couches, grâce à l'alias il n'y aura besoin de modifier les noms des couches qu'à un seul endroit !
La clause GROUP BY [↗] permet de regrouper toutes les entités ayant la même valeur de géométrie et d'identifant. Elle implique d'utiliser une fonction
d'agrégation pour les colonnes autres que geom et gid. Ici, c'est la fonction d'agrégation SUM qui est utilisée dans la deuxième ligne de la requête pour
créer la colonne surf.
La requête pourrait être lancée telle quelle. Pour qu'elle soit moins longue à s'exécuter, on a rajouté la ligne
qui permet de ne prendre en compte que les cases de la grille qui sont superposées avec des vignes. Avec ce critère, la table créée ne contient donc que
ces cases. Vous pouvez tester en supprimant cette ligne, le résultat sera un peu plus long à créer.
ORDER BY g.gid
Enfin, cette dernière ligne, optionnelle, permet de choisir l'ordre des lignes dans la table, ici un ordre croissant sur le champ gid.
Si vous utilisez SpatiaLite, il reste une requête pour que la colonne géométrie soit reconnue en tant que telle.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 47
Exécutez cette requête sur votre base SpatiaLite :
On peut maintenant visualiser le résultat, que vous ayiez utilisé SpatiaLite ou PostGIS.
Ajoutez la couche créée à QGIS. Vous pouvez par exemple lui attribuer un style gradué pour visualiser la présence de vignes :
Avec 5 ou 6 lignes de SQL, vous avez accompli l'équivalent de 3 outils QGIS et de beaucoup de clics !
Et surtout, il sera très facile de relancer toute cette opération sur d'autres données, comme nous allons le faire ci-dessous.
Nous avons jusqu'ici travaillé sur les données Corine Land Cover 2000. Nous allons maintenant utiliser les données équivalentes pour l'année 2012, ce qui
nous permettra de visualiser l'évolution entre ces 2 années.
Nous allons donc relancer l'opération précédente (union et agrégation) sur la couche CLC 2012.
Ajoutez à QGIS la couche CLC12_FR_RGF [↗] ou CLC12_221_FR_RGF. Sélectionnez éventuellement les vignes ("CODE_12" = '221') et importez-les dans
votre base SpatiaLite ou PostGIS sous le nom clc12_vignes.
Il faut ensuite relancer les mêmes requêtes que précédemment, en remplaçant les noms des couches :
Attention, pour que les 2 grilles 2000 et 2012 se superposent exactement, nous allons créer la grille 2012 avec la même étendue que la couche
clc00_vignes et non clc12_vignes (ce qui est possible car il n'existe pas de nouvelles vignes en 2012 hors emprise de la couche 2000).
Pour SpatiaLite :
CREATE TABLE grid12 (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT);
SELECT AddGeometryColumn('grid12','geom',2154,'MULTIPOLYGON','XY');
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 48
SELECT RecoverGeometryColumn('grid12_surf', 'geom', 2154, 'POLYGON', 'XY');
Pour PostGIS :
Select populate_geometry_columns();
Rapide, non ? Quand vous travaillez avec des requêtes SQL, une pratique peut être de copier les requêtes dans un chier texte. Ainsi vous en gardez la
mémoire, et si vous avez besoin de les relancer sur d'autres données, il vous su ra de faire un rechercher-remplacer sur les noms des couches, puis de
recopier ces requêtes dans le gestionnaire de bases de données QGIS.
Il est possible en SQL d'ajouter des commentaires [↗], non pris en compte : la ligne doit alors être précédée par 2 tirets. Ceci vous permet d'expliquer vos
requêtes, ce qui est toujours utile quand on reprend un travail quelques semaines/mois/années plus tard, ou pour vos collègues.
En guise de dernière application pour ce chapitre, nous allons voir 2 manières de visualiser l'évolution de la surface en vignes entre 2000 et 2012 :
On pourrait aussi travailler en mode raster avec des requêtes SQL ! Mais ce chapitre est déjà bien rempli.
L'idée est donc de soustraire pour chaque case de grille les données 2000 aux données 2012, afin de visualiser une évolution, négative ou positive.
Si on utilise le langage SQL, on va pouvoir faire une jointure attributaire sur le champ gid entre les 2 couches grid00_surf et gri12_surf.
La requête sera la même pour SpatiaLite et PostGIS, il faut simplement ajouter le nom du schéma tutoqgis devant le nom des tables pour PostGIS, et
mettre à jour la colonne de géométrie pour SpatiaLite.
SpatiaLite :
PostGIS :
gid, ici en récupérant le champ gid de la couche grid00 (mais on aurait très bien pu remplacer g1.gid par g2.gid, le résultat serait le même)
une colonne diff_surf correspondant à la différence de surface en vignes entre 2012 et 2000
la géométrie geom, idem on aurait pu remplacer g1.geom par g2.geom
La ligne
est celle qui fait la jointure entre les 2 couches, sur le champ gid.
Pour visualiser cette évolution, ajoutez la couche à QGIS, avec un style gradué :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 49
Style gradué...
Sélectionnez une palette de couleur divergente, pour représenter d'une couleur les diminutions et d'une autre les augmentations
Cochez la case Classification symétrique, pour représenter avec la même intensité de couleur des variations positives et négatives de même
ampleur, avec comme valeur du milieu 0
Une autre manière de faire pour cette opération est de convertir les 2 maillages en rasters, et de soustraire ces rasters l'un à l'autre.
Ouvrez un nouveau projet QGIS, ajoutez-y vos 2 couches SpatiaLite ou PostGIS grid00_surf et grid12_surf.
Dans la boîte à outils, cherchez l'outil GDAL Rasteriser (vecteur vers raster) :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 50
Double-cliquez sur cet outil :
Champ à utiliser : sélectionnez le champ surf, chaque pixel du raster aura ainsi la valeur correspondante de ce champ
Unité du raster résultat : a n de pouvoir xer la taille du pixel en mètres et non le nombre de pixel du raster résultat, sélectionnez Unités
géoréférencées
Largeur/Résolution horizontale et verticale : tapez 50 000 pour une taille de pixel de 50 km, identique à celle du maillage d'origine
Emprise du résultat : cliquez sur les ... à droite et sélectionnez la couche grid00_surf, pour que le futur raster ait la même étendue que le
maillage d'origine
Vous pouvez choisir de créer un fichier temporaire ou bien d'enregistrer le résultat sur votre ordinateur.
Lancez la rastérisation... La couche résultat est automatiquement ajoutée à QGIS, et se superpose avec la couche grid00_surf :
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 51
Si vous avez créé une couche temporaire, renommez-la par exemple rast00 (en la sélectionnant puis en appuyant sur la touche F2) a n de ne pas la
confondre avec le deuxième raster sur 2012 par la suite.
E ectuez la même opération sur la couche grid12_surf pour créer un deuxième raster. Si c'est une couche temporaire, renommez-la par exemple
rast12.
Expression : double-cliquez sur la couche rast12, tapez le signe - (ou cliquez sur ce signe dans les opérateur), puis double-cliquez sur la couche
rast00. L'expression finale est "rast12@1" - "rast00@1"
Reference layer : cliquez sur les ... tout à droite, et sélectionnez l'une ou l'autre couche rast00 ou rast12 : la couche créée aura la même
emprise, résolution et SCR que cette couche de référence
Output : vous pouvez soit créer une couche temporaire, soit enregistrer cette couche sur votre ordinateur
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 52
Pour une représentation similaire à celle obtenue plus haut, il faut paramétrer le style de ce raster (cliquez sur l'image pour la voir en plus grand) :
Interpolation : discrète
Palette de couleur : choisissez une gamme de couleur divergente, pour représenter d'une couleur les diminutions, et d'une autre les
augmentations
Valeurs de classes : ici, pas de possibilité de spéci er une discrétisation symétrique autour de 0. Le plus simple est donc de recopier les limites
de classes obtenues plus haut pour la couche vecteur. Attention, il s'agit des bornes supérieures des classes !
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 53
Bravo, vous êtes arrivés au bout de ce chapitre ! Vous pouvez vous reposer avec le suivant sur les modes de représentation et la mise en page de cartes.
Ce tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution-ShareAlike 4.0 International 54