Important
La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 100.00%.
17.33. Utilisation de scripts R avec Processing
Module contribué par Matteo Ghetta - financé par Scuola Superiore Sant’Anna
L’outil Traitement (via 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 chapitre 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 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 ).
Note
Si vous ne pouvez pas voir R dans les outils de Traitement, vous devez l’activer dans
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.
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.
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 :
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.
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
et avec ).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.
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.
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.
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]])
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 :
Une fois la fenêtre de l’éditeur fermée, utilisez la zone de texte de Traitement pour trouver votre script :
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
La Fenêtre des résultats devrait s’ouvrir automatiquement, sinon, cliquez simplement sur
.Cliquez sur le lien dans la visionneuse et vous verrez :
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 ».
Paramètres du script
Comme auparavant, nous devons définir certains paramètres avant le corps du script :
Précisez le nom du groupe dans lequel vous voulez mettre votre script, dans ce cas Point pattern analysis:
##Point pattern analysis=group
Définissez un paramètre d’entrée (une couche vectorielle) qui limitera le placement des points aléatoires:
##Layer=vector
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.Précisez qu’il existe une couche vecteurs de sortie (appelée « Output »):
##Output=output vector
Corps du script
Vous pouvez maintenant ajouter le corps de la fonction :
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.
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))
Enregistrez-le et exécutez-le, en cliquant sur le bouton « Exécuter ».
Dans la nouvelle fenêtre, entrez les bons paramètres :
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 :
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]]))``