Configuration des applications tierces¶
The processing framework can be extended using additional applications. Algorithms that rely on external applications are managed by their own algorithm providers. Additional providers can be found as separate plugins, and installed using the QGIS Plugin Manager.
This section will show you how to configure the Processing framework to include these additional applications, and it will explain some particular features of the algorithms based on them. Once you have correctly configured the system, you will be able to execute external algorithms from any component like the toolbox or the graphical modeler, just like you do with any other algorithm.
By default, algorithms that rely on an external application not shipped with QGIS are not enabled. You can enable them in the Processing settings dialog if they are installed on your system.
Note pour les utilisateurs de Windows¶
If you are not an advanced user and you are running QGIS on Windows, you might not be interested in reading the rest of this chapter. Make sure you install QGIS in your system using the standalone installer. That will automatically install SAGA and GRASS in your system and configure them so they can be run from QGIS. All the algorithms from these providers will be ready to be run without needing any further configuration. If installing with the OSGeo4W application, make sure that you also select SAGA and GRASS for installation.
A propos des formats de fichiers¶
When using external software, opening a file in QGIS does not mean that it can be opened and processed in that other software. In most cases, other software can read what you have opened in QGIS, but in some cases, that might not be true. When using databases or uncommon file formats, whether for raster or vector layers, problems might arise. If that happens, try to use well-known file formats that you are sure are understood by both programs, and check the console output (in the log panel) to find out what is going wrong.
You might for instance get trouble and not be able to complete your work if you call an external algorithm with a GRASS raster layers as input. For this reason, such layers will not appear as available to algorithms.
You should, however, not have problems with vector layers, since QGIS automatically converts from the original file format to one accepted by the external application before passing the layer to it. This adds extra processing time, which might be significant for large layers, so do not be surprised if it takes more time to process a layer from a DB connection than a layer from a Shapefile format dataset of similar size.
Les algorithmes n’utilisant pas d’application tierce peuvent traiter toutes les couches qui peuvent s’ouvrir dans QGIS puisque qu’ils sont lancés depuis QGIS.
All raster and vector output formats produced by QGIS can be used as input layers. Some providers do not support certain formats, but all can export to common formats that can later be transformed by QGIS automatically. As for input layers, if a conversion is needed, that might increase the processing time.
A propos des sélections sur les couches vectorielles¶
Les applications tierces peuvent prendre en compte les sélections qui existent sur les couches vecteur dans QGIS. Cependant, cela nécessite de réécrire toutes les couches vecteur d’entrée, comme si elles étaient dans un format non géré par l’application tierce. Une couche peut être passée directement à une application tierce uniquement lorsqu’il n’y a pas de sélection ou que l’option N’utiliser que les entités sélectionnées n” pas activée dans les paramètres de configuration généraux du module de traitement.
In other cases, exporting only selected features is needed, which causes longer execution times.
SAGA¶
SAGA algorithms can be run from QGIS if SAGA included in the QGIS installation.
If you are running Windows, both the stand-alone installer and the OSGeo4W installer include SAGA.
A propos des limitations du système de grille de SAGA¶
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 de cette 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 l’emprise à l’aide des paramètres suivants:
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 minimale pour le rééchantillonnage. Toutes les autres options seront ignorées et l’emprise minimum couvrant toutes les couches 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.
Limitations pour les couches multi-bandes¶
Contrairement à QGIS, SAGA ne gère pas les couches multi-bande. Si vous utilisez de telles couches (par exemple une image RVB ou multispectrale), vous devez tout d’abord la séparer en couches mono-bande. Pour ce faire, vous pouvez utilisez l’algorithme “SAGA/Grid - Tools/Split RGB image” (qui crée trois images à partir d’une image RVB) ou l’algorithme “SAGA/Grid - Tools/Extract band” (qui extrait une bande en particulier).
Limitations dans la résolution¶
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.
Suivi du journal¶
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 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.
Most other providers that use external applications and call them through the command-line have similar options, so you will find them as well in other places in the processing settings list.
R scripts¶
To enable R in Processing you need to install the Processing R Provider plugin and configure R for QGIS.
Configuration is done in Processing tab of .
in theDepending on your operating system, you may have to use R folder to specify where your R binaries are located.
Note
On Windows the R executable file is normally in
a folder (R-<version>
) under C:\Program Files\R\
.
Specify the folder and NOT the binary!
On Linux you just have to make sure that the R folder is
in the PATH environment variable.
If R
in a terminal window starts R, then you are ready to go.
After installing the Processing R Provider plugin, you will find some example scripts in the Processing Toolbox:
Scatterplot runs an R function that produces a scatter plot from two numerical fields of the provided vector layer.
test_sf does some operations that depend on the
sf
package and can be used to check if the R packagesf
is installed. If the package is not installed, R will try to install it (and all the packages it depends on) for you, using the Package repository specified in in the Processing options. The default is http://cran.at.r-project.org/. Installing may take some time…test_sp can be used to check if the R package
sp
is installed. If the package is not installed, R will try to install it for you.
If you have R configured correctly for QGIS, you should be able to run these scripts.
Adding R scripts from the QGIS collection¶
R integration in QGIS is different from that of SAGA in that there is not a predefined set of algorithms you can run (except for some example script that come with the Processing R Provider plugin).
A set of example R scripts is available in the QGIS Repository. Perform the following steps to load and enable them using the QGIS Resource Sharing plugin.
Add the QGIS Resource Sharing plugin (you may have to enable Show also experimental plugins in the Plugin Manager Settings)
Open it (Plugins-> Resource Sharing-> Resource Sharing)
Choose the Settings tab
Click Reload repositories
Choose the All tab
Select QGIS R script collection in the list and click on the Install button
The collection should now be listed in the Installed tab
Close the plugin
Open the Processing Toolbox, and if everything is OK, the example scripts will be present under R, in various groups (only some of the groups are expanded in the screenshot below).
The scripts at the top are the example scripts from the Processing R Provider plugin.
If, for some reason, the scripts are not available in the Processing Toolbox, you can try to:
Open the Processing settings (
tab)Go to
On Ubuntu, set the path to (or, better, include in the path):
/home/<user>/.local/share/QGIS/QGIS3/profiles/default/resource_sharing/repositories/github.com/qgis/QGIS-Resources/collections/rscripts
On Windows, set the path to (or, better, include in the path):
C:\Users\<user>\AppData\Roaming\QGIS\QGIS3\profiles\default\resource_sharing\repositories\github.com\qgis\QGIS-Resources\collections\rscripts
To edit, double-click. You can then choose to just paste / type the path, or you can navigate to the directory by using the … button and press the Add button in the dialog that opens. It is possible to provide several directories here. They will be separated by a semicolon (« ; »).
If you would like to get all the R scrips from the QGIS 2 on-line collection, you can select QGIS R script collection (from QGIS 2) instead of QGIS R script collection. You will find probably find that scripts that depend on vector data input or output will not work.
Creating R scripts¶
You can write scripts and call R commands, as you would do from R. This section shows you the syntax for using R commands in QGIS, and how to use QGIS objects (layers, tables) in them.
To add an algorithm that calls an R function (or a more complex R script that you have developed and you would like to have available from QGIS), you have to create a script file that performs the R commands.
R script files have the extension .rsx
, and creating them is
pretty easy if you just have a basic knowledge of R syntax and R
scripting.
They should be stored in the R scripts folder.
You can specify the folder (R scripts folder) in the
R settings group in Processing settings dialog).
Let’s have a look at a very simple script file, which calls the R
method spsample
to create a random grid within the boundary of the
polygons in a given polygon layer.
This method belongs to the maptools
package.
Since almost all the algorithms that you might like to incorporate
into QGIS will use or generate spatial data, knowledge of spatial
packages like maptools
and sp
/sf
, is very useful.
##Random points within layer extent=name
##Point pattern analysis=group
##Vector_layer=vector
##Number_of_points=number 10
##Output=output vector
library(sp)
spatpoly = as(Vector_layer, "Spatial")
pts=spsample(spatpoly,Number_of_points,type="random")
spdf=SpatialPointsDataFrame(pts, as.data.frame(pts))
Output=st_as_sf(spdf)
The first lines, which start with a double Python comment sign
(##
), define the display name and group of the script, and
tell QGIS about its inputs and outputs.
Note
To find out more about how to write your own R scripts, have a look at the R Intro section in the training manual and consult the QGIS R Syntax section.
When you declare an input parameter, QGIS uses that information for two things: creating the user interface to ask the user for the value of that parameter, and creating a corresponding R variable that can be used as R function input.
In the above example, we have declared an input of type vector
,
named Vector_layer
.
When executing the algorithm, QGIS will open the layer selected
by the user and store it in a variable named Vector_layer
.
So, the name of a parameter is the name of the variable that you
use in R for accessing the value of that parameter (you should
therefore avoid using reserved R words as parameter names).
Spatial parameters such as vector and raster layers are read using
the st_read()
(or readOGR
) and brick()
(or readGDAL
)
commands (you do not have to worry about adding those commands to
your description file – QGIS will do it), and they are stored as
sf
(or Spatial*DataFrame
) objects.
Table fields are stored as strings containing the name of the selected field.
Vector files can be read using the readOGR()
command instead
of st_read()
by specifying ##load_vector_using_rgdal
.
This will produce a Spatial*DataFrame
object instead of an
sf
object.
Raster files can be read using the readGDAL()
command instead
of brick()
by specifying ##load_raster_using_rgdal
.
If you are an advanced user and do not want QGIS to create the
object for the layer, you can use ##pass_filenames
to indicate
that you prefer a string with the filename.
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, it is possible to understand the first lines of the R script (the first line not starting with a Python comment character).
library(sp)
spatpoly = as(Vector_layer, "Spatial")
pts=spsample(polyg,numpoints,type="random")
The spsample
function is provided by the sp library, so
the first thing we do is to load that library.
The variable Vector_layer
contains an sf
object.
Since we are going to use a function (spsample
) from the sp
library, we must convert the sf
object to a
SpatialPolygonsDataFrame
object using the as
function.
Then we calling the spsample
function, with this object and
the numpoints
input parameter (which specifies the number of
points to generate).
Since we have declared a vector output named Output
, we have to
create a variable named Output
containing an sf
object.
We do this in two steps.
First we create a SpatialPolygonsDataFrame
object from the
result of the function, using the SpatialPointsDataFrame function,
and then we convert that object to an sf
object using the
st_as_sf
function (of the sf library).
You can use whatever names you like for your intermediate
variables.
Just make sure that the variable storing your final result has
the defined name (in this case Output
), and that it contains
a suitable value (an sf
object for vector layer output).
In this case, the result obtained from the spsample
method had
to be converted explicitly into an sf
object via a
SpatialPointsDataFrame
object, since it is itself an object of
class ppp
, which can not be returned to QGIS.
Si votre algorithme génère des couches raster, la façon dont elles sont enregistrées varie selon que vous ayez utilisé l’option ##dontuserasterpackage
ou pas. Si oui, les couches seront sauvegardées en utilisant la méthode writeGDAL()
. Si non, la méthode writeRaster()
du paquet raster
sera utilisée.
If you have used the ##pass_filenames
option, outputs are
generated using the raster
package (with writeRaster()
).
If your algorithm does not generate a layer, but a text result in
the console instead, you have to indicate that you want the
console to be shown once the execution is finished.
To do so, just start the command lines that produce the results
you want to print with the >
(“greater than”) sign.
Only output from lines prefixed with >
are shown.
For instance, here is the description file of an algorithm that
performs a normality test on a given field (column) of the
attributes of a vector layer:
##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).
If your algorithm creates any kind of graphics (using the plot()
method), add the following line (output_plots_to_html
used to be
showplots
):
##output_plots_to_html
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.
Both graphics and console results will be available through the processing results manager.
For more information, please check the R scripts in the official QGIS collection (you download and install them using the QGIS Resource Sharing plugin, as explained elsewhere). Most of them are rather simple and will greatly help you understand how to create your own scripts.
Note
The sf
, rgdal
and raster
libraries are loaded by default,
so you do not have to add the corresponding library()
commands.
However, other additional libraries that you might need have to be
explicitly loaded by typing:
library(ggplot2)
(to load the ggplot2
library).
If the package is not already installed on your machine, Processing
will try to download and install it.
In this way the package will also become available in R Standalone.
Be aware that if the package has to be downloaded, the script
may take a long time to run the first time.
R libraries¶
The R script sp_test
tries to load the R packages sp
and
raster
.
R libraries installed when running sf_test¶
The R script sf_test tries to load sf
and raster
.
If these two packages are not installed, R may try to load and install
them (and all the libraries that they depend on).
The following R libraries end up in
~/.local/share/QGIS/QGIS3/profiles/default/processing/rscripts
after sf_test
has been run from the Processing Toolbox on Ubuntu with
version 2.0 of the Processing R Provider plugin and a fresh install of
R 3.4.4 (apt package r-base-core
only):
abind, askpass, assertthat, backports, base64enc, BH, bit, bit64,
blob, brew, callr, classInt, cli, colorspace, covr, crayon, crosstalk,
curl, DBI, deldir, desc, dichromat, digest, dplyr, e1071, ellipsis,
evaluate, fansi, farver, fastmap, gdtools, ggplot2, glue, goftest,
gridExtra, gtable, highr, hms, htmltools, htmlwidgets, httpuv, httr,
jsonlite, knitr, labeling, later, lazyeval, leafem, leaflet,
leaflet.providers, leafpop, leafsync, lifecycle, lwgeom, magrittr, maps,
mapview, markdown, memoise, microbenchmark, mime, munsell, odbc, openssl,
pillar, pkgbuild, pkgconfig, pkgload, plogr, plyr, png, polyclip, praise,
prettyunits, processx, promises, ps, purrr, R6, raster, RColorBrewer,
Rcpp, reshape2, rex, rgeos, rlang, rmarkdown, RPostgres, RPostgreSQL,
rprojroot, RSQLite, rstudioapi, satellite, scales, sf, shiny,
sourcetools, sp, spatstat, spatstat.data, spatstat.utils, stars, stringi,
stringr, svglite, sys, systemfonts, tensor, testthat, tibble, tidyselect,
tinytex, units, utf8, uuid, vctrs, viridis, viridisLite, webshot, withr,
xfun, XML, xtable
GRASS¶
Configuring GRASS is not much different from configuring SAGA. First, the path to the GRASS folder has to be defined, but only if you are running Windows.
By default, the Processing framework tries to configure its GRASS connector to use the GRASS distribution that ships along with QGIS. This should work without problems for most systems, but if you experience problems, you might have to configure the GRASS connector manually. Also, if you want to use a different GRASS installation, you can change the setting to point to the folder where the other version is installed. GRASS 7 is needed for algorithms to work correctly.
If you are running Linux, you just have to make sure that GRASS is correctly installed, and that it can be run without problem from a terminal window.
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.
LAStools¶
To use LAStools in QGIS, you need to download and install LAStools on your computer and install the LAStools plugin (available from the official repository) in QGIS.
On Linux platforms, you will need Wine to be able to run some of the tools.
LAStools is activated and configured in the Processing options
(Processing tab,
), where you can specify the
location of LAStools (LAStools folder) and Wine
(Wine folder).
On Ubuntu, the default Wine folder is /usr/bin
.