17.33. Utilisation de scripts R avec Processing

Module contribué par Matteo Ghetta - financé par Scuola Superiore Sant’Anna <https://www.santannapisa.it/it> _

Le traitement (avec le plugin « Processing R Provider ») permet d’écrire et d’exécuter des scripts R à l’intérieur de QGIS

Avertissement

R doit être installé sur votre ordinateur et le PATH doit être correctement configuré. De plus, Processing appelle simplement les paquets R externes, il n’est pas en mesure de les installer. Assurez-vous donc d’installer les paquets externes directement dans R. Voir le chapter 1 correspondant dans le manuel de l’utilisateur.

Note

Si vous avez des problèmes de paquets, ils peuvent être liés à l’absence de paquets obligatoires requis par le traitement, comme sp, rgdal et raster.

17.33.1. Ajout de scripts

L’ajout d’un script est simple. Le plus simple est d’ouvrir la boîte à outils de traitement et de choisir créer un nouveau script R… dans le menu R (marqué d’une icône R) en haut de la boîte à outils de traitement. Vous pouvez également créer le script dans un éditeur de texte par exemple et le sauvegarder dans votre dossier de scripts R (processing/rscripts). Une fois enregistré dans ce dossier, il sera possible de le modifier en cliquant avec le bouton droit de la souris sur le nom du script dans la Boîte à outils de traitement, puis en choisissant Edit Script…).

../../../_images/r_intro_1.png

Note

Si vous ne pouvez pas voir R dans Processing, vous devez l’activer dans Processing ▶ Options ▶ Pilotes

Il ouvre une fenêtre d’édition de script dans laquelle vous devez fournir quelques paramètres avant de pouvoir ajouter le corps du script.

../../../_images/r_intro_2.png

17.33.2. Création de graphiques

Dans ce tutoriel nous allons créer une boîte à moustaches à partir d’un champ d’une couche vertorielle.

Ouvrir le r_intro.qgs  projet QGIS sous exercise_data/processing/r_intro/ folder.

17.33.2.1. Paramètres du script

Ouvrez l’éditeur et commencez l’écriture au début.

Vous devez définir certains paramètres avant le corps du script :

  1. Le nom du groupe (plots dans ce cas) dans lequel vous voulez mettre votre script (si le groupe n’existe pas, il sera créé):

    ##plots=group
    

    Vous trouverez votre script dans le groupe plots R dans la boîte à outils Traitement.

  2. Vous devez indiquer à Processing que vous souhaitez afficher une parcelle (dans cet exemple):

    ##showplots
    

    Vous trouverez ensuite un lien vers le tracé dans le panneau visualiseur résultats (peut être activé / désactivé dans Vue ▶ Panneaux et avec Processing ▶ visualiseur résultats).

  3. Vous devez également informer Processing de vos données d’entrée. Dans cet exemple, nous voulons créer un tracé à partir d’un champ d’une couche vectorielle:

    ##Layer=vector
    

    Le traitement sait maintenant que l’entrée est un vecteur. Le nom Couche n’est pas important, ce qui compte c’est le paramètre vecteur.

  4. Enfin, vous devez spécifier le champ de saisie de la couche vectorielle (en utilisant le nom que vous avez fourni ci-dessus - Couche):

    ##X=Field Layer
    

    Processing sait maintenant que vous avez besoin d’un champ de Couche, et que vous l’appellerez X.

  5. Il est également possible de définir le nom de votre script en utilisant « name »:

    ##My box plot script=name
    

    S’il n’est pas défini, le nom du fichier sera utilisé comme nom du script.

17.33.2.2. Corps du script

Maintenant que vous avez établi l’en-tête du script vous pouvez ajouter la fonction

boxplot(Layer[[X]])

boxplot est le nom de la fonction R, le paramètre Layer est le nom que vous avez défini pour l’ensemble de données d’entrée et X est le nom que vous avez défini pour le champ de cet ensemble de données.

Avertissement

Le paramètre X doit être entre doubles crochets ([[]]).

Le script complet se présente ainsi

##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
../../../_images/r_intro_3.png

Enregistrez le script dans le chemin par défaut suggéré par Processing (processing / scripts). Si vous n’avez pas défini de « nom » dans l’en-tête du script, le nom de fichier que vous choisissez deviendra le nom du script dans la boîte à outils Traitement.

Note

Vous pouvez enregistrer le script où vous le souhaitez, mais Processing ne pourra pas l’inclure automatiquement dans la boîte à outils de traitement, vous devrez donc le télécharger manuellement.

Maintenant exécutez le en utilisant le bouton en haut de la fenêtre de l’éditeur :

../../../_images/r_intro_4.png

Une fois la fenêtre de l’éditeur fermée, utilisez la zone de texte de Traitement pour trouver votre script :

../../../_images/r_intro_5.png

Vous pouvez maintenant remplir les paramètres requis dans la fenêtre de l’algorithme de traitement :

  • pour Couche choisissez sample_points

  • pour le champ X, choisissez valeur.

Cliquez sur Lancer

../../../_images/r_intro_6.png

La Fenêtre des résultats devrait s’ouvrir automatiquement, sinon, cliquez simplement sur Processing ▶ Visualiseur de Résultats….

Cliquez sur le lien dans la visionneuse et vous verrez :

../../../_images/r_intro_7.png

Note

Vous pouvez ouvrir, copier et enregistrer l’image en cliquant avec le bouton droit de la souris sur le diagramme.

17.33.3. Créer un vecteur

Vous pouvez également créer une couche vectorielle et la charger automatiquement dans QGIS.

L’exemple suivant est tiré du script « Grille d’échantillonnage aléatoire » qui se trouve dans la collection en ligne de scripts R (les scripts de cette collection en ligne se trouvent à https://github.com/qgis/QGIS-Processing/tree/master/rscripts).

Le but de cet exercice est de créer une couche vectorielle ponctuelle aléatoire en utilisant une couche vectorielle d’entrée pour restreindre l’étendue en utilisant la fonction « spsample » du paquet « sp ».

17.33.3.1. Paramètres du script

Comme auparavant, nous devons définir certains paramètres avant le corps du script :

  1. Précisez le nom du groupe dans lequel vous voulez mettre votre script, dans ce cas Point pattern analysis:

    ##Point pattern analysis=group
    
  2. Définissez un paramètre d’entrée (une couche vectorielle) qui limitera le placement des points aléatoires:

    ##Layer=vector
    
  3. Définissez un paramètre d’entrée pour le nombre de points qui vont être créés (« Taille », avec une valeur par défaut de « 10 »):

    ##Size=number 10
    

    Note

    Comme une valeur par défaut (10) est définie, l’utilisateur peut changer ce nombre ou peut laisser le paramètre sans nombre.

  4. Précisez qu’il existe une couche vecteurs de sortie (appelée « Output »):

    ##Output=output vector
    

17.33.3.2. Corps du script

Vous pouvez maintenant ajouter le corps de la fonction :

  1. Utilisez la fonction « spsample »:

    pts=spsample(Layer, Size, type="random")
    

    La fonction utilise la couche pour contraindre le placement des points (s’il s’agit d’une couche de lignes, un point devra se trouver sur une des lignes de la couche, s’il s’agit d’une couche de polygones, un point devra se trouver à l’intérieur d’un polygone). Le nombre de points est tiré du paramètre Size. La méthode d’échantillonnage est aléatoire.

  2. Générer la sortie (le paramètre « Output »):

    Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
    

Le script complet se présente ainsi

##Point pattern analysis=group
##Layer=vector
##Size=number 10
##Output=output vector
pts=spsample(Layer, Size, type="random")
Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
../../../_images/r_intro_8.png

Enregistrez-le et exécutez-le, en cliquant sur le bouton « Exécuter ».

Dans la nouvelle fenêtre, entrez les bons paramètres :

../../../_images/r_intro_9.png

et cliquez sur Lancer.

La couche de résultats sera ajoutée à la table des matières et ses points seront affichés sur le canevas de la carte :

../../../_images/r_intro_10.png

17.33.4. Textes et graphiques issus de - syntaxe-R

Le traitement (avec le plugin « Processing R Provider ») utilise une syntaxe spéciale pour obtenir les résultats de R :

  • > avant votre commande, comme pour >lillie.test(Couche[[Champ]]) qui veut dire que le résultat devrait être envoyé sur la sortie de R (Visionneur de Résultat)

  • « + » après une parcelle permet de superposer les parcelles. Par exemple, « plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))``