Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 91.04%.
17.33. Använda R-skript i Processing
Modulen har skapats av Matteo Ghetta - finansierad av Scuola Superiore Sant’Anna
Processing (with the Processing R Provider plugin) makes it possible to write and run R scripts inside QGIS.
Varning
R måste vara installerat på din dator och PATH måste vara korrekt inställt. Dessutom anropar Processing bara de externa R-paketen, det kan inte installera dem. Se därför till att installera externa paket direkt i R. Se relaterad kapitel i användarhandboken.
Observera
Om du har problem med paket kan det bero på att du saknar obligatoriska paket som krävs av Processing, t.ex. sp, rgdal och raster.
17.33.1. Lägga till skript
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…).
Observera
Om du inte kan se R i Processing måste du aktivera det i
It opens a R Script Editor in which you have to specify some parameters before you can add the script body.
17.33.2. Skapa tomter
I den här handledningen ska vi skapa en boxplot av ett vektorlagerfält.
Öppna QGIS-projektet r_intro.qgs under mappen exercise_data/processing/r_intro/.
Parametrar för skript
Öppna redigeringsprogrammet och börja skriva i början av det.
Du måste ange vissa parametrar före skriptets huvuddel:
Namnet på den grupp (plots i detta fall) där du vill placera ditt skript (om gruppen inte finns kommer den att skapas):
##plots=groupDu hittar ditt skript i R-gruppen plots i verktygslådan Processing.
Du måste tala om för Processing att du vill visa ett diagram (i det här exemplet):
##showplotsDu hittar sedan en länk till diagrammet i Result Viewer-panelen (kan slås på / av i och med ).
Du måste också berätta för Processing om dina indata. I det här exemplet vill vi skapa en plott från ett fält i ett vektorlager:
##Layer=vectorProcessing vet nu att indata är en vektor. Namnet Layer är inte viktigt, det som betyder något är parametern vector.
Slutligen måste du ange indatafältet för vektorlagret (med det namn du angav ovan - Lager):
##X=Field LayerProcessing vet nu att du behöver ett fält av typen Layer och att du ska kalla det X.
Det är också möjligt att definiera namnet på ditt skript med hjälp av
name:##My box plot script=nameOm det inte definieras kommer filnamnet att användas som namn på skriptet.
Skriptets kropp
Nu när du har skapat huvudet i skriptet kan du lägga till funktionen:
boxplot(Layer[[X]])
boxplot är namnet på R-funktionen, parametern Layer är det namn som du har definierat för indatadatasetet och X är det namn som du har definierat för fältet i det datasetet.
Varning
Parametern X måste stå inom dubbla hakparenteser ([[]]).
Det slutliga skriptet ser ut så här:
##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
Spara skriptet i den standardsökväg som föreslås av Processing (processing/rscripts). Om du inte har definierat ett namn i skriptets rubrik kommer det filnamn du väljer att bli namnet på skriptet i verktygslådan Processing.
Observera
Du kan spara skriptet var du vill, men Processing kommer då inte att kunna inkludera det i verktygslådan för bearbetning automatiskt, så du måste ladda upp det manuellt.
Nu är det bara att köra den med hjälp av knappen längst upp i redigeringsfönstret:
När redigeringsfönstret har stängts kan du använda textrutan i Processing för att hitta ditt skript:
Du kan nu fylla i de parametrar som krävs i fönstret Processing algorithm:
for Layer choose
sample_pointsfor the X field choose
value
Click on Run.
Fönstret Result bör öppnas automatiskt, om inte, klicka bara på .
Klicka på länken i visaren så kommer du att se:
Observera
Du kan öppna, kopiera och spara bilden genom att högerklicka på plotten.
17.33.3. Skapa en vektor
Du kan också skapa ett vektorlager och få det automatiskt inläst i QGIS.
Följande exempel har hämtats från skriptet Random sampling grid som finns i online-samlingen av R-skript (skripten i denna online-samling finns på https://github.com/qgis/QGIS-Processing/tree/master/rscripts).
Syftet med denna övning är att skapa ett slumpmässigt punktvektorlager med hjälp av ett ingångsvektorlager för att begränsa omfattningen med hjälp av funktionen spsample i paketet sp.
Parametrar för skript
Som tidigare måste vi ställa in några parametrar innan skriptet börjar:
Ange namnet på den grupp där du vill placera ditt skript, i det här fallet Point pattern analysis:
##Point pattern analysis=groupDefiniera en inmatningsparameter (ett vektorlager) som begränsar placeringen av de slumpmässiga punkterna:
##Layer=vectorAnge en inmatningsparameter för antalet punkter som ska skapas (
Size, med ett standardvärde på10):##Size=number 10Observera
Eftersom ett standardvärde (
10) har definierats kan användaren ändra detta tal eller lämna parametern utan tal.Ange att det finns ett utmatningsvektorlager (kallat
Output):##Output=output vector
Skriptets kropp
Nu kan du lägga till funktionens huvuddel:
Använd funktionen
spsample:pts=spsample(Layer, Size, type="random")
Funktionen använder Lager för att begränsa punkternas placering (om det är ett linjelager måste en punkt ligga på en av linjerna i lagret, om det är ett polygonlager måste en punkt ligga inom en polygon). Antalet punkter hämtas från parametern Storlek. Provtagningsmetoden är slumpmässig.
Generera utdata (parametern
Output):Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
Det slutliga skriptet ser ut så här:
##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))
Spara den och kör den genom att klicka på körknappen.
I det nya fönstret skriver du in rätt parametrar:
och klicka på Kör.
Resultatlagret läggs till i innehållsförteckningen och dess punkter visas på kartbilden:
17.33.4. Text- och grafutmatning från R - syntax
Processing (med tillägget Processing R Provider) använder speciell syntax för att få ut resultaten från R:
>före ditt kommando, som i>lillie.test(Layer[[Field]])betyder att resultatet ska skickas till R-utdata (Result viewer)+efter en plott aktiverar överlagrade plottar. Till exempelplot(Lager[[X]], Lager[[Y]]) + abline(h=medelvärde(Lager[[X]]))