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

17.31. Scripts van R gebruiken in Processing

Module bijgedragen door Matteo Ghetta - mogelijk gemaakt door Scuola Superiore Sant’Anna

Processing maakt het mogelijk scripts voor R te schrijven en uit te voeren binnen QGIS.

Waarschuwing

R moet zijn geïnstalleerd op uw computer en het PATH moet correct zijn ingesteld. Meer nog, Processing roept eenvoudigweg de externe pakketten van R aan, het is niet mogelijk ze te installeren. Zorg er dus voor de externe pakketten direct in R te installeren. Bekijk het gerelateerde :ref:`hoofdstuk in de gebruikershandleiding.

Notitie

Als u enkele problemen met pakketten heeft, is dat misschien gerelateerd aan ontbrekende voorgeschreven pakketten die zijn vereist door Processing, zoals sp, rgdal en raster.

17.31.1. Scripts toevoegen

Toevoegen van een script is erg eenvoudig. Open de Toolbox van Processing en klik eenvoudigweg op R ‣ Gereedschap ‣ Nieuw R script maken.

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

Notitie

Indien u R niet ziet in Processing, dient u het te activeren via Processing ‣ Opties ‣ Providers

Het opent een venster voor bewerken van scripts waarin u enkele parameters moet specificeren vóórdat u de tekst va het script kunt toevoegen.

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

17.31.2. Plots maken

In deze handleiding gaan we een boxplot maken van een veld van een vectorlaag.

Open het project van QGIS r_intro.qgs.

17.31.2.1. Parameters voor scripts

Open de bewerker en begin met het schrijven aan het begin ervan.

U moet enkele parameters specificeren vóór de tekst van het script:

  1. de naam van de groep waarin u uw script wilt plaatsen:

    ##plots=group
    

    zo zult u uw script terugvinden in de groep plots in de Toolbox van Processing.

  2. u moet Processing vertellen dat u een plot wilt weergeven (slechts voor dit voorbeeld):

    ##showplots
    

    op deze manier zult het plot zien in de Resultaten viewer van Processing.

  3. U dient Processing ook te vertellen met welke soort gegevens u werkt. In dit voorbeeld willen we een plot maken uit een veld van een vectorlaag:

    ##Layer=vector
    

    Processing weet nu dat de invoer een vector is. De naam Laag is niet belangrijk, wat van belang is is de parameter vector.

  4. Tenslotte moet u het invoerveld van de vectorlaag specificeren die u wilt plotten:

    ##X=Field Layer
    

    Zo weet Processing dat u X de Veldlaag heeft genoemd.

17.31.2.2. Tekst van het script

Nu u de kop van het script heeft ingesteld kunt u de functie toevoegen:

boxplot(Layer[[X]])

Onthoud dat boxplot de naam van de functie van R zelf is die Laag aanroept als gegevensset en X als veld voor de gegevensset.

Waarschuwing

De parameter X staat binnen dubbele vierkante haken [[]]

Het uiteindelijke script ziet er als volgt uit:

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

Sla het script op in het standaard pad dat wordt voorgesteld door Processing. De naam die u kiest zal hetzelfde zijn als de naam van het script dat u terugvindt in de Toolbox van Processing.

Notitie

U kunt het script opslaan in ene ander pad, maar Processing is dan niet in staat om ze automatisch te uploaden en dient u alle scripts handmatig te uploaden.

Voer het nu eenvoudigweg uit met behulp van de knop aan de bovenzijde van het venster van de bewerker:

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

Gebruik anders, als het venster van de bewerker eenmaal is gesloten, het tekstvak van Processing om uw script te zoeken:

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

U kunt nu de vereiste parameters invoeren in het venster Algoritme van Processing:

  • kies als Laag de sample points

  • vul het veld X met de parameter value

Klik op Run.

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

Het venster Resultaten zou automatisch moeten worden geopend, indien niet, klik eenvoudigweg op Processing ‣ Resultaten bekijken....

Dit is het uiteindelijke resultaat dat u zult zien:

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

Notitie

U kunt de afbeelding openen, kopiëren en opslaan door met rechts te klikken op het plot

17.31.3. Een vector maken

Met een script in R kunt u ook een vector maken en die automatisch laden in QGIS.

Het volgende voorbeeld komt uit het script Random sampling grid dat u kunt downloaden vanuit de verzameling online R ‣ Tools ‣ Download R scripts from the on-line collection.

Het doel van deze oefening om een willekeurige puntvector in een laagbereik te maken met behulp van de functie spsample van het pakket sp.

17.31.3.1. Parameters voor scripts

Net als eerder moeten we, vóór de tekst van het script, enkele parameters instellen:

  1. specificeer de naam van de groep waarin u uw script wilt opslaan, bijvoorbeeld Point pattern analysis:

    ##Point pattern analysis=group
    
  2. stel de laag in die de willekeurige punten zal bevatten:

    ##Layer=vector
    
  3. stel het aantal punten in dat moet worden gemaakt:

    ##Size=number 10
    

    Notitie

    10 zal de standaard waarde zijn. U kunt dit getal wijzigen of u kunt de parameter zonder standaard nummer laten

  4. specificeer dat de uitvoer een vectorlaag is:

    ##Output= output vector
    

17.31.3.2. Tekst van het script

Nu kunt u de tekst van de functie toevoegen:

  1. voer de functie spsample uit:

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

    op deze manier neemt de functie het bereik van de Layer, het aantal punten wordt genomen uit de parameter Size en het te genereren type punt is random

  2. Schrijf de regel die de parameters voor de uitvoer bevat:

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

Het uiteindelijke script zou er als volgt uit moeten zien:

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

Sla het op en voer het uit door te klikken op de knop voor uitvoeren.

Typ in het nieuwe venster de juiste parameters in:

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

en klik op Run.

De resulterende punten zullen worden weergegeven in het kaartvenster

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

17.31.4. R - Processing syntaxis

Onthoud dat Processing soms speciale syntaxis gebruikt om de resultaten uit R te verkrijgen:

  • > vóór uw opdracht, zoals in >lillie.test(Layer[[Field]]) betekent dat het resultaat moet worden verzonden naar uitvoer voor R (Resultaten bekijken)

  • + na een plot om overliggende plots aan te roepen. Bijvoorbeeld plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))