18.33. Usar lineas de codigo R en Processing

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

Processing te permite escribir y correr lineas de codigo en QGIS.

Advertencia

R tiene que estar instalado en su computadora y el directorio tiene que estar configurado correctamente. Por otra parte sólo llamar el paquete externo de R, pero no podrá instalarlos. Este seguro de instalar los paquetes externos directamente en R. Vea capitulo relacionado en el manual de usuario chapter.

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

18.33.1. Agregar lineas de codigo

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

18.33.2. Crear parcelas

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

Abra el proyecto QGIS r_intro.qgs que esta en la carpeta exercise_data/processing/r_intro/.

18.33.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”

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

Advertencia

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

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

El propósito de este ejercicio es crear un vector de punto al azar en una capa usando la función spsample y el paquete sp.

18.33.3.1. Parametros de linea de codigo

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

  1. especifique el nombre del grupo en el que desea colocar su script, por ejemplo, Análisis de patrones de puntos:

    ##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 va a ser el valor por defecto. Puedes cambiar este numero o puedes dejar el parametro sin un numero

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

    ##Output= output vector
    

18.33.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")
    

    Esta manera la función toma la extensión de la Capa, el numero de puntos se toma el parámetro Tamaño y la generación del punto es al azar

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

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

El codigo final se ve asi:

##Point pattern analysis=group
##Layer=vector
##Size=number 10
##Output= output vector
pts=spsample(Layer,Size,type="random")
Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
../../../_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

18.33.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]]))``