Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
17.33. Använda R-skript i Processing
Modulen har skapats av Matteo Ghetta - finansierad av Scuola Superiore Sant’Anna
Processing (med insticksprogrammet Processing R Provider
) gör det möjligt att skriva och köra R-skript i 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
Att lägga till ett skript är enkelt. Det enklaste sättet är att öppna verktygslådan Processing och välja processing/rscripts
). När det har sparats där kommer det att vara tillgängligt för redigering genom att högerklicka på skriptnamnet i verktygslådan för bearbetning och sedan välja ).

Observera
Om du inte kan se R i Processing måste du aktivera det i
Det öppnar ett skriptredigeringsfönster där du måste ange några parametrar innan du kan lägga till skriptdelen.

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=group
Du 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):
##showplots
Du 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=vector
Processing 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 Layer
Processing 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=name
Om 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:
för Layer välj sample_points
för fältet X välj värde
Klicka på Kör.

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=group
Definiera en inmatningsparameter (ett vektorlager) som begränsar placeringen av de slumpmässiga punkterna:
##Layer=vector
Ange en inmatningsparameter för antalet punkter som ska skapas (
Size
, med ett standardvärde på10
):##Size=number 10
Observera
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 Layer 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 Size. 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 plugin-programmet 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]]))