Importante
A tradução é um esforço comunitário você pode contribuir. Esta página está atualmente traduzida em 97.73%.
26.2. Apêndice D: sintaxe de script QGIS R
Contributed by Matteo Ghetta - funded by Scuola Superiore Sant’Anna
Escrever scripts R scripts em Processamento é um pouco complicado em função da sintaxe específica.
Um script de Processamento R começa com a definição de suas Entradas e Saídas, cada uma precedida de caracteres tralha duplos (##).
Before the inputs, the group to place the algorithm in can be specified. If the group already exists, the algorithm will be added to it, if not, the group will be created. In the example below, the name of the group is My group:
##My Group=group
26.2.1. Entradas
Todos os dados de entrada e parâmetros devem ser especificados. Existem vários tipos de entradas:
vetor:
##Camada = vetorcampo vetorial: ##F = Camada de campo (onde Layer é o nome de uma camada vetorial de entrada à qual o campo pertence)
raster:
##r = rastertabela:
##t = tabelanúmero:
##Num = númerostring:
##Str = stringBooleano: ##Bol = booleano
elementos em um menu dropdown. Os items devem ser separados com ponto e vírgula
;:##tipo=pontos;linhas;pontos+linhas
26.2.2. Saídas
Quanto às entradas, cada saída tem de ser definida no início do script:
vetor:
##saída= vetor de saídaraster:
##saída= saída rastertabela:
##saída= tabela de saídagráfico:
##saída_gráfico_para_html(##showplots em versões anteriores)Para mostrar a saída do R no Visualizador de Resultados, coloque
>na frente do comando cuja saída você gostaria de mostrar.
26.2.3. Sumário de Sintaxe para scripts QGIS R
Vários tipos de parâmetros de entrada e saída são oferecidos.
26.2.3.1. Tipos de parâmetros de entrada
Parâmetros |
Exemplo de sintaxe |
Retornando objetos |
|---|---|---|
vetor |
Camada = vetor |
sf objeto (ou objeto ObjetoDeQuadroDeDadosEspaciais, se ##carrega_vetor_usando_rgdal for especificado) |
vetor de pontos |
Camada = vetor de pontos |
sf objeto (ou objeto ObjetoDeQuadroDeDadosEspaciais, se ##carrega_vetor_usando_rgdal for especificado) |
vetor de linha |
Camada = vetor de linha |
sf objeto (ou objeto ObjetoDeQuadroDeDadosEspaciais, se ##carrega_vetor_usando_rgdal for especificado) |
vetor de poligono |
Camada = polígono de vetor |
objeto sf (ou EspacialPolígonosQuadroDeDados objeto, se ##carrega_vetor_usando_rgdal é usado) |
vetores multiplos |
Camada = vetores múltiplos |
objeto sf (ou QuadroDeDadosEspaciais objetos se ##carrega_vetor_usando_rgdal for especificado) |
Tabela |
Camada = tabela |
quadro de conversão de csv, objeto padrão da função “read.csv” |
campo |
Campo = Camada Campo |
nome do campo selecionado, e.g. “Area” |
raster |
Camada = imagem |
Objeto RasterBrick, padrão do pacote de objetos “raster” |
múltiplas imagens |
Camada = Múltiplas imagens |
Objeto RasterBrick, padrão do pacote de objetos “raster” |
número |
N = número |
número escolhido inteiro ou flutuante |
texto |
S = texto |
texto adicionado na caixa |
texto longo |
LS= texto longo |
texto adicionado na caixa, pode ser maior que o texto normal |
seleção |
S = primeira seleção; segunda; terceira |
texto do item selecionado escolhido no menu suspenso. |
crs |
C = crs |
string do SRC resultante escolhido, no formato: |
Extensão |
E = extensão |
Extensão do pacote de objeto “raster”, você pode extrair valores como “E@xmin” |
ponto |
P = ponto |
Quando clicado no mapa, você terá as coordenadas do ponto |
arquivo |
F = file |
caminho do arquivo escolhido, e.g “/home/matteo/file.txt” |
folder |
F = pasta |
caminho do arquivo escolhido, e.g “/home/matteo/Downloads” |
Um parâmetro poder ser OPCIONAL, o que significa que pode ser ignorado.
Para definir uma entrada como opcional, adicione a string opcional antes da entrada, como por exemplo:
##Layer = vector
##Field1 = Field Layer
##Field2 = optional Field Layer
26.2.3.2. Tipos de parâmetros de saída
Parâmetros |
Exemplo de sintaxe |
|---|---|
vetor |
Saída = vetor de saída |
raster |
Saída = imagem de saída |
Tabela |
Saída = tabela de saída |
arquivo |
Saída = arquivo de saída |
Nota
Você pode salvar gráficos como png do Visualizador de Resultado em Processamento, ou salvar o gráfico diretamente da interface do algoritmo.
26.2.3.3. Cuerpo de lineas de codigo
O corpo do script segue a sintaxe R e o painel Log pode ajudar se houver algo errado com o seu script
Lembre que você precisa carregar todas as bibliotecas adicionais no script:
library(sp)
26.2.4. Exemplos
26.2.4.1. Exemplo com saída em vetor
Vamos pegar um algoritmo da coleção online que cria pontos aleatórios a partir da extensão de uma camada de entrada:
##Point pattern analysis=group
##Layer=vector polygon
##Size=number 10
##Output=output vector
library(sp)
spatpoly = as(Layer, "Spatial")
pts=spsample(spatpoly,Size,type="random")
spdf=SpatialPointsDataFrame(pts, as.data.frame(pts))
Output=st_as_sf(spdf)
Explicação (por linha no script):
Análise de padrão pontualé o grupo do algoritmoCamadaé a camada de entrada vetorialTamanhoé um parâmetro numérico com um valor padrão de 10Saídaé a camada vetorial que será criada pelo algoritmolibrary(sp)loads the sp libraryspatpoly = como (Camada , “Espacial”)`` traduz para um objeto sp
Chame a função
spamostrada bibliotecaspe execute-a usando a entrada definida acima (Camadae ``Tamanho`)Crie um *EspacialPontosQuadroDeDados” usando o objeto
EspacialPontosQuadroDeDadosfunçãoCrie a camada vetorial de saída usando a função
st_as_sf
É isso! Agora você só precisa rodar o algoritmo com uma camada vetorial que você tenha na Legenda QGIS, escolhendo o número de ponto aleatório. A camada resultante será adicionada ao seu mapa.
26.2.4.2. Exemplo com saída raster
O script a seguir executará krigagem ordinária básica para criar um mapa raster de valores interpolados de um campo especificado da camada vetorial de ponto de entrada usando a função autoKrige do pacote R automap. Ele primeiro calculará o modelo de krigagem e, em seguida, criará um raster. O raster é criado com a função raster do pacote raster R:
##Basic statistics=group
##Layer=vector point
##Field=Field Layer
##Output=output raster
##load_vector_using_rgdal
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
Usando ##carregar_vetor_usando_rgdal, a camada vetorial de entrada será disponibilizada como um EspacialQuadroDeDados, então evitamos ter que traduzi-lo de um objeto sf.
26.2.4.3. Exemplo com saída em tabela
Vamos editar o algoritmo do Sumário de Estatísticas para que a saída seja um arquivo de dados em tabela (csv).
O corpo do script é o seguinte:
##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
A terceira linha especifica o Campo vetorial na entrada e a quarta linha informa ao algoritmo que a saída deve ser uma tabela.
A última linha pegará o objeto Stat criado no script e o converterá em uma tabela csv.
26.2.4.4. Exemplo com saída do console
Você pode usar o exemplo anterior e ao invés de criar uma tabela, pode imprimir o resultado no Visualizador de Resultado:
##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
O script é exatamente o mesmo que foi usado acima exceto por duas edições:
nenhuma saída especificada (a quarta linha foi removida)
a última linha começa com
>, informando ao Processamento que deve deixar o objeto disponível no visualizador de resultado
26.2.4.5. Exemplo com gráfico
Para criar plotagens, você deve usar o parâmetro ##saída_impressão_para_html como no script a seguir:
##Basic statistics=group
##Layer=vector
##Field=Field Layer
##output_plots_to_html
####output_plots_to_html
qqnorm(Layer[[Field]])
qqline(Layer[[Field]])
O roteiro usa um campo (Campo) de uma camada vetorial (Camada) como entrada e cria um QQ Plot (para testar a normalidade da distribuição).
O gráfico é adicionado automaticamente ao Processando Visualizador de Resultados.