18.33. Scripts van R gebruiken in Processing¶
Module bijgedragen door Matteo Ghetta - mogelijk gemaakt door Scuola Superiore Sant’Anna
Processing (met de plug-in Processing R Provider
) 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 kan ze niet installeren. Zorg er dus voor de externe pakketten direct in R te installeren. Bekijk het gerelateerde hoofdstuk in de gebruikershandleiding.
Notitie
Als u problemen met pakketten heeft, zijn die misschien gerelateerd aan ontbrekende voorgeschreven pakketten die zijn vereist door Processing, zoals sp
, rgdal
en raster
.
18.33.1. Scripts toevoegen¶
Toevoegen van een script is eenvoudig. De gemakkelijkste manier is om de Toolbox van Processing te openen en te kiezen voor processing/rscripts
). Als het daar werd opgeslagen, zal het beschikbaar zijn voor bewerken door met rechts te klikken op de naam van het script in de Toolbox van Processing en dan te kiezen ).
Notitie
Indien u R niet ziet in Processing, dient u het te activeren via
Het opent een venster voor bewerken van scripts waarin u enkele parameters moet specificeren vóórdat u de tekst va het script kunt toevoegen.
18.33.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
in de map exercise_data/processing/r_intro/
.
18.33.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:
De naam van de groep (plots in dit geval) waarin u uw script wilt plaatsen (als de groep niet bestaat, zal die worden gemaakt):
##plots=group
U zult uw script terugvinden in de R groep plots in de Toolbox van Processing.
U moet Processing vertellen dat u een plot wilt weergeven (voor dit voorbeeld):
##showplots
U zult dan een koppeling vinden naar het plot in het paneel Resultaten bekijken (kan worden in- / uitgeschakeld in
en met ).U dient Processing ook over uw invoergegevens te vertellen. 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.
Tenslotte moet u het invoerveld van de vectorlaag specificeren (gebruik de naam die u hierboven opgaf - Laag):
##X=Field Layer
Processing weet nu dat u een veld Laag nodig hebt, en dat u het X wilt noemen.
Het is ook mogelijk de naam van uw script te definiëren met
name
:##My box plot script=name
Indien niet gedefinieerd zal de naam van het bestand worden gebruikt als de naam van het script.
18.33.2.2. Tekst van het script¶
Nu u de kop van het script heeft ingesteld kunt u de functie toevoegen:
boxplot(Layer[[X]])
boxplot is de naam van de functie van R, de parameter Laag is de naam die u hebt gedefinieerd voor de gegevensset voor de invoer en X is de naam die u hebt gedefinieerd voor het veld van die gegevensset.
Waarschuwing
De parameter X moet binnen dubbele vierkante haken staan ([[]]
).
Het uiteindelijke script ziet er als volgt uit:
##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
Sla het script op in het standaard pad dat wordt voorgesteld door Processing (processing/rscripts). Als u geen name
hebt gedefinieerd in de kop van het script, zal de bestandsnaam die u kiest de naam van het script worden in de Toolbox van Processing.
Notitie
U kunt het script opslaan in waar u maar wilt, maar Processing is dan niet in staat om ze automatisch op te nemen in de Toolbox van Processing, dus dient u het handmatig te uploaden.
Voer het nu eenvoudigweg uit met behulp van de knop aan de bovenzijde van het venster van de bewerker:
Gebruik, als het venster van de bewerker eenmaal is gesloten, het tekstvak van Processing om uw script te zoeken:
U kunt nu de vereiste parameters invoeren in het venster Algoritme van Processing:
voor Laag kies sample_points
voor het veld X kies value
Klik op Run.
Het venster Resultaten zou automatisch moeten worden geopend, indien niet, klik eenvoudigweg op
.Klik op de koppeling in Resultaten bekijken en u zult zien:
Notitie
U kunt de afbeelding openen, kopiëren en opslaan door met rechts te klikken op het plot.
18.33.3. Een vector maken¶
U kunt ook een vectorlaag 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 (de scripts in de online collectie zijn te vinden op https://github.com/qgis/QGIS-Processing/tree/master/rscripts).
Het doel van deze oefening is om een willekeurige punten vectorlaag te maken met een invoer vectorlaag om het bereik te beperken met behulp van de functie spsample
van het pakket sp
.
18.33.3.1. Parameters voor scripts¶
Net als eerder moeten we, vóór de tekst van het script, enkele parameters instellen:
Specificeer de naam van de groep waarin u uw script wilt opslaan, in dit geval Point pattern analysis:
##Point pattern analysis=group
Definieer een parameter voor de invoer (een vectorlaag) die de plaatsing van de willekeurige punten zal beperken:
##Layer=vector
Stel een invoerparameter in voor het aantal punten dat moet worden gemaakt (
Size
, met een standaardwaarde10
):##Size=number 10
Notitie
Omdat een standaardwaarde (
10
) is gedefinieerd, kan de gebruiker dit aantal wijzigen of de parameter zonder een getal kan laten.Specificeer dat er een uitvoer vectorlaag is (genaamd
Output
):##Output=output vector
18.33.3.2. Tekst van het script¶
Nu kunt u de tekst van de functie toevoegen:
Gebruik de functie
spsample
:pts=spsample(Layer, Size, type="random")
De functie gebruikt de Laag om de plaatsing van de punten te beperken (als het een lijnlaag is, moet een punt op een van de lijnen in de laag liggen, als het een polygoonlaag is, moet ene punt binnen een polygoon liggen). Het aantal punten wordt genomen uit de parameter Size. De methode van samplen is willekeurig.
Genereer de uitvoer (de parameter
Output
):Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
Het uiteindelijke script ziet er als volgt uit:
##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))
Sla het op en voer het uit door te klikken op de knop Script uitvoeren.
Typ in het nieuwe venster de juiste parameters in:
en klik op Run.
De laag met resultaten zal worden toegevoegd aan de inhoudsopgave en de punten ervan zullen worden weergegeven in het kaartvenster:
18.33.4. Tekst en grafische uitvoer vanuit R - syntaxis¶
Processing (met de plug-in Processing R Provider
) gebruikt speciale syntaxis 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 schakelt overliggende plots in. Bijvoorbeeldplot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))