Module contributed by Matteo Ghetta - funded by 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.
Toevoegen van een script is erg eenvoudig. Open de Toolbox van Processing en klik eenvoudigweg op R ‣ Gereedschap ‣ Nieuw R script maken.
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.
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/.
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 waarin u uw script wilt plaatsen:
##plots=group
zo zult u uw script terugvinden in de groep plots in de Toolbox van Processing.
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.
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.
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.
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]])
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:
Gebruik anders, 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:
kies als Laag de sample points
vul het veld X met de parameter value
Klik op Run.
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:
Notitie
U kunt de afbeelding openen, kopiëren en opslaan door met rechts te klikken op het plot
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.
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, bijvoorbeeld Point pattern analysis:
##Point pattern analysis=group
stel de laag in die de willekeurige punten zal bevatten:
##Layer=vector
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
specificeer dat de uitvoer een vectorlaag is:
##Output= output vector
Nu kunt u de tekst van de functie toevoegen:
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
Schrijf de regel die de parameters voor de uitvoer bevat:
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 voor uitvoeren.
Typ in het nieuwe venster de juiste parameters in:
en klik op Run.
De resulterende punten zullen worden weergegeven in het kaartvenster
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]]))