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 = vetor

  • campo vetorial: ##F = Camada de campo (onde Layer é o nome de uma camada vetorial de entrada à qual o campo pertence)

  • raster: ##r = raster

  • tabela: ##t = tabela

  • número: ##Num = número

  • string: ##Str = string

  • Booleano: ##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ída

  • raster: ##saída= saída raster

  • tabela: ##saída= tabela de saída

  • grá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: "EPSG: 4326"

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):

  1. Análise de padrão pontual é o grupo do algoritmo

  2. Camada é a camada de entrada vetorial

  3. Tamanho é um parâmetro numérico com um valor padrão de 10

  4. Saída é a camada vetorial que será criada pelo algoritmo

  5. library(sp) loads the sp library

  6. spatpoly = como (Camada , “Espacial”)`` traduz para um objeto sp

  7. Chame a função spamostra da biblioteca sp e execute-a usando a entrada definida acima (Camada e ``Tamanho`)

  8. Crie um *EspacialPontosQuadroDeDados” usando o objeto EspacialPontosQuadroDeDados função

  9. Crie 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:

  1. nenhuma saída especificada (a quarta linha foi removida)

  2. 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.