17.31. Usar linhas do código R em Processamento

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

Processamento lhe permite escrever e rodar linhas do código no QGIS.

Aviso

R has to be installed on your computer and the PATH has to correctly set up. Moreover Processing just calls the external R packages, it is not able to install them. So be sure to install external packages directly in R. See the related chapter in the user manual.

Nota

Si tienes un problema con “paquetes”, quizás esta relacionado con paquetes “obligatorios” que faltan y que requiere Processing como sp, rgdal y``raster``.

17.31.1. Adicionar linhas de código

Agregar una linea de codigo es muy facil. Abrir la caja de herramientas de Processing y hacer click en R ‣ Tools ‣ Create new R script.

../../../_images/r_intro_1.png

Nota

Si no puedes ver R en Processinf, tienes que activarlo en Processing ‣ Options ‣ Providers

Abre una “ventana de edicion de lineas de codigo” en el cual tienes que especificar algunos parametros antes de agregar el codigo.

../../../_images/r_intro_2.png

17.31.2. Criar parcelas

En este tutorial vamos a crear una “caja de parcelas” de un campo de capas vectoreales.

Open the r_intro.qgs QGIS project.

17.31.2.1. Parametros de linea de codigo

Abrir el editor y comenzar a escribir al inicio.

“Tienes” que especofocar algunso parametros “antes” del cuerpo de codigo de lineas;

  1. el nombre del grupo en el cual quieres poner tus lineas de codigo;

    ##plots=group
    

    para que puedas encontrar las lineas de codigo en las “parcelas” agrupar en la caja de herramientas de Processing.

  2. tienes que decirle a Processing que quieres mostrar una parcela (esto solo es un ejemplo):

    ##showplots
    

    de esta manera en “la visualizacion de resultados” de Processing puedes ver la parcela.

  3. Tienes que decirle a Processing que tipo de datos esta trabajando. En este ejemplo queremos que haga una parcela de un campo parte de una capa vectorial.

    ##Layer=vector
    

    Processing sabe ahora que el input es un vector. El nombre “Layer” no es importante, lo que importa es el parámetro del “vector”

  4. Finalmente, tienes que especificar el campo del input del vector que quieres digitalizar:

    ##X=Field Layer
    

    Processing sabe cuando llamas “X” la “capa de campo”

17.31.2.2. Cuerpo de lineas de codigo

Ahora que tienes la “cabecera” de las lineas de codigo puedes agregar las funciones;

boxplot(Layer[[X]])

Note que “boxplot” es el nombre de la función de R que llama “capas” como grupos de datos y “X” como el campo de los grupos de datos.

Aviso

El parametro “”X”” esta estrito dentro de soporte de doble cuadrado [[]]

El codigo final se ve asi:

##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
../../../_images/r_intro_3.png

Guarde el código por defecto con la ubicación de Processing. El nombre que eliges va a ser el mismo que el nombre de la linea de código que se encuentra el la caja de herramientas de Processing.

Nota

Puedes ver las lineas de código en otras ubicaciones, pero Processing no puede subirlos automáticamente y tienes que subir las lineas de código manualmente.

Ahora puedes correrlo usando el botón en la parte superior de la ventana de edición:

../../../_images/r_intro_4.png

Si no, una vez que la ventana de edicion ha cerrado, use la caja de ehrramientas de Processing para encontrar tu codigo:

../../../_images/r_intro_5.png

Ahora puedes llenar los parametros requeridos en la ventana de algoritmos de Processing:

  • como “Capa” eliges la “muestra de puntos” uno

  • llenar el campo “X” con el parametro del “Valor”

Elegir “Run”

../../../_images/r_intro_6.png

La “Ventana de Resultados” se debe abrir automaticamente, si no, solo hacer click en Processing ‣ Result Viewer....

Este es el resultado final que vas a ver:

../../../_images/r_intro_7.png

Nota

Puedes abrir, copiar y guardar la imagen al hacer click en la parcela

17.31.3. Crear un vector

Con los códigos de R puedes crear vectores y automáticamente subirlo a QGIS.

El siguiente ejemplo se tomo del código “Cuadro de Muestras Al Azar” que se puede descargar de la coleccion en linea R ‣ Tools ‣ Download R scripts from the on-line collection.

The aim of this exercise is to create a random point vector in a layer extent using the spsample function of the sp package.

17.31.3.1. Parametros de linea de codigo

Igual que aneriormente hay que poner parametros antes del cuerpo del codigo:

  1. specify the name of the group in which you want to put your script, for example Point pattern analysis:

    ##Point pattern analysis=group
    
  2. poner las capas que contienen los puntos al azar:

    ##Layer=vector
    
  3. poner los humeros de lo puntos que se van a crear:

    ##Size=number 10
    

    Nota

    10 será o valor padrão. Você pode mudar esse número ou deixar o parâmetro sem um número padrão

  4. especifique que el archivo de salida es una capa de vector:

    ##Output= output vector
    

17.31.3.2. Cuerpo de lineas de codigo

Ahora que puedes agregar el cuerpo de la funcion:

  1. correr la funcion spsample

    pts=spsample(Layer,Size,type="random")
    

    this way the function takes the extent of the Layer, the number of points is taken from the Size parameter and the point generation is random

  2. Escriba la linea que contiene los parametros de salida:

    Output=SpatialPointsDataFrame(pts, as.data.frame(pts))

El ultiom codigo deberia verse de la siguiente manera:

../../../_images/r_intro_8.png

Guarde y Ejecute, haciendo click en el botón de Ejecutar.

En la ventana nueva escriba los parámetros correctos:

../../../_images/r_intro_9.png

haga click en ejecutar.

Puntos resultantes se desplegaran en el canvas del mapa.

../../../_images/r_intro_10.png

17.31.4. R - Sintaxis de processing

Tener precaución ya que Processing usa unos sintaxis especiales para obtener resultados de R.

  • > antes de su comand, como >lillie.test(Layer[[Field]]) significa que el resultado se debe enviar a la salida de R (Result viewer)

  • + dspues de una linea significa sobreponer. Por ejemplo``plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))``