This is an old revision of the document!


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

CETTE PAGE EST POUR UN ATELIER QUI N'EST PLUS OFFERT. ACCÉDEZ À LA VERSION COURANTE DE L'ATELIER ICI.

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

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

Quantum GIS 2.0.1 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. 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 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.

  • 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.

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 (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 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 (>Extensions>OpenLayers). 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 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 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, 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… et sélectionnez le SCR ).

É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égions boisées (cliquant sur le nom de la couche… table d'attributs) et ajoutez-y une colonne spécifiant la superficie de chaque forêt en hectares. 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 à 4. Sortez du mode édition.

Étape 4: Effectuez une requête (>Couche>Filtrer) 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, en utilisant uniquement les entités sélectionnées.

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

Réponse

DÉFIS : Trouvez quel district électoral (Colonne TRI_CEP) 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).

Réponse

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 - sortie graphiqued.rast: visualiser un raster, d.vect: visualiser un vecteur
db.* database - base de donnéesdb.select: sélectionner des valeurs dans une table
g.* general - opérations généralesg.rename: renommer une carte
r.* raster - traitement de rasterr.buffer: tampon autour d'entité raster, r.mapcalc: algèbre sur des cartes
i.* image - traitement d'imagei.smap: classifier des images
v.* vector - traitement de vecteur v.overlay: intersections entre fichiers vecteurs
ps.* création de carte postscript ps.map: créer une carte en Postscript
r3.* raster voxel - traitement de raster 3D r3.mapcalc: algèbre sur carte 3D

La liste complète des commandes GRASS est ici.

JOUR 2

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_Ovenbird_QC.csv' au canevas en utilisant '>Couche>Ajoutez une couche vecteur' et en listant tous les types de fichier (oui, cette étape est contre-intuitive!).

É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' (choisissez 'Route' pour les deux tables). Désélectionnez la case qui indique “Mettre la couche en cache dans la mémoire virtuelle”. 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 (désolé!). Le type de colonne doit être 'Nombre entier' (longueur 10 ou plus). Les noms des colonnes doivent contenir moins de 10 caractères, doivent commencer par une lettre et ne doivent pas contenir d'espaces ou de caractères spéciaux.

Étape 9: Sauvez les changements et sortez du mode d'édition. Notez que seul 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 AtelierSIG), 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: Convertissez le fichier vecteur de la province de Québec en format GRASS (vour référer à l'étape 11).

Étape 14: Trouvez la fonction GRASS v.to.rast.constant et convertissez le polygon de la province de Québec en raster (utilisez 1 comme valeur du raster). Ce fichier raster aura la résolution et l'étendue spécifié à l'étape 12.

Étape 15: Utilisez la fonction GRASS r.mask avec le raster créé à l'étape 14. Ajoutez ce nouveau raster au canevas en cliquant sur l'icône 'Ajoutez une couche GRASS'.

Étape 16: Trouvez le module v.surf.rst dans la Boite à outils GRASS, choississez un nom pour le fichier de sortie et interpolez une carte pour les données de 1980-1994 et une autre pour 1995-2010. Ajoutez ces couches au canevas.

Étape 17: 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: Ouvrez GRASS. Sur la fenêtre 'Bienvenue sur GRASS GIS', sélectionnez le répertoire 'Jour 2' (que vous avez obtenu en décompressant le fichier .zip) comme géodatabase. Le projet devrait être '31h05' et le jeu de données (mapset) 'Landsat'.

Étape 2: Visualisez les bandes Landsat en cliquant sur l'icône 'Ajouter une couche raster' ('Add raster map layer') sur la fenêtre 'Gestionnaire de couches SIG' ('GIS layer manager window') et en sélectionnant une des couches Landsat.

Étape 3: Trouvez la fonction r.mapcalculator sous >Raster>Calculatrice Raster (>Raster>Raster Map Calculator). Spécifiez 'NDVI' comme le nome du fichier à créer. Vous devez trouver les bandes 3 et 4 dans le menu déroulant 'Insérez une carte raster existante', et entrez cette formulare dans la boîte 'expression':

1.0*(band4-band3)/(band3+band4)

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

Étape 4: 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 et spécifiez ndvi comme palette 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 raster. 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)

Commandes spgrass 6:

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

Exemple de code dans R

library(spgrass6)
library(rgdal)
initGRASS(gisBase='/usr/lib/grass64',gisDbase='/home/glaroc/OSGIS/Day 2/',location='31h05',mapset='landsat',override=TRUE)
#Sous Windows, le chemin est du genre C:/GRASS/

gmeta6()
elevp=readVECT6('Elevation_points')

RegHyd=readVECT6('Region_hydrique')
#Routes=readVECT6('Routes')
execGRASS("g.list",type="vect")
plot(RegHyd,lwd=2,col='blue')
plot(elevp,pch=19,lwd=0.5,col='brown',cex=0.5,add=TRUE)

Utiliser PostGIS avec QGIS

Téléchargez PostgreSQL pour votre plate-forme.

Suivez les instructions pour configurer Postgres sur votre ordinateur, incluant la création d'un utilisateur. Assurez-vous que l'extension pour PostGIS est installée.

Créer une base de données qui peut accueillir des objets spatiaux. Remplacer my_spatial_db par le nom de la base de données désiré. Ce code doit être exécuté dans PostgreSQL.

CREATE DATABASE my_spatial_db TEMPLATE=template_postgis

Pour importer des fichiers vectoriels dans la base de données, utilisez le plugin DBManager de QGIS. Vous devez configurer une nouvelle connexion à une base de données en spécifiant les informations spécifiques à votre configuration de PostgreSQL.

Type de requête possible:

SELECT avg(elevation) FROM elevation_points, section_vote_31h5_utm WHERE section_vote_31h5_utm.tri_cep= 'JACQUESCARTIER' AND ST_within(elevation_points.geom,section_vote_31h5_utm.geom) 

Cette requête nous donnera l'élévation moyenne pour tous les points d'élévation situés dans le district Jacques-Cartier.

Vous pouvez accéder à la liste des fonctions spécifiques à PostGIS ici.