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 tillägget 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 från R-menyn (märkt med en R-ikon) högst upp i verktygslådan Processing. Du kan också skapa skriptet i t.ex. en textredigerare och spara det i din R-skriptmapp (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=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:
för Lager 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=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]]))