Introduction aux systèmes d'information géographique avec QGIS

Centre de la science de la biodiversité du Québec

Guillaume Larocque, Professionnel de recherche. (guillaume.larocque@mcgill.ca)

12 octobre 2016, École Polytechnique, Université de Montréal.

QGIS 2.16 et GRASS 7 seront utilisés pour cet atelier. Veuillez vous assurer d'avoir les logiciels proprement installés sur votre ordinateur avant l'atelier.

Installez simplement QGIS et GRASS avec le programme d'installation disponible ici.

Générales

QGIS

GRASS

Portails pour le téléchargement de données géo-spatiales

Le “Geographic Resources Analysis Support System” (GRASS) est un des systèmes d'information géographique les plus anciens qui est toujours en utilisation active aujourd'hui. Ce logiciel a été développé à l'origine au début des années 1980 par l'armée Américaine comme outil de gestion pour les applications militaires. Ce qui était à l'origine un logiciel avec ligne de commande ne fonctionnant que sur des sytèmes Unix a évolué pour devenir un outil libre et multi-plateformes offrant des possibilités pour l'affichage et l'analyse de données vectorielles et matricielles, pour le traitement d'images, la télémétrie, la gestion de base de données, et beaucoup plus. Ces dernières années, GRASS s'est intégré à la fondation OsGeo (Open Source Geospatial Fondation), une organisation sans buts lucratifs qui s'est donné pour mission de supporter et de promouvoir le développement collaboratif de technologies et de données géospatiales libres et gratuites. Cette fondation supporte aussi de nombreux autres projets pour la cartographie sur le web et les SIG, ainsi que des bibliothèques variées pour la conversion, l'entreposage et l'intéropérabilité des données géospatiales. Un des projets supporté par OSGeo est Quantum GIS (QGIS), un SIG avec un interface convivial et multi-plateformes pour l'affichage, l'édition et le traitement de données géospatiales vectorielles et raster. Les possibilités offertes par QGIS peuvent être grandement étendues grâce à de multiples extensions développées par les utilisateurs du logiciel. Un des aspects intéressants de QGIS est son intégration possible avec GRASS, permettant à l'utilisateur d'effectuer plusieurs opérations de GRASS dans QGIS. Ces multiples possibilités font de QGIS un SIG très polyvalent.

Autres Systèmes d'information géographique libres et gratuits potentiellement intéressants:

  • uDIG - Un SIG intéressant et convivial écrit en Java pour l'accès, l'édition et la visualisation de données géospatiales. Ce logiciel est présentement en développement actif.
  • SAGA GIS - (System for Automated Geoscientific Analyses) Un SIG qui a de nombreuses fonctions pour l'analyse de données spatiales avancée.
  • ILWIS Open - Un SIG et logiciel pour la télémétrie qui intègre des données matricielles, vectorielles et thématiques.
  • gvSIG - Un logiciel qui est présentement en développement qui a un interface convivial, qui accepte les formats de fichiers les plus communs et qui offre de nombreux outils pour effectuer des requêtes, créer des modèles, faire des analyses, traiter des réseaux, etc.
  • OpenJUMP GIS - La version actuelle de OpenJUMP peut lire et écrire des shapefiles et autres fichiers vectoriels, et offre peu de possibilités pour le traitement d'images. Dans son état actuel, ce logiciel peut être utilisé pour visualiser des données SIG ou pour l'édition simple de la géométrie et des attributs de données vectorielles.

Note: vous pouvez comparer les possibilités offertes avec les logiciels d'aujourd'hui avec le premier SIG créé en 1965 pour le Canada Land Inventory. Voir ces vidéos sur Youtube: Data for decision Part I, Part II et Part III.

Cliquez ici pour télécharger le fichier ZIP contenant tous les fichiers requis pour les exercices. Veuillez l'extraire dans un répertoire facilement accessible.

5 - Exercices

Exercice 1 - Numérisation et affichage

Objectif: Créez une carte sur laquelle on peut voir les deux forêts appartenant à l'Université McGill dans l'Ouest de l'île de Montréal: L'Arboretum Morgan et la Réserve Molson. Faites une proposition d'agrandissement de ces réserves et créez une carte sur laquelle apparaissent les réserves et les agrandissements.

Étape 1: Activez le 'OpenLayers Plugin' dans les Extensions.

Étape 2: Créez un fichier dans un éditeur de texte (e.g. Notepad sur Windows ou TextEdit sur Mac) et y copier le texte suivant:

ID,Nom,Long,Lat
1,MorganArboretum,-73.9541,45.4303
2,MolsonReserve,-73.9763,45.3943

Sauvez-le ensuite avec un extension .csv. Dans QGIS, ajoutez ce fichier comme couche vectorielle en sélectionnant l'option 'Ajoutez une couche de texte délimitée'. Utilisez Longitude pour la colonne des X et Latitude pour la colonne des Y et indiquez que le fichier est séparé par des virgules. Dans la fenêtre suivante, spécifiez Système de Coordonnée geographique>WGS 84 comme SCR. Vous devriez maintenant voir apparaître deux points indiquant la localisation de la Réserve Molson et de l'Arboretum Morgan.

Étape 3: Ajoutez une couche 'Google Satellite' en utilisant l'extension OpenLayers (>Internet>OpenLayers plugin). Notez que le SCR du canevas est maintenant 'Google Mercator' (WGS 84 / Pseudo mercator). Déplacez cette couche en dessous du canevas en cliquant-glissant le nom de la couche vers le bas dans la table des couches à gauche.

Étape 4: Numérisez la Réserve Molson et l'Arboretum Morgan. Vous devez d'abord ajouter une nouvelle couche shapefile (Couche>Créer une couche) de type polygone et ajouter une colonne pour le nom (Donnée Texte, longueur 80) et choisissez (CRS NAD 83/UTM 18N). Cliquez sur OK et donnez à ce fichier shapefile un nom approprié (e.g. Reserves_McGill). Activer le mode édition (­>Couche­­­­>­Basculer en mode édition)­­­­­­­­­­ et numérisez les deux réserves en cliquant sur l'icône . Pour vous aider à numériser les deux réserves, utilisez les points que vous avez importés à partir du fichier CSV. Pour la réserve Molson, numérisez la forêt située entre le boulevard résidentiel (Boul Perrot) et l'autoroute 20. Pour l'Arboretum, numérisez la région boisée située autour du point central. L'Arboretum fait approximativement 250 hectares. Ajoutez maintenant des polygones adjacents pour indiquer de quelle façon vous prévoyez étendre les réserves. Pour ce faire, il est important de sélectionner l'option 'Activez l'accrochage sur les intersections' pour cette couche dans >Préférences>Options d'accrochage et S'accrocher sur un sommet avec une tolérance de 20 mètres.

Étape 5: Sortez du mode édition et sauvez cette couche.

Étape 6: Démarrez un nouveau projet et spécifiez le SCR du canevas à NAD 83/UTM 18N.

Étape 7: Ajoutez-y le fichier shapefile avec les réserves que vous venez de créer.

Étape 8: À partir du menu 'Propriétés de la couche', changez les couleurs des deux réserves à partir de l'onglet Style. Choisissez 'Catégorisé' et spécifiez la colonne contenant les noms des réserves avant de cliquer sur classer. Depuis l'onglet étiquettes. Ajoutez ensuite des étiquettes spécifiant le nom des réserves et définissez des étiquettes pour les extensions des réserves que vous proposez.

Étape 9: Créez une carte qui montre les réserves que vous avez numérisés. Note: pour ajouter la carte au composeur d'impression, vous devez cliquer sur l'icône 'Ajouter une nouvelle carte' et cliquer-glisser sur la feuille blanche pour définir l'étendue de la carte sur la feuille. Depuis les données 1:50 000, ajoutez-y les routes (road_segment1.shp), les autres régions boisées (wooded_area_2.shp) et les étendues d'eau (water_body_2.shp). Définissez des couleurs appropriées pour chaque couche en utilisant l'onglet Style dans le menu >Propriétés de la couche. Créez une jolie carte avec le Composeur d'impression, en ajoutant une Flèche indiquant le nord, des étiquettes et une légende. Sauvegardez cette carte en fichier PNG.

Exercice 2 - Calculs spatiaux, affichage et palettes

Étape 1 Ajoutez le fichier “Sections de vote Elections 2014_04_07.shp” au canevas.

Étape 2 Zoomez sur la région de Montréal, cliquez sur les propriétés de la couche et allez dans l'onglet “Style”. Choisissez une palette de couleurs pour indiquer le nombre d'électeurs dans chaque section de vote.

Étape 3 Notez que les unités du système de référence de ce fichier sont des mètres. Ouvrez la table d'attributs en cliquant sur le nom de la couche et en cliquant sur le bouton de droite de la souris et choisissant “Ouvrir la table d'attributs”. Cliquez sur l'icône “Calculatrice de champs”. Ajoutez une colonne contenant la densité d'électeurs de chaque section. Nommez la colonne “densite”, choisissez type “Nombre décimal” Longueur du champs 15, Précision 2. La densité sera en électeurs par km^2.

1000000* "ELEC_2014" / $area

La fonction /$area calcule l'aire de chaque zone en m^2.

Étape 4 Sortez du mode d'édition en cliquant sur le crayon et sauvegardez les changements.

Étape 5 Choisissez une palette de couleur permettant de visualiser la densité de électeurs.

Exercice 3 - Requêtes et analyses simples

Dans cet exercice, nous allons afficher les édifices commerciaux ainsi que les routes résidentielles dans un rayon de 1km autour de l'aéroport Pierre-Elliott-Trudeau.

Vous pouvez accéder aux définitions des couches u fichier 1:50 000 CanVec ici

Étape 1: Ajoutez la couche de fond 31h05_02_0.tif au canevas en utilisant Couche>Ajouter une couche>Ajouter une couche raster.

Étape 2: Ajoutez la couche road_segment1.shp au canevas en utilisant Couche>Ajouter une couche>Ajouter une couche vecteur.

Étape 3: Sauvez la couche road_segment1 dans un nouveau fichier Shapefile avec le SCR NAD 83/UTM18N en cliquant sur le nom de la couche dans la table des matières et en choisissant “Enregistrez sous…”. Changez le SCR et donnez un nouveau nom à la couche “routes_UTM18”. Ajoutez cette couche au canevas et enlevez la couche road_segment1.

Étape 4: Ajoutez ensuite la couche runway_2.shp au canevas. Sélectionnez cette couche dans la table des matières et sélectionnez l'aéroport Pierre-Elliott Trudeau en utilisant l'icône avec un carré jaune et une flèche blanche. “Sélectionner les entités avec un rectangle ou un simple clic”.

Étape 5: Enregistrez cette couche sous un nouveau nom, avec le SCR NAD 83/UTM18N et choisissez de n'enregistrer que les entités sélectionnées. Appelez cette nouvelle couche “Aeroport_PET_UTM18” et ajoutez là au canevas.

Étape 6: Créez un nouveau fichier polygone définissant un tampon de 1km autour de l'aéroport. Pour ce faire, cliquez sur Vecteur>Outil de géotraitement>Distance tampon fixe et choisissez le fichier Aeroport_PET_UTM18. Spécifiez une distance de 1000 mètres (le système UTM est en mètres). Donnez un nom au fichier tampon en cliquant sur Tampon […] Enregistrer dans un nouveau fichier.

Étape 7: Filtrez la couche routes_UTM18 pour n'obtenir que les routes de type “Locale-rue”. Pour ce faire, sélectionnez la couche et cliquez sur Couche>Filtrer et mettre la formule:

"rdcls_fr" = 'Locale-Rue'

Étape 8: Coupez (clip) les routes que vous venez de filtrer qui se trouvent à l'intérieur du tampon en utilisant la fonction Vecteur>Outils de géotraitement>Couper. La couche en entrée est la couche des routes et la couche de découpage est la couche du tampon de l'étape 6.

Étape 9: Installez l'extension QuickOSM. Trouvez ensuite la fonction Vecteur>QuickOSM>QuickOSM et spécifiez la clé “building” et la valeur “yes” et choisissez l'emprise de la couche du tampon de l'étape 6. Enregistrez cette couche avec le SCR NAD83/UTM18N.

Étape 10: Coupez ensuite cette couche pour n'obtenir que les édifices situés dans le tampon.

Étape 11: Créez une carte utilisant le fichier raster 31h05_02_01 comme couche de fond et contenant les édifices et routes dans le tampon ainsi que le tampon lui même. Choisissez des couleurs qui feront ressortir les éléments vectoriels sur la couche de fond. Sauvegardez votre carte dans le composeur d'impression avec une légende, et une échelle.

Exercice 4 - Manipulation de rasters et introduction à l'imagerie satellitaire

Objectif: créer une image en fausses-couleurs RVB et une carte NDVI (Normalized Difference Vegetation Index), y associer une palette de couleur et extraire le NDVI moyen pour les parcs et terrains de la région. Trouver quel parc a la végétation la moins abondante.

Étape 1: Nous allons d'abord créer une image en fausses couleurs afin de bien visualiser les contrastes. Pour ce faire, trouvez la fonction Raster>Divers>Fusionner. Choisissez les bandes Landsat 4,3 et 2 (en cliquant sur leur nom dans cet ordre) comme fichier en source, spécifiez Landsat_432.tif commme fichier en sortie, et activez l'option 'Pile de couches'. Assurez vous que l'ordre des couches est la bonne dans la commande GDAL en bas est la bonne (4, 3, 2). Sinon, changez-là. Si vous avez sélectionné les couches dans le bon ordre, la bande Landsat 4 devient la bande 1 (Rouge), la bande Landsat 3 devient la bande 2, et la bande Landsat 2 devient la bande 3 (Bleu). Note: l'ordre des bandes en fonction de l'ordre de sélection peut être différent en fonction du système d'exploitation.

Étape 2: Dans la fenêtre de styles de cette couche, vous noterez que le type de rendu est défini comme 'Couleurs à bandes multiples'. Vous pouvez changer les valeurs d'intensité, contraste et saturation pour améliorer l'apparence de l'image. Vous remarquerez qu'il est facile de distinguer la végétation, les banlieues, villes et rivières sur cette carte. Vous pouvez également créer une image composite 5-4-3 et comparer les deux images.

Vous allez maintenant créer une carte de NDVI (Normalized Difference Vegetation Index).

Étape 3: Trouvez la fonction Calculatrice de raster. Spécifiez NDVI.tif comme nom du fichier en sortie. En trouvant les bandes 3 et 4 dans le menu de gauche, obtenez l'équation suivante dans la boîte d'expression:

(bande4-bande3)/(bande3+bande4)

Ajoutez cette image NDVI au canevas.

Étape 4: Dans la fenêtre de style de cette couche, choisissez pseudo-couleur à bande unique comme type de rendu. Choisissez la palette RdYlGn et cliquez sur classifier. Sur cette carte, les zones en verte foncé représentent des endroits ou la végétation est abondante. Les zones rougeâtres ne sont pas couvertes de végétation.

Étape 5: Ajoutez la couche parcs_terrains_sports.shp au canevas et sauvez-là sous un nouveau fichier avec le SCR NAD 83 / UTM 18N. Ajoutez ce nouveau fichier au canevas et retirez l'ancien.

Étape 6: Installez et activez l'extension “Statistiques de zones / Zonal statistics”.

Étape 7: Trouvez le menu Raster>statistiques de zone. Choisissez le fichier des parcs et terrains comme couche vectorielle et l'image NDVI comme couche raster.

Étape 8: Dans la table des attributs de la couche parcs et terrains, vous allez noter que des colonnes on tété ajoutées avec les statistiques des cellules NDVI pour chaque terrain et parc. Quel parc a le NDVI moyen le plus bas? Où est-il situé? Vous pouvez cliquer sur l'icône 'Zoomer la carte sur les lignes sélectionnées' en haut de la table d'attributs pour trouver le parc en question.

Réponse

DÉFI: Aller sur le site web du USGS EarthExplorer http://earthexplorer.usgs.gov/ et créez un compte en cliquant sur 'register'. Ensuite, choisissez une région n'importe où dans le monde de la taille de l'île de Montréal, où vous croyez qu'il y a eu beaucoup de changements au cours des 30 dernières années. Recherchez une image Landsat 4-5TM image datant de quelque part entre 1980-1984 pour cette région et prise au mois de juillet ou août, qui contient moins de 10% de nuages. Téléchargez ce fichier en format “Level 1 product”. Notez le path/row de cette image et téléchargez une image équivalente pour 2010-2014 (même mois, row et path). Ouvrez-les dans QGIS et calculez le NDVI pour chaque période. Soustrayez le NDVI de la carte ultérieure moins la première carte NDVI. Visualisez la carte résultante avec cette palette pour voir les zones où les changements dans la végétation on été les plus importants. DÉFI 2: Utilisez la fonction “Cluster Analysis for Grids” dans Outil de géotraitement (Processing Toolbox)>SAGA pour effectuer une classification non-supervisée de vos images en utilisant les bandes 3,4,5 et 7.

Exercice 5 - Utiliser GRASS dans QGIS

Étape 1: Assurez-vous que l'extension GRASS est activée et que les icônes GRASS sont bien visibles dans votre menu. Cliquez sur l'icône 'Nouveau jeu de données' et créez un nouvelle géodatabase GRASS, un nouveau secteur, choisissez le SCR NAD83/UTM 18N, spécifiez la région GRASS par défaut en utilisant l'étendue QGIS courante et choisissez un nom pour le jeu de données.

Étape 2: Sauvez le fichier routes.shp comme une nouvelle couche avec le SCR NAD83 / UTM 18N. Faites de même avec le shapefile Region_Hydrique.

Étape 3: Vous devez maintenant importer les fichiers dans GRASS. Cliquez sur 'Ouvrir les outils GRASS', cliques sur 'arborescence des modules'>'Gestion de fichiers'>'Importer dans GRASS'>'Importer un vecteur dans GRASS'>'v.in.ogr.qgis'. Sélectionnez le fichier avec les routes créé à l'étape 2 et spécifiez un nom pour le fichier en sortie. Répétez cette étape pour le fichier Région_Hydrique. Ajouter les fichiers nouvellement crées au canevas en cliquant sur l'icône 'Ajouter une couche vectorielle GRASS'.

Étape 4: Trouvez la focntion nommée r.in.gdal et importez le fichier 31h05dem.tif dans GRASS. Ajoutez cette nouvelle couche au canevas QGIS.

Étape 5: Trouvez la fonction g.region.multiple.raster et utiliser le fichier importé à l'étape 4 pour définir la région courante (entrez le nom exact de la couche dans la boîte).

Étape 6: Convertissez la couche des routes en format raster en utilisant la fonction v.to.rast.constant. Faites la même chose avec les régions hydriques.

Étape 7: Utilisez la fonction r.grow.distance pour créer une surface raster continue dans laquelle la valeur de la distance à la route la plus proche est assignée à chaque pixel. Utilisez le fichier raster des routes (Étape 6) comme fichier en entrée et spécifiez un nom pour la carte raster de distance en sortie (laissez la couche de valeurs vide).

Étape 8: Utilisez la fonction r.null.to pour remplacer la valeur NULL par 0 dans le fichier raster Région hydrique.

Étape 9: Utilisez r.mapcalculator pour enlever les zones couvertes d'eau du fichier de l'étape 7. Spécifiez le fichier raster Region Hydrique comme couche A et le fichier créé à l'étape 7 comme couche B. Cliquez sur “Utiliser la région de cette couche” à côté de la couche A. Dans le boîte de formule, entrez:

((A-1)*-1)*B

et donnez un nom au fichier en sortie.

Étape 10: Pour exclure les zones situées à moins de 1km des routes, créez un fichier texte (dans Notepad our Text Edit) avec ce contenu:

0 thru 1000 = 0
1000 thru 99999 = 1

Étape 11: Utilisez la fonction r.reclass pour re-classifier le raster créé à l'étape 9, et en utilisant les fichier de l'étape 10 pour définir les règles de re-classification.

Étape 12: Utilisez la fonction r.clump pour donner un identifiant unique à toutes les zones contigues.

Étape 13: Utilisez la fonction r.stats pour obtenir l'aire de chaque zone contigue. Vous devez cliquer sur 'Options avancées', sélectionner 'Afficher le total des aires' et mettre “-” comme nom du fichier en sortie. Vous pouvez également spécifier un nom de fichier avec une extension .txt si vous voulez sauver les résultats dans un fichier texte.

Étape 14: Identifier la zone avec la superficie la plus grande. Pour ce faire, trouve la console GRASS “GRASS Shell” dans la liste des fonctions et écrivez la commande suivante:

r.mapcalc "Largest_patch=if(Etape_12  == ID, 1, null())" 

remplacez ID avec l'identifiant de la zone la plus grande, et Etape_12 avec le nom que vous avez donné au raster de l'Étape 12. Cette commande va créer une fichier nommé Largest_patch dans lequel la zone avec la superficie la plus grande sera isolée avec une valeur de 1. Vous pouvez ensuite afficher ce raster et changer la palette pour voir cette zone.

Étape 15: Convertissez ensuite ce fichier en vecteur avec la fonction r.to.vect.area.

Terminologie GRASS

  • DATABASE (Géodatabase): Main GRASS directory.
  • LOCATION (Secteur): Working directory. SCR unique.
  • MAPSET (Jeu de données): Sub-directory under the LOCATION.
  • REGION (Région): Définie par une étendue et une résolution spécifiques.
prefix Description Example
d.* display (graphical output) d.rast: views raster map, d.vect: views vector map
db.* database management db.select: selects value(s) from table
g.* general file operations g.rename: renames map
r.* raster data processing r.buffer: buffer around raster features, r.mapcalc: map algebra
i.* image processing i.smap: image classifier
v.* vector data processing v.overlay: vector map intersections
ps.* postscript map creation format ps.map: map creation in Postscript,
r3.* raster voxel data processing r3.mapcalc: volume map algebra

Liste complète des commandes GRASS est ici.