Outdated version of the documentation. Find the latest one here.

17.31. Utilisation de scripts R avec Processing

Module réalisé par Matteo Ghetta - financé par Scuola Superiore Sant’Anna

Processing permet d’écrire et de faire tourner des scripts dans QGIS.

Warning

R doit être installé sur votre ordinateur et la variable PATH doit être correctement configurée. De plus, Processing ne fait qu’utiliser les progiciels de R, et ne peut donc pas les installer. Soyez donc certain d’installer les progiciels externes directement dans R. Voir aussi le chapitre correspondant dans le manuel de formation.

Note

Si vous avez des problèmes avec certains progiciels, c’est peut être lié à l’absence de progiciels obligatoires requis par Processing, comme “sp”, “rgdal” et “raster”.

17.31.1. Ajout de scripts

Ajouter un script est très simple. Ouvrez la boîte d’outils de Processing et cliquez simplement sur R ‣ Outils ‣ Créer un nouveau script R.

../../../_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.31.2. Création de graphiques

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

Ouvrez le projet QGIS r_intro.qgs.

17.31.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 auquel votre script appartiendra

    ##plots=group
    

    de sorte que vous trouverez votre script dans le groupe graphiques de la boîte d’outils de Processing.

  2. vous devez dire à Processing que vous voulez afficher un graphique (comme dans cet exemple)

    ##showplots
    

    De cette façon vous verrez le graphique dans le Visualiseur de Résultats de Processing.

  3. Vous devez aussi dire à Processing le type de données que vous allez utiliser. Dans cet exemple nous voulons créer un graphique à partir d’un champ d’une couche vectorielle.

    ##Layer=vector
    

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

  4. Enfin, vous devez fournir le champ en entrée de la couche vectorielle que vous voulez afficher

    ##X=Field Layer
    

    Donc Processing sait que vous avez appelé X le Champ de la Couche.

17.31.2.2. Corps du script

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

boxplot(Layer[[X]])

Notez que Boîte à Moustaches est le nom de la fonction R qui appelle Couche comme jeu de données et X en tant que champ du jeu de données.

Warning

Le paramètre X est entre double 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

Sauvez le script dans le répertoire suggéré par Processing. Le nom que vous choisissez sera celui du script que vous trouverez dans la boîte d’outils de Processing.

Note

Vous pouvez sauver le script dans un autre répertoire, mais Processing n’est pas capable de le charger automatiquement et vous devrez charger tous les scripts manuellement

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

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

Autrement, une fois que la fenêtre de l’éditeur a été fermée, utilisez la boîte de texte de Processing pour trouver votre script :

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

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

  • Choisissez points tests comme Couche

  • Renseignez le champ X avec le paramètre value

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....

C’est le dernier résultat que vous verrez :

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

Note

Vous pouvez ouvrir, copier et sauver l’image avec un clic droit sur le graphique

17.31.3. Créer un vecteur

Avec un script R vous pouvez aussi créer un vecteur et l’ajouter automatiquement à QGIS.

L’exemple suivant est tiré du script Échantillonnage aléatoire de grille que vous pouvez télécharger de la collection en ligne R ‣ Outils ‣ Télécharger des scripts R à partir de la collection en ligne.

Le but de l’exercice est de créer un vecteur de points aléatoires dans l’emprise d’une couche en utilisant la fonction spsample du progiciel sp.

17.31.3.1. Paramètres du script

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

  1. définissez le nom du groupe dans lequel le script sera mis, par exemple Analyses de motif de points

    ##Point pattern analysis=group
    
  2. définissez la couche qui contiendra les points aléatoires

    ##Layer=vector
    
  3. définissez le nombre de points qui seront créés

    ##Size=number 10
    

    Note

    10 sera la valeur par défaut. Vous pouvez modifier ce chiffre ou vous pouvez laisser le paramètre sans valeur par défaut

  4. spécifie que la sortie est une couche vectorielle

    ##Output= output vector
    

17.31.3.2. Corps du script

Vous pouvez maintenant ajouter le corps de la fonction :

  1. exécute la fonction spsample

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

    de cette façon la fonction récupère l’emprise de la Couche, le nombre de points est dérivé du paramètre Taille et le type de création des points est aléatoire

  2. Écrit la ligne qui contient les paramètres en sortie

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

Le script complet devrait être :

../../../_images/r_intro_8.png

Sauvez-le et exécutez-le, en cliquant sur le bouton Lancer.

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

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

et cliquez sur Lancer.

Les points en résultant seront affichés sur le canevas de carte

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

17.31.4. R - syntaxe de Processing

Veuillez noter que Processing 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 un graphique pour permettre la superposition de graphiques. Par exemple plot(Couche[[X]], Couche[[Y]]) + abline(h=mean(Couche[[X]]))