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 ##.
Î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:
crearea grupului, ##My Group=group
Then you have to specify all the input types and eventually the additional parameters. You can have different inputs:
vector Field, ##F = Field Layer (unde Layer este numele stratului de intrare)
you can also have a dropdown menu with all the parameters you want; the items must be separated with semicolons ;:
Ca și intrările, fiecare ieșire trebuie să fie definită la începutul script-ului:
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
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)
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:
Analiza modelului de puncte reprezintă grupul algoritmului
Stratul reprezintă stratul de intrare vectorial
Dimensiunea reprezintă parametrul numeric, cu o valoare prestabilită de 10
Ieșire reprezintă stratul vectorial care va fi creat de către algoritm
library(sp) încarcă biblioteca sp (care ar trebui să fie deja instalată în computerul dvs., iar acea instalare ar trebui făcută în R)
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.
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.
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.
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:
ultima linie începe cu >, care transmite către Processing comanda de imprimare a obiectului din fereastra rezultatelor
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.