Le module de Traitements peut être étendu par des applications tierces. Pour l’instant, les logiciels SAGA, GRASS, OTB (Orfeo Toolbox) et R sont supportés, ainsi que des applications en ligne de commande qui proposent des fonctionnalités d’analyses spatiales. Les algorithmes reposant sur des applications tierces sont gérées par leur propres fournisseurs d’algorithme.
Ce chapitre vous montrera comment configurer le module de Traitements pour inclure ces applications additionnelles et vous expliquera quelques fonctionnalités particulières basées sur ces applications. Une fois le système configuré, vous pourrez exécuter les algorithmes externes depuis tous les composants du module tel que la boîte à outils ou le modeleur graphique, comme vous pourriez le faire avec n’importe quel géoalgorithme.
Par défaut, tous les algorithmes qui reposent sur une application tierce non fournie avec QGIS sont désactivés. Vous pouvez les activer dans la fenêtre de configuration. Vérifiez que l’application correspondante est préalablement installée sur votre ordinateur. Activer un fournisseur d’algorithmes non installé résultera en une erreur à l’exécution, bien que les algorithmes soient présent dans la boîte à outils.
La raison est que les descriptions des algorithmes (nécessaires pour créer la fenêtre de paramètres et donner les informations sur l’algorithme) ne sont pas fournies avec les applications mais sont inclues dans QGIS. C’est à dire que QGIS les inclut d’office, même si vous ne les avez pas installé. Exécuter un algorithme nécessite évidemment que l’application tierce soit installée au préalable.
Si vous n’êtes pas un utilisateur avancé et utilisez QGIS sur Windows, vous pourriez ne pas vous intéresser au reste de ce chapitre. Assurez-vous d’avoir installé QGIS sur votre système avec l’application OSGeo4W. Ceci installera automatiquement SAGA, GRASS et OTB sur votre système et les configurera de manière à ce qu’ils soient accessibles depuis QGIS. Tous les algorithmes de la vue simplifiée de la barre d’outils sont prêts à être utilisés, sans aucune configuration supplémentaire.
If you want to know more about how these providers work, or want to use some algorithms not included in the simplified toolbox (such as R scripts), keep on reading.
Le fait d’ouvrir un fichier dans QGIS ne garantit pas que ce fichier pourra être ouvert et traité par l’application tierce. Dans la plupart des cas, celui-ci pourra lire ce que vous avez ouvert dans QGIS, mais parfois, cela ne sera pas le cas. C’est particulièrement le cas des connections aux bases de données et les fichiers peu communs, aussi bien raster que vectoriels, qui pourront présenter des problèmes. Si cela arrivait, essayez de convertir vos données dans un format usuel reconnu par l’application tierce et vérifiez dans la console (historique et messages) le résultat du traitement pour analyser l’origine des erreurs.
Using GRASS raster layers is, for instance, one case in which you might have trouble and not be able to complete your work if you call an external algorithm using such a layer as input. For this reason, these layers will not appear as available to algorithms.
Pour les couches vectorielles, vous ne devriez pas rencontrer de problème : QGIS les convertit automatiquement dans un format reconnu par l’application tierce avant de lui transmettre. Cela aboutit à un temps de traitement plus long, particulièrement si la couche comprend beaucoup d’objets. Ne vous étonnez donc pas si le traitement d’un couche prévenant d’un base de données est plus long que celui d’un shapefile de taille équivalente.
Les algorithmes n’utilisant pas d’application tierce peuvent traiter toutes les couches qui peuvent s’ouvrir dans|qg| puisque qu’ils sont lancés depuis QGIS.
Concernant les formats de sortie, tous les formats gérés par QGIS peuvent être utilisés en sortie, à la fois pour les couches raster et vecteur. Certains formats ne sont pas gérés par certaines applications tierces mais celles-ci permettent toutes d’exporter dans des formats raster courants qui peuvent ensuite être convertis automatiquement par QGIS. Comme pour les couches d’entrée, si une conversion est opérée, le temps de traitement peut être allongé.
If the extension of the filename specified when calling an algorithm does not match the extension of any of the formats supported by QGIS, then a suffix will be added to set a default format. In the case of raster layers, the tif extension is used, while shp is used for vector layer.
External applications are also aware of the selection that exist in vector layers within QGIS. However, that requires rewritting all input vector layers, just as if they were originally in a format not supported by the external application. Only when no selection exist, or the Use only selected features option is not enabled in the processing general configuration, a layer can be directly passed to an external application.
In other cases, exporting only selected features is needed, which causes execution times to be longer.
SAGA algorithms can be run from QGIS if you have SAGA installed in your system and you configure the processing framework properly so it can find SAGA executables. In particular, the SAGA command-line executable is needed to run SAGA algorithms.
In case of running Windows, the standalone installer or the OSGeo4W installer, both install SAGA along with QGIS, and the path is automatically configured, so there is no need to do anything else.
If you have installed SAGA yourself (remember, you need version 2.1), the path to the SAGA executable must be configured. To do it, open the configuration dialog. In the SAGA block you will find a setting named SAGA Folder. Enter the path to the folder where SAGA is installed. Close the configuration dialog and now you are ready to run SAGA algorithms from QGIS.
In case you are running linux, SAGA binaries are not included with SEXTANTE, so you have to download and install the software yourself. Please check the SAGA website for more information. SAGA 2.1 is needed.
Dans ce cas, il n’est pas nécessaire de configurer tout ceci et vous ne verrez pas ces répertoires. Vérifiez que SAGA est correctement installé et que le chemin d’installation figure dans la variable d’environnement PATH. Pour vérifier que les fichiers binaires de SAGA sont accessibles, ouvrez une console et tapez saga_cmd.
La plupart des algorithmes SAGA nécessitent habituellement des couches Raster en entrée sur la même emprise et la même grille, couvrant la même emprise et ayant la même résolution. A l’appel d’un algorithme SAGA depuis QGIS, vous pouvez cependant utiliser n’importe quelle couche, quelles que soient leur emprise et leur résolution. Quand plusieurs couches raster son indiquées en entré d’un algorithme SAGA, QGIS les rééchantillonne sur une grille commune avant de les transmettre à SAGA (à moins que l’algorithme SAGA manipule directement des couches dans des grilles différentes).
La définition d’une grille commune est contrôlée par l’utilisateur et peut se faire selon plusieurs paramètres, présents dans le groupe SAGA de la fenêtre de configuration. Deux façons de procéder existent:
La configuration manuelle. Vous définissez les valeurs de l’emprise:
Rééchantillonner la valeur minimum de X
Rééchantillonner la valeur maximum de X
Rééchantillonner la valeur minimum de Y
Rééchantillonner la valeur maximum de Y
Rééchantillonner la taille de la cellule
Veuillez noter que QGIS rééchantillonnera les couches en entrées sur cette emprise, même si elles ne la recoupent pas.
La configuration automatique à partir des couches en entrée. Pour choisir cette option, activez l’option Utiliser la grille minimal pour le rééchantillonnage. Toutes les autres options seront ignorées et l’emprise minimum pour couvrir les couhces sera utilisée. La taille de la cellule de la couche cible sera la plus grande des tailles de cellules des couches en entrée.
Pour les algorithmes qui n’utilisent pas plusieurs couches raster, ou pour ceux qui n’ont pas besoin d’une grille unique, le rééchantillonnage n’est pas nécessaire et ces paramètres ne seront pas utilisés.
Unlike QGIS, SAGA has no support for multi-band layers. If you want to use a multiband layer (such as an RGB or multispectral image), you first have to split it into single-banded images. To do so, you can use the ‘SAGA/Grid - Tools/Split RGB image’ algorithm (which creates 3 images from an RGB image) or the ‘SAGA/Grid - Tools/Extract band’ algorithm (to extract a single band).
SAGA suppose que la couche raster possède la même résolution en X et en Y. Si vous travaillez sur une couche avec des résolutions différentes entre les deux axes, les résultats peuvent être incohérents. Dans ce cas, un message d’avertissement est ajouté au journal, indiquant que la couche n’est pas adaptée au traitement par SAGA.
Lorsque QGIS appelle SAGA, il le fait par son interface en lignes de commandes pour effectuer l’opération demandée. SAGA transmet son état d’avancement dans la console ainsi que d’autres informations. Ces messages sont filtrés et utilisés pour afficher la barre d’avancement pendant l’exécution de l’algorithme.
Both the commands sent by QGIS and the additional information printed by SAGA can be logged along with other processing log messages, and you might find them useful to track in detailed what is going on when QGIS runs a SAGA algorithm. you will find two settings, namely Log console output and Log execution commands to activate that logging mechanism.
La plupart des autres fournisseurs tiers qui sont appelés par la ligne de commandes ont des options similaires, que vous trouverez dans la rubrique configuration du module.
L’intégration de R est légèrement différente de celle de SAGA, dans la mesure où il n’y a pas d’ensemble prédéfini d’algorithmes à exécuter, hormis quelques exemples. Au lieu de cela, c’est à vous d’écrire les scripts à transmettre à R, comme vous le feriez depuis R. Un peu comme dans le chapitre sur les scripts. Ce chapitre va vous montrer comment appeler les commandes R à partir de QGIS et comment leur transmettre les objets QGIS (couches et tables).
La première chose à faire, comme nous l’avons vu pour SAGA, est de dire à QGIS où se situent les fichiers exécutables de R. Paramétrez l’entrée Répertoire R dans la fenêtre de configuration du module de traitements. Une fois cela fait, vous pouvez commencer à créer vos scripts R et à les exécuter.
Une fois encore, pour Linux, cela est légèrement différent : vous n’avez qu’à vérifier que le répertoire R est inclus dans la variable d’environnement PATH. Si vous pouvez lancer R en tapant R dans un terminal, alors vous êtes prêt pour la suite.
Pour ajouter un nouvel algorithme qui appelle une fonction R (ou un script R plus complexe que vous auriez développé et que vous souhaiteriez utiliser dans QGIS), vous devez créer un fichier de script qui va indiquer au module de traitements comment effectuer l’opération et les commandes R correspondantes.
Les fichiers de scripts ont une extension de fichier .rsx et leur création est relativement simple si vous connaissez la syntaxe et le langage de script de R. Ils seront sauvegardés dans le répertoire de scripts de R. Vous pouvez configurer ce répertoire dans le groupe de configuration de R, dans la fenêtre de configuration du Module de traitements, comme vous le feriez pour un script ordinaire.
Voyons un simple script, qui appelle la méthode spsample de R, pour créer une grille aléatoire à l’intérieur de l’emprise d’un ensemble de polygones d’une couche donnée. Cette fonction appartient au paquet maptools. Comme la plupart des algorithmes que vous aurez à intégrer dans QGIS utilisent ou génèrent des données spatiales, la connaissance des paquets spatiaux comme maptools et surtout sp est un prérequis.
##polyg=vector
##numpoints=number 10
##output=output vector
##sp=group
pts=spsample(polyg,numpoints,type="random")
output=SpatialPointsDataFrame(pts, as.data.frame(pts))
The first lines, which start with a double Python comment sign (##), tell QGIS the inputs of the algorithm described in the file and the outputs that it will generate. They work exactly with the same syntax as the SEXTANTE scripts that we have already seen, so they will not be described here again. Check the processing_scripts section for more information.
Quand vous déclarez un paramètre d’entrée, QGIS utilise cette information pour deux choses : créer le formulaire pour demander à l’utilisateur la valeur de ce paramètre et créer la variable R correspondante qui sera ensuite utilisée dans les commandes R.
Dans l’exemple ci-dessus, nous avons déclaré une entrée de type vecteur appelée polyg. A l’exécution de l’algorithme, QGIS ouvrira la couche sélectionnée par l’utilisateur dans R et la stockera dans une variable nommée polyg. Ainsi le nom du paramètre est également le nom de la variable à utiliser dans R pour accéder à son contenu (par conséquent, évitez d’utiliser des mots réservés R comme noms de paramètre).
Spatial elements such as vector and raster layers are read using the readOGR() and brick() commands (you do not have to worry about adding those commands to your description file, QGIS will do it) and stored as Spatial*DataFrame objects. Table fields are stored as strings containing the name of the selected field.
Les tables sont chargées par la commande read.csv(). Si la table à charger n’est pas au format CSV, il faudra la convertir avant de l’importer dans R.
De plus, les couches raster peuvent être lues avec la commande readGDAL() au lieu de brick(), en utilisant ##usereadgdal.
If you are an advanced user and do not want QGIS to create the object representing the layer, you can use the ##passfilename tag to indicate that you prefer a string with the filename instead. In this case, it is up to you to open the file before performing any operation on the data it contains.
With the above information, we can now understand the first line of our first example script (the first line not starting with a Python comment).
pts=spsample(polyg,numpoints,type="random")
La variable polygon contient déjà un objet SpatialPolygonsDataFrame, l’appel de la méthode spsample est donc simple. Il en est de même pour la méthode numpoints qui renvoit le nombre de points à ajouter pour créer la grille.
Comme nous avons déclaré une sortie de type vecteur nommée out, nous devons créer cette variable out et lui affecter un objet Spatial*DataFrame (dans notre cas, un SpatialPointsDataFrame). Vous pouvez utiliser n’importe quel nom pour les variables intermédiaires. Assurez-vous simplement que la variable qui stocke la valeur finale correspond à la variable de sortie définie au début.
Dans notre exemple, le résultat de la méthode spsample doit être converti explicitement en objet SpatialPointsDataFrame, dans la mesure où c’est un objet de la classe ppp qui ne peut être retransmis à QGIS.
If your algorithm generates raster layers, the way they are saved will depend on whether you have used or not the #dontuserasterpackage option. In you have used it, layers are saved using the writeGDAL() method. If not, the writeRaster() method from the raster package will be used.
If you have used the #passfilename option, outputs are generated using the raster package (with writeRaster()), even though it is not used for the inputs.
Si votre algorithme ne renvoie pas de couche, mais un résultat texte dans la console, vous devez précise que la console doit s’afficher à la fin de son exécution. Pour cela commencez les lignes qui doivent renvoyer les résultats par le signe >. Les sorties des autres lignes seront masquées. Par exemple, voici la description d’un algorithme qui réalise un test de normalisation sur un champ donné (ou une colonne) de la table d’attributs d’une couche vectorielle :
##layer=vector
##field=field layer
##nortest=group
library(nortest)
>lillie.test(layer[[field]])
La sortie de la dernière ligne est affichée, mais la sortie de la première ne l’est pas (ni celles des commandes ajoutées automatiquement par QGIS).
Si votre algorithme crée des graphiques (par la méthode plot()), ajoutez la ligne suivante:
##showplots
Ceci va indiquer à QGIS de rediriger toutes les sorties graphiques de R vers un fichier temporaire qui sera chargé une fois l’exécution de R terminée.
Les graphiques et les résultats dans la console seront affichés dans le gestionnaire de résultats.
Pour plus d’information, veuillez vous référer aux scripts fournis avec SEXTANTE. Tous sont relativement simples et pourront vous aider à construire vos propres scripts.
Note
rgdal and maptools libraries are loaded by default so you do not have to add the corresponding library() commands (you have to make sure, however, that those two packages are installed in your R distribution). However, other additional libraries that you might need have to be explicitly loaded. Just add the necessary commands at the beginning of your script. You also have to make sure that the corresponding packages are installed in the R distribution used by QGIS. The processing framework will not take care of any package installation. If you run a script that requires an uninstalled package, the execution will fail, and SEXTANTE will try to detect which packages are missing. You must install those missing libraries manually before you can run the algorithm.
Configurer GRASS est similaire à celle de SAGA. Tout d’abord,pour Windows, indiquez le répertoire d’installation de GRASS, ainsi que l’emplacement de l’interpréteur de shell (habituellement le fichier msys.exe fourni avec GRASS).
By default, the processign framework tries to configure its GRASS connector to use the GRASS distribution that ships along with QGIS. This should work without problems in most systems, but if you experience problems, you might have to do it manually. Also, if you want to use a different GRASS installation, you can change that setting and point to the folder where that it is installed. GRASS 6.4 is needed for algorithms to work correctly.
Sous Linux, assurez-vous simplement que GRASS est correctement installé et qu’il peut être lancé depuis un terminal.
Les algorithmes GRASS nécessitent la définition d’une région. Cette région peut être définie manuellement, en fournissant les valeurs, comme pour la configuration de SAGA, ou de manière automatique, correspondant à l’emprise minimale des données d’entrée à l’exécution de l’algorithme. Si vous préférez ce dernier réglage, cochez l’option Utiliser l’emprise minimale dans les paramètres de configuration de GRASS.
Le dernier paramètre à configurer est le jeu de données. Un jeu de dnnées est nécessaire pour exécuter GRASS et le module de traitement crée un jeu temporaire à chaque exécution. Vous devez indiquer si le système de coordonnées est géographique (lat/lon) ou projeté.
Les algorithmes GDAL ne nécessitent pas de configuration particulière, dans la mesure où ils sont déjà intégrés dans QGIS et ils y récupèrent donc leurs configurations.
Les algorithmes de la boîte à outils Orfeo (OTB) peuvent être exécutés depuis QGIS si OTB est installé sur votre ordinateur et que QGIS est configuré correctement pour trouver les fichiers nécessaires (outils en ligne de commande et librairies).
As in the case of SAGA OTB binaries are included in the standalone installer for Windows, but are not included if you are runing Linux, so you have to download and install the software yourself. Please check the OTB website for more information.
Une fois OTB installé, démarrez QGIS, ouvrez la fenêtre de configuration du module de Traitements et configurez le fournisseur OTB. Dans le groupe Orfeo Toolbox (image analysis), vous retrouverez tous les réglages relatifs à OTB. Vérifiez que les algorithmes sont activés.
Ensuite configurez l’emplacement des exécutables et des librairies OTB :
habituellement, le répertoire Applications OTB pointe vers /usr/lib/otb/applications et celui des Outils en ligne OTB est /usr/bin
si vous avez utilisé l’installateur OSGeo4W pour installer le paquet otb-bin, entrez respectivement C:\OSGeo4W\apps\orfeotoolbox\applications et C:\OSGeo4W\bin pour les répertoires OTB applications et OTB command line tools folder. Ces valeurs sont les configurations par défaut mais si vous avez une installation différente d’OTB, modifiez les en conséquence.
Pour utiliser ce fournisseur, vous devez installer les outils TauDEM en lignes de commandes.
Veuillez vous reporter au site de TauDEM pour les instructions d’installation et fichiers exécutables pour les systèmes 32bits et 64bits.**IMPORTANT** : installez la version TauDEM 5.0.6, la version 5.2 n’étant pas pour l’instant supportée.
La plupart des distributions Linux n’ont pas de paquets précompilés. Il vous faudra donc compiler vous-même TauDEM. TauDEM utilise MPICH2, qu’il faudra donc installer avec votre gestionnaire de paquets. TauDEM fonctionne également avec OpenMPI, que vous pouvez installer à la place de MPICH2.
Téléchargez le code source de TauDEM 5.0.6 à l’adresse suivante http://hydrology.usu.edu/taudem/taudem5.0/TauDEM5PCsrc_506.zip et décompressez les fichiers dans un répertoire.
Ouvrez le fichier lienarpart.h et après la ligne
#include "mpi.h"
ajoutez la ligne suivante
#include <stdint.h>
afin d’obtenir ceci
#include "mpi.h"
#include <stdlib.h>
Sauvegardez les modifications et fermez le fichier. À présent, ouvrez le fichier tiffIO.h, trouvez la ligne #include "stdint.h" dans laquelle vous remplacerez les quotes ("") par des <>, pour obtenir ceci
#include <stdint.h>
Sauvegardez et fermez le fichier. Créez un répertoire de compilation et déplacez-vous dedans
mkdir build
cd build
Configurez votre compliation avec la commande
CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
ensuite compilez
make
Enfin, pour installer TauDEM dans /usr/local/bin, exécutez
sudo make install