Introduction aux systèmes d'information géographique libres : QGIS and GRASS

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

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

Février 2013

NOUVELLE VERSION DE CET ATELIER - CLIQUEZ ICI

Quantum GIS 1.8.0 et GRASS 6.4.3 (ou 6.4.2) seront utilisés pour cet atelier. Veuillez vous assurer d'avoir les logiciels proprement installés sur votre ordinateur avant l'atelier.

Pour les utilisateurs de Windows. Installez simplement QGIS et GRASS avec le programme d'installation OSGeo4W disponible ici:OSGeo4W.

Pour les utilisateurs Mac: Les instructions pour installer QGIS et GRASS sur Max OS X sont disponibles ici: here. Vous devez installer GDAL et GRASS avant d'installer QGIS.

Instructions pour Mac OSX Leopard-->

Pour les utlisateurs de Linux: Installez QGIS et GRASS selon ces instructions.

Générales

Quantum GIS

GRASS

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 (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.
  • Ouvrir QGIS - Sélectionnez Extensions > Gérer les extensions, et activez (au minimum) fTools, 'Ajouter une couche de texte délimité' et 'GdalTools'.

Des menus apparaîtront maintenant dans QGIS avec des options pour l'analyse vectorielle (fTools), analyse raster (GdalTools) et de nombreux autres extensions (sous l'onglet extension).

  • Sélectionnez Préférences> Options ­­> SCR, et cliquez sur 'Activez la reprojection 'à la volée' par default'.
  • Démarrez un Nouveau projet ou fermez et ré-ouvrez QGIS.

Maintenant, les couches sous différents systèmes de références seront re-projetées de façon dynamique.

Cliquez ici pour télécharger le fichier ZIP contenant tous les fichiers requis pour les 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. Si ça ne fonctionne pas sur votre ordinateur, ajouter ce lien (nommez le OpenLayers) à la liste de dépots : http://build.sourcepole.ch/qgis/plugins.xml , fermez les plugins Python et essayez 'activer à nouveau le plugin OpenLayers plugin 0.9.3.

Étape 2: Créez un fichier (avec Notepad sur Windows ou TextEdit sur Mac) dans un éditeur de texte (e.g. Notepad) 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é'. Utilisez Longitude pour la colonne des X et Latitude pour la colonne des Y. Spécifiez Système de Coordonnée geographique>WGS 84 comme CRS. 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 (>Extensions>OpenLayers). Notez que le CRS 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 de type polygone (CRS NAD 83/UTM 18N) et ajouter une colonne pour le nom (Donnée Texte, largeur 80). 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 'Éviter intersections' ('Avoid int.) pour cette couche dans >Préférences>Options d'accrochage.

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

Étape 6: Démarrez un nouveau projet et spécifiez le CRS 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, ajoutez 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. Ajoutez-y les routes (Routes.shp), les autres régions boisées (region_boise.shp) et les étendues d'eau (Region_hydrique.shp). Définissez des couleurs appropriées pour change 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. Sauvez cette carte en fichier PNG. 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.

DÉFI: Trouvez une couche WMS intéréssante à ajouter à votre carte.

Exercice 2 - Tampons et analyses simples

Objectif: Trouver la proportion de voteurs vivant à moins de 500 m d'une région boisée plus grande que 10 hectares dans le district électoral de Jacques-Cartier dans l'Ouest de l'île de Montréal.

Étape 1: Démarrez un nouveau projet et ajoutez les couches nommées 'sections_vote_31h5.shp' et 'regions_boise.shp'. Convertissez ces fichiers en NAD 83/UTM 18N en les sauvant sous de nouveaux fichiers (­Bouton de droite de la souris sur le nom de la couche>Sauvegarder sous…).

Étape 2: Démarrez un nouveau projet et spécifiez NAD83/UTM 18N pour le SCR du canevas. Ajoutez-y les deux nouveaux fichiers que vous avez sauvés.

Étape 3: Ouvrez la table d'attribut de la couche région boisées et ajoutez-y une colonne spécifiant la superficie de chaque forêt en hectare. Pour ce faire, passez en mode édition, utilisez la calculatrice de champs (icône de calculatrice en bas) et utilisez l'opérateur Géométrie→$area. Note: le système de coordonnées UTM est en mètres et 1 hectare= 10 000 mètres carrés. Important: spécifiez Nombre décimal (Réel) et augmentez la précision à 2.

Étape 4: Effectuez une requête (>Couche>requête) pour isoler les surfaces boisées de plus de 10 hectares. Notez que vous ne pouvez pas effectuer de requêtes en mode édition.

Étape 5: Créez un nouveau fichier shapefile avec un tampon de 500 m entourant ces surfaces boisées (>Vecteurs>Outils de géotraitement>Tampons).

Étape 6: Effectuez une requête pour ne sélectionner que le district électoral Jacques-Cartier (colonne TRI_CEP).

Étape 7: Utilisez la fonction 'Sélectionner par localisation' (>Vecteurs>Outils de recherche) pour sélectionner toutes les zones de votes qui intersectent le tampon.

Étape 8: Utilisez la fonction 'Statistiques basiques' pour trouver la somme de la colonne 2008_12_08.

Étape 9: Désélectionner toutes les entités et calculez la somme à nouveau. Calculez la proportion à la main.

DÉFI : Trouvez quel district électoral sur cette carte contient la plus grande longueur cumulée de routes (fichier 'routes.shp'). Utilisez les fonctions 'Regrouper' et 'total des longueurs de lignes' (dans le menu >Vecteurs).




Terminologie GRASS

  • DATABASE (Géodatabase): Répertoire principal de GRASS.
  • LOCATION (Secteur): Répertoire de travail. SCR unique.
  • MAPSET (Jeu de données): Sous-répertoires sous le secteur.
  • REGION (Région): Définie par une étendue et une résolution spécifiques.
préfixe Déscription Exemple
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

La liste complète des commandes GRASS est ici.

Fonctions clés

g.list rast lists available raster maps
g.list -c vect lists available vector maps with attribute column names
g.proj -p Print projection information
r.info raster_name information about a raster
v.info vector_name information about a vector
g.region set current region
g.region rast=raster_name -p set region based on an existing raster

Exercice 3 - Interpolation et manipulation de rasters avec GRASS, dans QGIS

Objectif: créer deux cartes comparant la distribution spatiale des populations de paruline couronnée au Québec de 1980-1995 et de 1995-2010, à partir de données du Relevé des oiseaux nicheurs (BBS).

Étape 1: Créez un nouveau projet.

Étape 2: Ajoutez le fichier CSV nommé 'BBS_Routes_QC.csv' au canevas en utilisant la fonction 'Ajouter une couche de texte délimitée' (Choisissez 'Délimiteurs sélectionnés-­>virgule) et spécifiez le CRS NAD83 (Latitude, Longitude- Géographique).

Étape 3: Sauvez cette couche comme fichier shapefile 'BBS_Routes_QC.shp' avec le SCR: NAD83 Quebec Lambert.

Étape 4: Ajoutez le fichier 'province.shp' au canevas. Sélectionnez la province de Québec et sauvez le polygone sous un nouveau shapefile avec le SCR Quebec Lambert (NAD83).

Étape 5: Démarrez un nouveau projet et Spécifiez le SCR Quebec Lambert (NAD83). Ajoutez-y les fichiers des étapes 3 et 4.

Étape 6: Ajoutez la table 'BBS_Overbird_QC.csv' au canevas en utilisant '>Couche>Ajoutez une couche vecteur' et en listant tous les types de fichier.

Étape 7: À partir du menu 'Propriétés de la couche' de la table du fichier 'BBS_Routes_QC.shp', trouvez l'onglet Jointure et joignez la table BBS_Routes et BBS_Ovenbird_QC en utilisant la colonne partagée 'Route'. Vous devriez maintenant voir le nombre d'observation de parulines par année apparaître dans la table des attributs du fichier 'BBS_Routes_QC'.

Étape 8: Activez le mode édition et utilisez la 'Calculatrice de Champs' pour ajouter une nouvelle colonne (Nombre entier) à la table BBS_Routes qui contient la somme du nombre d'oiseaux aperçus entre 1980-1994 et 1995-2010. Chaque champ doit être entré un à un.

Étape 9: Sauvez les changements et sortez du mode d'édition. Notez que seule les nouveaux champs créés font vraiment partie du fichier BBS_Routes_QC. Les observations par année peuvent être enlevées en désactivant la jointure.

Étape 10: Assurez-vous que l'extension GRASS est activée et que la barre d'icônes GRASS est sélectionnée dans >Vue>Barre d'outils. Cliquez sur l'icône Nouveau jeu de données (New mapset) et définissez une nouvelle Géodatabase GRASS, un nouveau Secteur (donnez lui le nom Atelier2), choisissez le SCR Quebec Lambert (NAD83), spécifiez la région GRASS par défaut en fixant l'emprise courante de QGIS et spécifiez un nom pour le Jeu de données (mapset).

Étape 11: Vous devez maintenant importer les fichiers dans GRASS. Cliquez sur 'Ouvrir les outils GRASS', cliquez sur 'Arborescence des modules'>'Gestion des fichiers>Importer dans GRASS>Importer un vecteur dans GRASS'>v.in.ogr.qgis. Sélectionnez le fichier BBS_Routes_QC.shp et spécifiez un nom pour le fichier de sortie. Ajouter le fichier GRASS nouvellement créé au canevas en cliquant sur l'icône Ajouter une couche vectorielle GRASS.

Étape 12: Cliquez sur 'Afficher la région courante GRASS' et sur 'Éditer la région courante GRASS. Vous devez définir les propriétés de la région courante GRASS pour obtenir une résolution de 2km x 2km exactement de façon à englober tous les points, mais sans trop déborder à l'extérieur. N'hésitez pas à utiliser la calculatrice et l'image ci-dessous.

Étape 13: Trouvez le module v.surf.idw dans la Boite à outils GRASS, choississez un nom pour le fichier de sortie et interpolez une carte pour les données de 1980-1995 et une autre pour 1995-2005.

Étape 14: Note: dans la version actuelle de QGIS, il y a un bug empêchant de modifier de façon appropriée la palette de couleur des fichiers GRASS rasters. Pour cette raison, nous allons exporter les cartes de distribution de la dernière étape en format tiff avec le module r.out.gdal.tiff dans les outils GRASS en spécifiant bien le répertoire de sauvegarde, le nom du fichier avec l'extension .tif et le format FLOAT32 (chiffres avec décimales). Ajoutez ensuite ces nouveaux fichiers .tif au canevas.

Étape 14: Dans les propriétés de chacune des couches, développez une palette de couleur appropriée (Onglet Style>Palette de couleur>Palette de couleur; ensuite cliquez sur l'onglet >Palette de couleur). Choisissez une interpolation des couleurs Linéaire, définissez trois valeurs numériques associées avec des couleurs pertinentes et attribuez la même palette pour les rasters des deux périodes. Observez-vous une différence dans la distribution des parulines couronnées?

DÉFI: Générez un nuage de points (en Excel ou R) montrant la relation entre la température moyenne annuelle (à partir de la couche Quebec_mat_tenths.txt en degrés Celcius x 10) et l'abondance des parulines couronnées aux sites de Relèves des oiseaux nicheurs (BBS). Vous aurez besoin de l'extension 'point sampling tool' qui se retrouvera sous >Vecteurs>Analyse une fois activée.

Fichiers pour exercices 4 et 5

Téléchargez ce fichier zip et assurez vous d'en extraire le contenu dans un répertoire facile d'accès.

Exercice 4

Objectif: Créer une carte NDVI (Normalized Difference Vegetation Index), l'associer avec une palette de couleurs et extraire le NDVI moyen dans les parcs et terrains de la région.

Étape 1: DANS QGIS: Définissez un nouveau projet avec le CRS NAD83 UTM18. Cliquez sur l'icône GRASS­>Ouvrir le jeu de données et sélectionnez le répertoire-géodatabase 'Jour 2' obtenu en extrayant les fichiers ZIP.

Étape 2: Ajoutez les fichiers GRASS comportant les bandes Landsat 3 et 4 au canevas.

Étape 3: Cliquez sur l'icône 'Ouvrir les outils GRASS' et trouvez la fonction r.mapcalculator. Sélectionnez la bande 3 pour la couche A et cliquez sur l'icône 'Utiliser l'emprise de cette carte' à côté du nom de la couche. Sélectionnez la bande 4 pour la couche B. Dans la case 'Formula', entrez

1.0*(B-A)/(B+A)

le 1.0 précédant la formule assure que le résultat contiendra des chiffres réels avec décimales.

Étape 4: Convertissez le fichier parcs_terrains_sports.shp en NAD83 UTM 18 en l'ouvrant dans QGIS et en le sauvant dans un nouveau fichier. Utilisez la fonction v.in.org.qgis pour le convertir en format GRASS. Si l'opération a été terminée avec succès, vous pouvez maintenant fermer QGIS.

Étape 5: Démarrez GRASS et sélectionnez le répertoire 'Jour 2' comme géo-database. Ajoutez le fichier NDVI que vous avez créé à l'étape 3. Sélectionnez ­>Raster>Gérer les couleurs>Table des couleurs. Sous l'onglet 'Required', sélectionnez la couche NDVI et sous l'onget Colors>Type de la table de couleur.

Étape 6: Ajoutez la couche contenant les parcs et terrains en cliquant sur l'icône 'Ajouter une couche vectorielle'.

Étape 7: Sélectionnez Vecteur>Mise à jour des attributs depuis la couche matricielle. Choisissez la couche des parcs pour 'Name of vector polygon map' et la couche NDVI pour 'Name of raster map'. Utilisez 'ndvi' pour Column prefix.

Étape 8: Cliquez sur le bouton de droite sur le nom de la couche>Show attribute table. En regardant la partie droite de la table, vous verrez que des colonnes ont été ajoutées avec les statistiques des cellules ndvi pour chaque terrain et parc.

Exercice 5

Objectif: Créer une visualisation 3D affichant une carte composite RVB superposée sur une couche d'élévation.

Étape 1: Sélectionnez Matrice>Gérer les couleurs>Créer RVB. Vous allez maintenant créer une image RVB (RBG) composite en utilisant les associations de bandes suivantes: Rouge:4 Vert:3 Bleu:2.

Étape 2: Dans ­>Fichiers>NVIZ créez une visualisation 3D avec le fichier 31h05_dem comme fichier d'élévation et l'image RVB créée à l'étape 8 (laissez les autres champs libres). Pour améliorer la résolution d'affichage dans NVIZ, cliquez sur Visualize>Raster Surface et spécifiez 1 comme résolution fine.

*DÉFI*: Créez une carte d'élévation interpolée à partie du fichier Elevation_points.shp et en utilisant la fonction v.surf.rst. Comparez cette carte avec le fichier 31h05_dem.

*DÉFI2*: Visualisez une des couches vectorielle dans R. Vous devez installer et activer le package spgrass6 dans R.

Utiliser R avec GRASS

Avant la première utilisation (dans R):

install.packages('spgrass6', dependencies=TRUE)

Utilisateurs Mac:
install.packages('spgrass6', type='source', dependencies=TRUE)

spgrass 6 commands:

execGRASS               execute GRASS commands (when launched from R)
system                  execute GRASS commands (when launched from GRASS)
readRAST6               read GRASS raster files
writeRAST6              write GRASS raster files
readVECT6               read GRASS vector object files
writeVECT6              write GRASS vector object files
gmeta6                  read GRASS metadata from the current LOCATION
getLocationProj         return a PROJ.4 string of projection information
gmeta2grd               create a GridTopology object from the GRASS region
vInfo                   return vector geometry information
vColumns                return vector database columns information
vDataCount              return count of vector database rows
vect2neigh              return area neighbours with shared boundary length