Wichtig

Übersetzen ist eine Gemeinschaftsleistung Sie können mitmachen. Diese Seite ist aktuell zu 88.06% übersetzt.

17.33. Nutzung von R-Skripten in der Prozessierung

Modul erstellt von Matteo Ghetta - finanziert von der Scuola Superiore Sant’Anna

Processing (with the Processing R Provider plugin) makes it possible to write and run R scripts inside QGIS.

Warnung

R muss auf Ihrem Rechner installiert und die PATH-Variable korrekt gesetzt sein. Die Verarbeitungsumgebung ruft die externen R Packete nur auf. Sie kann sie nicht selbst installieren. Stellen Sie daher sicher, dass die externen Pakete direkt in R installiert werden. Im Benutzerhandbuch Kapitel findet man dazu weitere Informationen.

Bemerkung

Wenn es Probleme mit Paketen gibt, fehlen unter Umständen für die Verarbeitung erforderliche Pakete wie sp, rgdal und raster.

17.33.1. Hinzufügen von Skripten

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

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

Bemerkung

Wenn Sie R nicht in der Verarbeitungsumgebung finden, müssen Sie es unter Optionen ► Verarbeitung ► Datenanbieter aktivieren.

It opens a R Script Editor in which you have to specify some parameters before you can add the script body.

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

17.33.2. Erstellung von Plots

In dieser Anleitung erstellen wir einen Box-Plot für ein Feld eines Vektorlayers.

Öffnen das QGIS Projekt r_intro.qgs im Ordner exercise_data/processing/r_intro/.

Skript Parameter

Öffnen Sie den Editor und beginnen mit dem Schreiben am Anfang.

Sie müssen einige Parameter vor dem Hauptteil des Skripts festlegen:

  1. Der Name der Gruppe (plots in diesem Fall) in der Sie Ihr Skript stellen wollen (wenn die Gruppe nicht existiert, wird sie erstellt):

    ##plots=group
    

    Sie finden Ihr Skript in der plots R Gruppe in den Verarbeitungswerkzeugen.

  2. Sie müssen der Verarbeitung mitteilen, dass Sie ein Plot (in diesem Beispiel) darstellen möchten:

    ##showplots
    

    Sie erhalten dann in der Ergebnisanzeige einen Link zum Plot (das kann unter Ansicht ► Bedienfelder und mit Verarbeitung ► Ergebnisanzeige ein- oder ausgeschaltet werden).

  3. Sie müssen der Verarbeitung auch die Eingabedaten vorgeben. In diesem Beispiel wollen wir ein Plot für ein Feld eines Vektorlayers erstellen:

    ##Layer=vector
    

    Die Verarbeitung weiß nun, dass die Eingabe eine Vektordatei ist. Der Name Layer ist nicht wichtig, entscheidend ist der Parameter vector.

  4. Als Letztes müssen Sie das Eingabefeld des Vektorlayers vorgeben (unter Nutzung des Namens, den Sie oben vergeben haben - Layer):

    ##X=Field Layer
    

    Die Verarbeitung weiß nun, dass Sie ein Feld Layer benötigen und es X nennen.

  5. Man kann den Namen des Skriptes auch mit Hilfe von name definieren:

    ##My box plot script=name
    

    Wenn nichts vorgegeben ist, wird der Dateiname als Name des Skriptes verwendet.

Hauptteil des Skripts

Nachdem wir den Kopf des Skriptes festgelegt haben, können wir die Funktionalität hinzufügen:

boxplot(Layer[[X]])

boxplot ist der Name der R Funktion. Der Parameter Layer ist der Name, den wir für den Eingabedatensatz vorgegeben haben. X ist der vorgegebene Name des Feldes im Datensatz.

Warnung

Der Parameter X muss innerhalb doppelter eckiger Klammern stehen ([[]]).

Das fertige Skript sollte wie folgt aussehen:

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

Speichern Sie das Skript im voreingestellten Pfad entsprechend des Vorschlags der Verarbeitung (processing/rscripts). Wenn Sie name im Kopf des Skriptes nicht definiert haben, wird das Skript in der Verarbeitungsumgebung mit dem Dateinamen bezeichnet.

Bemerkung

Sie können das Skript an einem beliebigen Ort speichern. Die Verarbeitung übernimmt das Skript dann nicht automatisch in die Verarbeitungsumgebung und es muss manuell hinzugefügt werden.

Starten Sie jetzt das Skript durch Drücken auf die ausführen Schaltfläche im Editorfenster:

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

Nutzen Sie nach dem Schließen des Editorfensters die Textbox der Verarbeitung, um Ihr Skript zu finden:

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

Sie können nun die erforderlichen Parameter im Fenster des Verarbeitungsalgorithmus eintragen:

  • for Layer choose sample_points

  • for the X field choose value

Click on Run.

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

Die Ergebnisanzeige sollte sich automatisch öffnen. Falls das nicht geschieht, klicken Sie auf Verabeitung ► Ergebnisanzeige.

Wenn Sie auf den Link in der Ergebnisanzeige klicken, sehen Sie das Folgende:

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

Bemerkung

Sie können das Bild nun durch Rechtsklick auf den Plot kopieren und speichern.

17.33.3. Erstellen eines Vektorlayers

Sie können außerdem einen Vektorlayer erstellen und ihn automatisch in QGIS laden.

The following example has been taken from the Random sampling grid script that can be found in the online collection of R scripts (the scripts in this online collection can be found in https://github.com/qgis/QGIS-Processing/tree/master/rscripts).

Das Ziel dieser Übung ist die Erstellung eines zufälligen Punktlayers mit Hilfe der spsample Funktion aus dem sp Paket. Dabei soll die Ausdehnung über einen Eingabevektorlayer begrenzt werden.

Skript Parameter

Wie vorhin müssen wir zuerst einige Parameter oberhalb des Hauptteiles des Skriptes vorgeben:

  1. Geben Sie den Namen der Gruppe vor, in die das Skript soll. In diesem Fall ist das Point pattern analysis:

    ##Point pattern analysis=group
    
  2. Define an input parameter (a vector layer) that will constrain the placement of the random points:

    ##Layer=vector
    
  3. Geben Sie einen Eingabeparameter für die Anzahl der zu erzeugenden Punkte vor (Size, der Vorgabewert ist 10):

    ##Size=number 10
    

    Bemerkung

    Da ein Vorgabewert (10) vorhanden ist, kann der Nutzer den Parameter so belassen oder einen eigenen Wert eingeben.

  4. Geben Sie vor, dass ein Ausgabevektorlayer erzeugt wird (bezeichnet mit Output):

    ##Output=output vector
    

Hauptteil des Skripts

Sie können jetzt den Hauptteil der Funktion hinzufügen:

  1. Verwenden Sie die Funktion spsample:

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

    Die Funktion verwendet den Layer, um die Platzierung der Punkte zu beschränken (wenn der Layer eine Linie ist, müssen die Punkte auf der Linie liegen; wenn es ein Polygon ist, müssen die Punkte innerhalb des Polygons liegen). Die Anzahl der Punkt entspricht der Vorgabe im Parameter Size. Das Stichprobenverfahren ist random.

  2. Erstellen Sie die Ausgabe (der Parameter Output):

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

Das fertige Skript sollte wie folgt aussehen:

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

Speichern Sie es und klicken Sie auf die Schaltfläche zum Starten.

Geben Sie in dem neu geöffneten Fenster die richtigen Parameter ein:

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

und klicken Sie auf Starte.

Der Ergebnislayer wird im Inhaltsverzeichnis eingefügt und die Punkte werden im Kartenfenster angezeigt:

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

17.33.4. Textausgabe und grafische Ausgabe mit der R - Syntax

Die Verarbeitung (mit dem Processing R Provider plugin) nutzt eine spezielle Syntax, um die Ergebnisse aus R zu erhalten:

  • > vor einem Kommando, wie in >lillie.test(Layer[[Field]]) bedeutet, dass das Ergebnis an die R Ausgaeb gesendet wird (Ergebnisanzeige)

  • + nach einem Plot erlaubt sich überlagernde Plots. Zum Beispiel plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))