vendredi 25 juin 2010

La géomatique libre: GRASS et QGIS

J'ai créé ce blog pour alimenter la discussion sur l'utilisation des logiciels de géomatique gratuits. Il y a une nuance entre logiciel libre et logiciel gratuit, mais je n'en tiendrai pas compte. On entendra libre tout logiciel gratuit. Je suis technicien en géomatique et je pratique depuis quelques années déjà. J'opère les logiciels les plus connus comme ArcGIS et Mapinfo, mais ce sont des logiciels commerciaux qui, bien que présentant les meilleures caractéristiques sur le plan de la convivialité et de l'édition cartographique, ne sont pas à la portée de toutes les bourses.

Pour pallier à cette situation, il existe des logiciels gratuits qui se développent à bonne vitesse et qui donnent des perspectives d'utilisation intéressantes. Ils fonctionnent suivant le cas dans un environnement informatique universel Java (GvSIG, OpenJump ou JGRASS), Linux (GRASS, QGIS, UDig) ou Windows (Saga ou Mapwindows - GRASS et QGIS ont également des versions adaptées). Il en existe d'autres, mais ceux-ci sont ceux que j'ai déjà essayés.

Je débute avec QGIS/GRASS car je crois qu'ils représentent la meilleure alternative aux logiciels commerciaux. J'ai déjà présenté un exemple de leur utilisation sur Linux à l'aide d'un site Web que j'avais réalisé il y a quelques années, mais le serveur sur lequel je l'ai inscrit a fermé ses portes. Alors je remets l'information à jour sur ce blog, croyant qu'elle pourra servir à plusieurs géomaticiens. Je ne suis pas un expert de GRASS, mais j'apprends à l'utiliser et constate son potentiel élevé avec un rapport qualité/prix sans pareil. Il contient aussi un module NVIZ de simulation 3D du relief, ce qui m'attire particulièrement.

GRASS/QGIS

Le logiciel GRASS (Geographic Resources Analysis Support System) s'est développé parallèllement à ArcInfo avec qui il se compare souvent. Certains le comparent aussi à ArcGIS (lire cet article). C'est un logiciel puissant sur le plan de l'analyse et de la gestion des données raster, mais peu performant pour l'édition cartographique. C'est notamment pourquoi le visualisateur de données numériques QGIS a fait l'objet de développements importants ces dernières années pour intégrer les principales fonctionnalités de GRASS, offrant en outre plus de possibilités pour la production et l'édition de cartes.

GRASS est disponible sur Windows, Linux et Osx-MAC (que je n'ai jamais utilisé). Je préfère personnellement Linux à Windows car le logiciel a été conçu dans un environnement Unix qui est toujours considéré en priorité pour le développement du logiciel.

Les lignes suivantes présentent les différentes étapes permettant de produire une carte de base du Québec avec GRASS/QGIS sur Linux, ce qui est à mon avis une bonne façon d'introduire l'utilisation de ces deux logiciels, de même que le système d'opération Linux. Il existe plusieurs façons d'installer Linux, notamment: 1- partitionner et formater son disque dur, puis installer la distribution de son choix, 2- installer une distribution dans un disque virtuel comme Virtualbox, 3- installer une distribution sur une clé USB en mode "frugal" ou 4- installer une distribution clé en main à partir d'un fichier exécutable Windows.

C'est cette dernière méthode que je vais utiliser car elle est a mon avis très facile à réaliser pour un débutant qui veux s'initier à Linux. Un désavantage que j'y trouve est que la distro va utiliser une partie de la mémoire RAM du PC pour fonctionner. Dans mon cas, je réserve pour Linux 256 Mo RAM et il m'en reste autant pour faire fonctionner Windows.

J'aimerais mentionner qu'il existe plusieurs distributions Linux spécialisées en SIG qu'il est possible de tester en mode "Live" sur CD ou DVD sans installation . Vous trouverez plusieurs de ces distributions sur le site de GRASS.

A) INSTALLATION DE LINUX (Ubuntu)

Il existe plusieurs applications fonctionnelles permettant d'installer Linux à partir d'un fichier exécutable Windows. Mentionnons Topologilinux basée sur la distribution Slackware, Portable Ubuntu et andLinux basées sur Ubuntu et Wubi basée également sur Ubuntu. Dans ce dernier cas, il est nécessaire de redémarrer l'ordinateur pour avoir accès à la distribution, contrairement aux autres qui permettent le démarrage de Linux à l'intérieur même de Windows. J'ai essayé Portable Ubuntu qui est facile à installer même sur une clé USB, mais pour une raison que j'ignore, certaines opérations de GRASS ne fonctionnaient pas. J'ai donc opté pour andLinux qui ne m'a pas déçu à l'exception du clavier et de la langue que je n'ai toujours pas réussi à modifier. Pour les fins de mon exemple cartographique, cela n'a toutefois pas d'incidence majeure. Vous pourrez, comme moi, entreprendre éventuellement des recherches à cet effet notamment sur les forums de discussion.

andLinux est offerte en deux options, celle qui utilise KDE comme gestionnaire de bureau et l'autre qui utilise XFCE qui est plus léger. Pour mon PIII, ce dernier convient bien. Je ne couvrirai pas l'installation de andLinux sur l'ordinateur, référez-vous aux supports du site. Je mentionnerai seulement que j'ai choisi l'option "démarrer en ligne de commande + panneau XFCE". J'ai aussi choisi 256 Mo RAM pour son fonctionnement, la plupart des autres options étant laissées comme proposées par défaut.

Une fois l'installation terminée, vous aurez une distribution Ubuntu "Jaunty" avec l'environnement de bureau accessible dans une barre d'outils dans le haut de l'écran. Vous pouvez relocaliser cette barre d'outils en cliquant dessus avec le bouton droit de la souris et en choisissant l'option Customize panel.

Image and video hosting by TinyPic

Ubuntu est dérivée de Debian. Elle est très répandue, sa communauté d'utilisateurs étant une des plus importantes chez Linux. Ce que j'apprécie beaucoup d'Ubuntu, c'est la facilité avec laquelle il est possible de gérer l'installation des applications. Nous le verrons lors de l'installation de GRASS/QGIS.


B) MISE À JOUR DE LINUX

Lorsque je débute une session Linux, je mets toujours à jour les logiciels installés pour bénéficier des plus récentes modifications. Pour ce faire, il est possible de procéder par lignes de commande dans un Terminal, mais nous allons utiliser le logiciel Synaptic qui est plus convivial.

Dans la barre d'outils de Linux, cliquez sur le deuxième icone à partir de la droite et inscrivez le mot de passe (qui vous est demandé en ligne de commande) que vous avez choisi lors de l'installation. Suivra l'ouverture de Synaptic.

Image and video hosting by TinyPic

La mise à jour des logiciels (paquets) se fait en cliquant successivement sur Reload, Mark All Upgrades, puis Apply. La mise à jour peut prendre plusieurs minutes, mais vous aurez les plus récentes versions des logiciels de la distribution "Jaunty" d'Ubuntu. Toutefois, les logiciels GRASS et QGIS ne figurent pas sur les dépôts de logiciels disponibles par défaut, alors il faudra les ajouter. Pour Ubuntu "Jaunty", les dépôts à utiliser sont les suivants:
deb http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu jaunty main
Pour les ajouter, allez dans Synaptic et choisir les options Settings, Repositories, puis cliquez sur le bouton New. Inscrivez l'information de la même façon que dans les deux images ci-dessous (cliquez OK lorsque terminé):

Image and video hosting by TinyPic
Image and video hosting by TinyPic

Lorsque terminé, cliquez sur le bouton Reload de Synaptic. Vous devriez obtenir le message d'erreur suivant:

Image and video hosting by TinyPic

Pas de panique! Selon Ubuntu, certaines sources de mise à jour utilisent un système de clés qui permet de vérifier l'authenticité et l'intégrité des paquets proposés. Lorsqu'un tel message apparaît, il faut ajouter la clé d'authentification absente. Pour cela, fermer Synaptic et ouvrir un terminal (premier icone à gauche de la barre d'outil).

Copier la ligne suivante, la coller dans le terminal et tapez Enter:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 314DF160

Vous aurez à entrer votre mot de passe. Le chiffre à la fin de la ligne est la clé d'authentification. Vérifiez bien les caractères dans le message d'erreur, ils diffèrent suivant la distribution de Linux. Seuls les huit derniers caractères de la clé sont nécessaires. Ensuite, fermez le terminal et ouvrez à nouveau Synaptic. Cliquez sur le bouton Reload. Tout devrait se dérouler normalement et les logiciels GRASS et QGIS sont désormais disponibles pour installation.

Tout ceci peut sembler compliqué pour un débutant sur Linux, mais ce ne sont que des opérations de routine pour les distributions dérivées d'Ubuntu ou de Debian. Mentionnons que les distributions dérivées de Red Hat (ou Fedora) et de Mandriva (autrefois Mandrake) utilisent également le logiciel de gestion de paquets Synaptic. Opensuse utilise un système similaire avec Yum. Linux est un monde passionnant à découvrir et je ne peux qu'encourager son utilisation.

C) INSTALLATION DE GRASS ET DE QGIS

Dans Synaptic cochez la case vide vis-à-vis les logiciels (paquets) que vous allez installer, soit:

qgis-plugin-grass
grass-doc

avce00

e00compr

python-gdal
gdal-bin
libgdal1-1.6.0-grass
emelfm2

Vous pouvez utiliser la fonction Search de Synaptic pour chacun des logiciels concernés. emelfm2 est un gestionnaire de répertoires et de fichiers, comme Thunar qui est installé par défaut. Contrairement à ce dernier, emelfm2 permet de décompresser les fichiers zip avec le menu contextuel. Une fois les logiciels cochés, assurez-vous de cliquer sur Mark for Installation, ce qui aura pour effet de surligner les logiciels (paquets) en vert. Cliquez par la suite sur Apply pour l'installation qui devrait prendre quelques minures.

Image and video hosting by TinyPic

Voilà, vous êtes maintenant prêts à opérer GRASS et QGIS sur Linux!

D) STRUCTURATION DES RÉPERTOIRES

L'architecture de la base de données de Grass est expliquée ici. Pour les besoins de notre projet, nous utiliserons un répertoire principal grassdata pour être compatible avec les jeux de données démos de GRASS, et les sous-répertoires donnees et projections. Dans le sous-répertoire donnees, nous allons inclure d'autres sous-répertoires suivant la nature des données utilisées, comme par exemple hydro, topo, routes et limites.

Pour créer les répertoires, ouvrez un terminal et tapez sudo thunar. Vous aurez à inscrire votre mot de passe. Pour créer un répertoire, il faut être en mode administrateur, d'où la commande sudo. Allez dans votre répertoire Home, cliquez sur le bouton droit de la souris et choisissez Create folder et donnez lui le nom de grassdata.

Image and video hosting by TinyPic

Une fois que le répertoire grassdata est créé, créez des sous-répertoires de la même façon, pour obtenir ce qui suit:

/home/grassdata/donnees/hydro
/home/grassdata/donnees/topo
/home/grassdata/donnees/routes
/home/grassdata/donnees/limites
/home/grassdata/projections

Le sous-répertoire donnees permettra de stocker les données source (données de base) du projet, alors que le sous-répertoire projections permettra de créer les différents projets dans GRASS basés notamment sur les critères de projection et de localisation. À noter qu'il est préférable d'éviter des noms avec accents pour les répertoires et les fichiers.

E) DONNÉES DE BASE

Voici les liens permettant de télécharger les données de base que nous utiliserons pour la cartographie du Québec:

Contours du Québec
Hydrologie de surface
Hydrologie linéaire
Routes
Topographie



Mentionnons que les données ci-dessus sont fournies dans une projection géographique (latitude/longitude) utilisant le datum NAD83. Ces informations seront utilisées lors de la création du projet dans GRASS/QGIS.

Lorsque vous cliquerez sur les liens, sauvegardez les fichiers zip dans les sous-répertoires appropriés. Il est possible d'ajouter d'autres données disponibles sur le site du gouvernement du Québec, le site Geogratis ou le site Geocomm, mais dans le cadre de notre démo, cela suffira. Pour décompresser les fichiers, ouvrez un terminal, tapez emelfm2 et rendez-vous dans le sous-répertoire désiré. Cliquez sur un fichier zippé avec le bouton droit de la souris et sélectionnez unzip.

Image and video hosting by TinyPic
Image and video hosting by TinyPic

Les fichiers résultants sont des fichiers Arcinfo au format e00, sauf le fichier d'élévation dont le format est ASCII GRID. Les informations concernant ce dernier sont disponible ici.

F) CRÉATION DU PROJET QUEBEC DANS GRASS/QGIS

La création du projet peut s'effectuer dans l'un ou l'autre des logiciels. Dans notre exemple, nous utiliserons QGIS qui rend l'opération très conviviale.

Ouvrez un terminal, tapez QGIS puis Enter.

Image and video hosting by TinyPic

Image and video hosting by TinyPic

À l'ouverture de QGIS, vous avez d'abord un visualisateur qui peut charger des données numériques sous plusieurs formats différents et confectionner des cartes thématiques. La version 1.4.0 de QGIS sous Ubuntu Jaunty est en outre pourvue de la suite fTools qui permet un ensemble d'opérations d'édition sur les vecteurs, à la manière d'ArcToolBox chez ArcGIS et élevant ainsi QGIS au rang de logiciel géomatique complet.

Je sais que l'ajout de fTools est relativement récent et je ne serais pas surpris si les versions QGIS des distributions antérieures d'Ubuntu comme Hardy n'ont pas cette suite d'outils. Dans un tel cas, l'édition des fichiers n'est possible qu'en les convertissant au format de GRASS pour avoir accès aux outils d'édition GRASS. Afin de rendre notre exemple applicable à toutes les versions du logiciel, nous utiliserons donc les outils d'édition GRASS. Pour les charger, allez dans Plugins, Manage plugins et cochez la case de GRASS.

Image and video hosting by TinyPic

Vous aurez alors un logiciel géomatique complet et performant, même sans les outils fTools.

Image and video hosting by TinyPic

La conversion (importation) des fichiers au format GRASS a l'avantage de corriger les erreurs topologiques et permet de s'assurer que les fichiers soient dans la bonne projection et ce, pour toutes les versions de GRASS/QGIS. Pour la conversion des fichiers, nous utiliserons encore QGIS.

Avant l'importation, il faut créer un projet défini par la projection et les limites du territoire. Si vous avez des données de base avec une projection différente, il faudra créer un second projet défini par cette projection pour importer les données, quitte à les convertir en projection différente par la suite.

Allez dans QGIS et sélectionnez les menus Plugins, GRASS puis New Mapset.

Image and video hosting by TinyPic

Sélectionnez votre répertoire /home/grassdata/projections, puis cliquez Next.

Image and video hosting by TinyPic

Dans la fenêtre suivante, inscrivez le nom de la nouvelle "location". Dans mon cas, j'ai inscrit latlonNAD83 pour définir la projection géographique. Cliquez Next.

Image and video hosting by TinyPic

La fenêtre suivante vous donne le choix des projections. Vous pouvez les choisir avec le menu déroulant ou avec les codes EPSG, ce que nous ferons.

Image and video hosting by TinyPic

Le code EPSG pour la projection géographique avec le datum NAD83 est le 4269. Inscrivez ce nombre dans la case et cliquez Find. La projection devrait apparaître dans le menu déroulant. Cliquez Next.

Image and video hosting by TinyPic

Dans la fenêtre suivante, Sélectionnez Canada et cliquez sur Set. La projection se délimitera automatiquement sur la carte. Cliquez sur Next.

Image and video hosting by TinyPic

Maintenant, inscrire quebec dans la case New mapset, ce qui deviendra l'espace de travail. Cliquez Next et Finish à la fenêtre suivante.

Image and video hosting by TinyPic

Votre projet est défini et vous pouvez ainsi convertir les fichiers de base en format GRASS.

Image and video hosting by TinyPic


G) CONVERSION DES DONNÉES AU FORMAT GRASS

Allez dans les menus Plugins, GRASS et Open GRASS tools.

Image and video hosting by TinyPic

Dans la fenêtre suivante, soit la boîte d'outils de GRASS, allez dans File, Import, Import vector, puis choisissez la fonction v.in.e00 qui convertira les fichiers d'origine au format e00 en fichier de format GRASS.

Image and video hosting by TinyPic

Dans la fenêtre de sélection des fichiers, vous devez spécifier l'emplacement, la nature (type) du fichier et le nom de sortie du fichier résultant. Cliquez ensuite sur Run et attendez patiemment que l'importation soit réussie!

Image and video hosting by TinyPic
Image and video hosting by TinyPic
Image and video hosting by TinyPic
Image and video hosting by TinyPic

Maintenant pour vérifier la nouvelle couche GRASS, allez dans le menu Plugins, GRASS, puis Add GRASS vector layer et choisissez dans la fenêtre le fichier correspondant.

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Importer les autres couches de base dans le format de GRASS en n'oubliant pas de préciser la nature des données (lignes, points ou surfaces). Pour ce qui est du modèle numérique de terrain (MNT) pour l'élévation, procéder comme suit:

Allez dans le menu Plugins, GRASS, et Open GRASS tools. Sélectionnez la fonction r.in.gdal qui se trouve dans File, Import, Import raster.

Image and video hosting by TinyPic

Comme pour les fichiers vecteur, sélectionner le fichier d'origine, donner un nom pour le fichier de sortie et cliquez Run.

Image and video hosting by TinyPic
Image and video hosting by TinyPic
Image and video hosting by TinyPic

Le nom des fichiers de sortie que j'ai utilisé sont les suivants:

Contours du Québec: contour
Hydrologie de surface: lacs
Hydrologie linéaire: rivieres
Routes: routes
Topographie: topo30

Veuillez noter que le nom des fichers n'est donné qu'à titre indicatif sur les images car j'ai peut-être changé quelques noms au cours de la préparation de ce blog. Tenez compte surtout des noms de fichier dans le texte plutôt que celui dans les images, ces dernières ne servant que de guides.

Importer l'ensemble des fichiers GRASS dans une vue de QGIS (menu Plugins, GRASS, Add GRASS vector layer et Add GRASS raster layer). Voilà, nous avons tout ce qu'il faut pour produire une carte de base du Québec.

Image and video hosting by TinyPic

H) ÉDITION DE LA CARTE FINALE


L'édition de la carte finale comprend plusieurs étapes. Brièvement, nous allons dissoudre les limites administratives internes du fichier contour pour créer un fichier limites ne contenant que les limites externe du Québec. Ce fichier servira à extraire l'information des autres fichiers qui se trouve à l'intérieur de ces limites. Finalement, nous éditerons l'apparence des fichiers vecteur/raster.

Nous allons procéder à l'édition des fichiers avec GRASS, ce qui nous permettra de donner une bonne idée de son fonctionnement. Fermez QGIS, ouvrez un terminal, tapez GRASS puis Enter.

Image and video hosting by TinyPic

Tapez sur Enter à nouveau. Dans la fenêtre suivante, sélectionner le répertoire projections, cliquez sur latlonNad83, puis sur quebec. Si vous ne cliquez pas sur latlonNad83, vous ne verrez pas quebec. Cliquez ensuite sur Enter GRASS (si vous ne cliquez pas sur quebec, vous ne pourrez pas entrer dans GRASS).

Image and video hosting by TinyPic

Vous devriez avoir quatre fenêtres que j'ai disposées comme dans l'image ci-dessous. En haut à droite se trouve la fenêtre principale de GRASS avec ses menus, la fenêtre en bas à droite le terminal GRASS où l'on peut entrer les mêmes fonctions que dans les menus mais en ligne de commande, en haut à gauche se situe le module cartographique de GRASS et en bas à gauche le module de suivi des opérations:

Image and video hosting by TinyPic

Avant de procéder à des opérations d'édition, délimitez le territoire de votre "mapset" quebec avec les menus suivants: Config, Region, Change region settings (vous pourriez alternativement taper g.region dans le terminal de GRASS). Utiliser le fichier du contour du Québec à cette fin (sélectionnez-le en cliquant sur l'icone).

Image and video hosting by TinyPic

dissolution du fichier contour: dans le terminal de GRASS, taper: v.extract -d in=contour out=limites list=1-21 new=1 sur une même ligne. Cette commande créera un fichier vecteur nommé limites correspondant au contour uniquement de la province. La commande a comme effet de dissoudre (comparable à une fonction "Dissolve") les limites des régions administratives du fichier contour. À noter que le fichier contour contient 21 enregistrements (régions administratives) et que l'option new=1 est importante pour le découpage. Elle attribue au seul enregistrement résultant la valeur de 1.

C'est la façon la moins conviviale d'opérer GRASS. Vous pouvez aussi utiliser les menus Vector et Query with attributes qui font apparaître la fenêtre de l'opération v.extract. Vous auriez pu aussi taper v.extract dans le terminal GRASS pour faire apparaître la fenêtre. La fonction v.extract est également disponible dans QGIS.

découpage du fichier topographique: pour découper le fichier topographique avec le contour, il faut d'abord convertir ce dernier en raster. Dans le terminal de GRASS, tapez: v.to.rast (vous pouvez aussi utiliser l'interface graphique de GRASS en sélectionnant le menu: File - Map type conversions - Vector to raster).

À la première ligne, entrer le nom du fichier vecteur à convertir en raster (e.g. limites). À la seconde ligne, entrer le nom du fichier raster en sortie (e.g. clip). Au menu déroulant, sélectionner cat qui correspond à la colonne dans la table d'attributs qui a reçu la valeur de 1 lors de l'option new=1 à l'étape précédente. Cliquer sur Run.

Image and video hosting by TinyPic

La fonction de découpage du fichier topographique raster du Canada utilisée est Mapcalc. Dans le terminal de GRASS, taper: r.mapcalc. Après r.mapcalc, taper: topo30_qc=clip*topo30 (entrée), puis end (entrée), ce qui aura pour effet de créer un fichier raster du nom de Topo_qc qui aura comme valeur celles de Topo30 à l'intérieur du Québec car le fichier clip a une valeur de 1. Tout ce qui est à l'extérieur du Québec ne sera pas retenu (valeur de 0 dans clip).

Image and video hosting by TinyPic


Découpage des fichiers vectoriels: dans GRASS, sélectionnez le menu Vector, Query with another map. Remplisser les champs comme suit:

Image and video hosting by TinyPic

À noter que le choix des fichiers se fait en cliquant sur les icones colorés. Il est aussi important d'indiquer overlap dans le menu déroulant. Procéder de la même façon pour l'ensemble des fichiers vectoriels GRASS. À noter que l'opération sur le fichier des lacs peut prendre du temps suivant la puissance de votre PC.

Cartographie finale avec QGIS: fermez GRASS et ouvrez QGIS. Chargez tous les fichiers que vous avez préparés:

e.g.

limites
routes_final
lacs_final
riv_final
topo300_qc

Pour les éditer, double cliquez sur chacun dans la table des matières et sélectionnez les choix de couleur et autres paramètres pour l'habillage.

Image and video hosting by TinyPic

Voilà, je m'arrête ici. L'habillage cartographique avec les logiciels libres fera l'objet d'un autre billet. Il est possible de produire des cartes décentes et complètes avec QGIS, mais je vais poursuivre mes recherches pour tenter de trouver une alternative plus intéressante.

Vous pouvez refaire tout le processus décrit avec un autre territoire, autres projections, autres paramètres, etc. C'est un excellent exercice pour apprendre à utiliser GRASS et QGIS sur Linux.

Pour sortir de andLinux, ouvrez un terminal et tapez sudo halt. Entrez votre mot de passe et andLinux fermera.