3Liz

Libérez vos SIG

QGIS Processing R 3

Tue 22 June 2021

fr, en

Le plugin QGIS Processing R version 3.0

Le plugin QGIS Processing R permet de développer des scripts avec le langage R pour le module traitement de QGIS.

Le plugin QGIS Processing R a été développé suite au travail de réorganisation du code du module traitement de QGIS 3. North Road a extrait et adapté le code du module traitement de QGIS 2 pour QGIS 3.

Une nouvelle version majeure a été publiée. Cette version intègre des améliorations développées par 3Liz sur commande de l'Ifremer pour la plateforme Sextant.

Depuis la version 2.0.0 du plugin QGIS processing R, nous avons réalisé de nombreux correctifs qui concernaient principalement le support des sorties d'algorithme :

Les améliorations importantes de la version 3.0.0 concernent les possibilités de description des algorithmes :

Amélioration de la documentation des scripts

Depuis la version 3.16 de QGIS, il est possible de définir une aide pour les paramètres d'un algorithme. Cette possibilité est disponible pour les plugins ajoutant un fournisseur d'algorithme, les scripts Python et les modèles de traitements.

Avec la version 3.0.0 du plugin QGIS processing R, l'aide pour les paramètres peut-être défini dans le fichier d'aide du script. Ce fichier d'aide est un fichier JSON. Le nom du paramètre sert de clé pour définir l'aide de celui-ci.

Par exemple pour un algorithme dont les paramètres polyg et RPLOTS, le document d'aide contiendra ces clés

{
  "ALG_DESC": "Test help.",  // Description de l'algorithme
  "ALG_CREATOR": "Me",  // Créateur de l'algorithme
  "polyg": "A polygon layer", // Aide du paramètre polyg
  "RPLOTS": "Plot output", // Aide du paramètre RPLOTS
  "ALG_HELP_CREATOR": "Me2" // Créateur de l'aide
}

L'aide des paramètres apparaitra sous forme de Tooltip des champs de saisie de la fenêtre de l'algorithme. Il sera utilisé comme description des paramètres dans la description des algorithmes publiés en OGC Web Processing Service (wps) avec py-qgis-wps.

Définition du titre de l'algorithme

Le titre d'un algorithme basé sur un script R est défini par le plugin de la façon suivante : 1. Le premier nom possible est déduit du nom du fichier du script R, les _ sont remplacés par des espaces. Le nom du fichier sert d'identifiant pour l'algorithme. 2. Le second nom possible est déduit de la ligne de métadonnées (ligne commençant par ##) name, les _ sont remplacés par des espaces. La valeur de la ligne de métadonnées name sert d'identifiant à l'algorithme. 3. Le troisième nom possible est la valeur de la ligne de métadonnées display_name. L'identifiant de l'algorithme sera la valeur de la ligne de métadonnées name ou le nom du fichier.

Avec la version 3.0.0 du plugin QGIS processing R, il est possible de dissocié clairement le titre de l'algorithme de son identifiant.

Description avancée des paramètres

La description des paramètres d'un algorithme basé sur un script R repose sur les lignes de métadonnées. Ces lignes commencent par ##.

Par défaut la description des paramètres se fait selon la structure imaginée par Victor Olaya pour les scripts Python dans la version pour QGIS 2 du module Traitement. Un paramètre se décrit de la façon suivante param_name=[optional] param_type [default_value/values/from_variable]. Cette structure s'appuie sur la définition des méthodes asScritCode / fromScriptcode des classes de paramètres de Processing (toutes les classes filles de QgsProcessingParameterDefinition).

Les entrées peuvent donc ressembler à ceci :

Le script R test_algorithm_2.rsx qui permet de tester que le plugin analyse correctement la description des paramètres, présente d'autres exemples de paramètres.

Le défaut de cette description compacte des paramètres est qu'elle ne permet pas de les configurer complètement. Par exemple, il n'est pas possible d'ajouter une description ou une aide.

Pour remédier à cela, nous avons décidé de réutiliser une autre façon de décrire les paramètres déjà disponible dans le module Traitement de QGIS. Cette description avancée des paramètres a été conçu pour les fournisseurs d'algorithmes que sont GDAL, GRASS7, SAGA et Orpheo Toolbox.

Les paramètres sont décrits de la façon suivante QgsProcessingParameter|name|description|other_parameters_separated_by_pipe. other_parameter_separated_by_pipe contient les autres paramètres d'initialisation du paramètre d'entré de l'algorithme.

Les entrées peuvent donc ressembler à ceci :

Le seul défaut de cette façon de décrire les entrées de l'algorithme est qu'elle nécessite de connaître les classes de paramètres de Processing (toutes les classes filles de QgsProcessingParameterDefinition).

Conclusion

L'ensemble de ces améliorations permettent de construire des algorithmes dont l'interface quelle soit graphique dans QGIS bureautique, en ligne de commande avec qgis_process, ou en mode Web avec la norme WPS et py-qgis-wps, est plus conviviale pour les différents utilisateurs.

D'ailleurs les procédés mise en œuvre au sein du plugin QGIS Processing R pourrait très bien être adapté à d'autres langages de programmation comme Julia.

René-Luc D'Hont et Ludovic Hirlimann