Important
La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 91.04%.
17.33. Utilisation de scripts R avec Processing
Module contribué par Matteo Ghetta - financé par Scuola Superiore Sant’Anna
Processing (with the Processing R Provider plugin) makes it possible to write and run R scripts inside 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
Adding a script is simple.
The easiest way is to open the Processing toolbox and choose
Create new R script… from the R menu (labelled with an
R icon) at the top of the Processing Toolbox.
You can also create the script in for instance a text editor and save it in
your R scripts folder (processing/rscripts).
When it has been saved there, it will be available for editing by
right-clicking on the script name in the processing toolbox and then choose
Edit Script…).
Note
Si vous ne pouvez pas voir R dans les outils de Traitement, vous devez l’activer dans
It opens a R Script Editor in which you have to specify some parameters before you can add the script body.
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=groupVous 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):
##showplotsVous 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=vectorLe 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 LayerProcessing 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=nameS’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 :
for Layer choose
sample_pointsfor the X field choose
value
Click on Run.
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=groupDéfinissez un paramètre d’entrée (une couche vectorielle) qui limitera le placement des points aléatoires:
##Layer=vectorDé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 10Note
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]]))``