Outdated version of the documentation. Find the latest one here.

18.34. Sintaxa R din script-urile Processing

Module contributed by Matteo Ghetta - funded by Scuola Superiore Sant’Anna

Scrierea script-urilor R în Processing ar putea fi destul de dificilă, din cauza sintaxei care trebuie să fie adoptată.

Fiecare script începe cu Input și Output precedată de ##.

18.34.1. Intrări

Înainte de a specifica intrările puteți seta, de asemenea, grupul de algoritmi în care va fi pus script-ul. Dacă grupul există deja, algoritmul va fi adăugat la acela, altfel, un nou grup va fi creat automat:

  1. crearea grupului, ##My Group=group

Then you have to specify all the input types and eventually the additional parameters. You can have different inputs:

  1. vector, ##Layer = vector
  2. vector Field, ##F = Field Layer (unde Layer este numele stratului de intrare)

  3. raster, ##r = raster
  4. table, ##t = table
  5. number, ##Num = number
  6. string, ##Str = string
  7. boolean, ##Bol = boolean

you can also have a dropdown menu with all the parameters you want; the items must be separated with semicolons ;:

  1. ##type=selection point;lines;point+lines

18.34.2. Rezultate

Ca și intrările, fiecare ieșire trebuie să fie definită la începutul script-ului:

  1. vector, ##output= output vector
  2. raster, ##output= output raster
  3. table, ##output= output table
  4. plots, ##showplots
  5. R generează rezultatele în Vizualizatorul de Rezultate, de aceea doar puneți în interiorul script-ului, > înainte de ieșirea pe care doriți să o afișați

18.34.3. Conținutul script-ului

Script-ul urmează sintaxa stilului R, iar panoul Jurnalului vă poate ajuta în cazul în care ceva nu a mers bine.

Rețineți că în cadrul script-ului trebuie să încărcați toate bibliotecile suplimentare:

library(sp)

18.34.3.1. Exemplu de ieșire vectorială

Let’s take an algorithm from the online collection that creates random points from the extent of an input layer:

##Point pattern analysis=group
##Layer=vector
##Size=number 10
##Output= output vector
library(sp)
pts=spsample(Layer,Size,type="random")
Output=SpatialPointsDataFrame(pts, as.data.frame(pts))

și să parcurgem liniile:

  1. Analiza modelului de puncte reprezintă grupul algoritmului

  2. Stratul reprezintă stratul de intrare vectorial

  3. Dimensiunea reprezintă parametrul numeric, cu o valoare prestabilită de 10

  4. Ieșire reprezintă stratul vectorial care va fi creat de către algoritm

  5. library(sp) încarcă biblioteca sp (care ar trebui să fie deja instalată în computerul dvs., iar acea instalare ar trebui făcută în R)

  6. call the spsample function of the sp library and pass it to all the input defined above
  7. creați vectorul de ieșire, cu ajutorul funcției SpatialPointsDataFrame

Asta-i tot! Trebuie doar să rulați algoritmul asupra unui strat vectorial pe care îl aveți în Legenda QGIS, să alegeți un număr aleatoriu de puncte, apoi le veți obține pe canevasul QGIS.

18.34.3.2. Exemplu de ieșire raster

Următorul script va efectua un kriging obișnuit, de bază, și va crea o hartă raster a valorilor interpolate:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##Output=output raster
require("automap")
require("sp")
require("raster")
table=as.data.frame(Layer)
coordinates(table)= ~coords.x1+coords.x2
c = Layer[[Field]]
kriging_result = autoKrige(c~1, table)
prediction = raster(kriging_result$krige_output)
Output<-prediction

dintr-un vector și câmpul său de intrare, algoritmul va folosi funcția autoKrige a pachetului automap R, va calcula mai întâi modelul kriging și apoi va crea un raster.

Rasterul este creat cu ajutorul funcției raster, a pachetului raster din R.

18.34.3.3. Exemplu de generare a unui tabel

Let’s edit the Summary Statistics algorithm so that the output is a table file (csv).

The script body is the following:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##Stat=Output table
Summary_statistics<-data.frame(rbind(
sum(Layer[[Field]]),
length(Layer[[Field]]),
length(unique(Layer[[Field]])),
min(Layer[[Field]]),
max(Layer[[Field]]),
max(Layer[[Field]])-min(Layer[[Field]]),
mean(Layer[[Field]]),
median(Layer[[Field]]),
sd(Layer[[Field]])),row.names=c("Sum:","Count:","Unique values:","Minimum value:","Maximum value:","Range:","Mean value:","Median value:","Standard deviation:"))
colnames(Summary_statistics)<-c(Field)
Stat<-Summary_statistics

The third line specifies the Vector Field in input and the fourth line tells the algorithm that the output should be a table.

The last line will take the Stat object created in the script and convert it into a csv table.

18.34.3.4. Example with console output

We can take the previous example and instead of creating a table, print the result in the Result Viewer:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
Summary_statistics<-data.frame(rbind(
sum(Layer[[Field]]),
length(Layer[[Field]]),
length(unique(Layer[[Field]])),
min(Layer[[Field]]),
max(Layer[[Field]]),
max(Layer[[Field]])-min(Layer[[Field]]),
mean(Layer[[Field]]),
median(Layer[[Field]]),
sd(Layer[[Field]])),row.names=c("Sum:","Count:","Unique values:","Minimum value:","Maximum value:","Range:","Mean value:","Median value:","Standard deviation:"))
colnames(Summary_statistics)<-c(Field)
>Summary_statistics

The script is exactly the same of above with just 2 edits:

  1. no more output specified (the fourth line has been removed)
  2. ultima linie începe cu >, care transmite către Processing comanda de imprimare a obiectului din fereastra rezultatelor

18.34.3.5. Exemplu de grafic

Creating plots is very simple. You have to use the ##showplots parameter as the following script shows:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##showplots
qqnorm(Layer[[Field]])
qqline(Layer[[Field]])

script-ul folosește ca intrare un câmp dintr-un strat vectorial și creează un Grafic QQ pentru a testa normalitatea distribuției.

The plot is automatically added to the Result Viewer of Processing.