17.33. Usar lineas de codigo R en Processing

Módulo aportado por Matteo Ghetta - fundado por Scuola Superiore Sant’Anna

El procesamiento (con el complemento Processing R Provider) hace posible escribir y ejecutar scripts R dentro de QGIS.

Advertencia

R debe estar instalado en su computadora y el PATH debe estar configurado correctamente. Además, Processing solo llama a los paquetes R externos, no puede instalarlos. Así que asegúrese de instalar paquetes externos directamente en R. Consulte la sección relacionada capítulo en el manual de usuario.

Nota

Si tiene problemas con paquetes, puede estar relacionado con paquetes obligatorios faltantes requeridos por Procesamiento, como sp, rgdal y ráster.

17.33.1. Agregar lineas de codigo

Agregar una secuencia de comandos es simple. La forma más sencilla es abrir la caja de herramientas Procesamiento y elegir Crear nuevo script R… en el menú R (etiquetado con un icono R) en la parte superior de la Caja de herramientas de procesamiento. También puede crear el script, por ejemplo, en un editor de texto y guardarlo en su carpeta de scripts de R (processing/rscripts). Cuando se haya guardado allí, estará disponible para su edición haciendo clic con el botón derecho en el nombre del script en la caja de herramientas de procesamiento y luego seleccione :menuselection:`Editar 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.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/.

17.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 (parcelas en este caso) en el que desea poner su script (si el grupo no existe, se creará):

    ##plots=group
    

    Encontrará su secuencia de comandos en el grupo trazados de R de la caja de herramientas Procesamiento.

  2. Tiene que decirle a Processing que quiere mostrar un gráfico (en este ejemplo):

    ##showplots
    

    Luego encontrará un enlace al gráfico en el panel ** Visor de resultados ** (se puede activar/desactivar en Ver ► Paneles y con Procesos ► Visor de Resultados).

  3. También debe informar a Processing sobre sus datos de entrada. En este ejemplo queremos crear un gráfico a partir de un campo de una capa vectorial:

    ##Layer=vector
    

    El procesamiento ahora sabe que la entrada es un vector. El nombre de la Capa no es importante, lo que importa es el parámetro vectorial.

  4. Finalmente, debe especificar el campo de entrada de la capa vectorial (usando el nombre que proporcionó anteriormente - Capa):

    ##X=Field Layer
    

    Procesando ahora sabe que necesita un campo de Capa, y que lo llamará X.

  5. También es posible definir el nombre de su script usando nombre:

    ##My box plot script=name
    

    Si no está definido, el nombre del archivo se utilizará como nombre del script.

17.33.2.2. Cuerpo de lineas de código

Ahora que tienes la «cabecera» de las lineas de codigo puedes agregar las funciones;

boxplot(Layer[[X]])

boxplot ** es el nombre de la función R, el parámetro **Capa es el nombre que ha definido para el conjunto de datos de entrada y X es el nombre que ha definido para el campo de ese conjunto de datos.

Advertencia

El parámetro ** X ** debe estar entre corchetes dobles ([[]]).

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 script en la ruta predeterminada sugerida por Processing (procesamiento/rscripts). Si no ha definido un nombre en el encabezado del script, el nombre de archivo que elija se convertirá en el nombre del script en la caja de herramientas de Procesamiento.

Nota

Puede guardar el script donde quiera, pero Processing no podrá incluirlo automáticamente en la caja de herramientas de procesamiento, por lo que deberá cargarlo manualmente.

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

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

Una vez que se haya cerrado la ventana del editor, use el cuadro de texto de Processing para encontrar su script:

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

Ahora puede completar los parámetros necesarios en la ventana del algoritmo de procesamiento:

  • para Capa elija sample_points

  • para el campo X elija valor

Elegir Ejecutar

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

La Ventana de Resultados se debe abrir automaticamente, si no, solo hacer click en Procesos ► Visor de Resultados….

Haga clic en el enlace en el visor y verá:

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

Nota

Puede abrir, copiar y guardar la imagen haciendo clic derecho sobre el gráfico.

17.33.3. Crear un vector

También puede crear una capa vectorial y cargarla automáticamente en QGIS.

El siguiente ejemplo se ha tomado del script Cuadrícula de muestreo aleatorio que se puede encontrar en la colección en línea de scripts R (los scripts de esta colección en línea se pueden encontrar en https://github.com/qgis/QGIS-Processing/tree/master/rscripts).

El objetivo de este ejercicio es crear una capa vectorial de puntos aleatorios utilizando una capa vectorial de entrada para restringir la extensión utilizando la función spsample del paquete sp.

17.33.3.1. Parametros de linea de codigo

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

  1. Especifica el nombre del grupo en el que quieres poner tu script, en este caso Análisis de patrón de puntos:

    ##Point pattern analysis=group
    
  2. Defina un parámetro de entrada (una capa vectorial) que restringirá la ubicación de los puntos aleatorios:

    ##Layer=vector
    
  3. Establezca un parámetro de entrada para el número de puntos que se van a crear (Tamaño, con un valor predeterminado de 10):

    ##Size=number 10
    

    Nota

    Dado que se define un valor predeterminado (10), el usuario puede cambiar este número o puede dejar el parámetro sin un número.

  4. Especifique que hay una capa de vector de salida (llamada Salida):

    ##Output=output vector
    

17.33.3.2. Cuerpo de lineas de código

Ahora que puedes agregar el cuerpo de la funcion:

  1. Use la función spsample

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

    La función usa la Capa para restringir la ubicación de los puntos (si es una capa de línea, un punto tendrá que estar en una de las líneas en la capa, si es una capa de polígono, un punto tendrá que ser dentro de un polígono). El número de puntos se toma del parámetro Tamaño. El método de muestreo es aleatorio.

  2. Generate the output (the Output parameter):

    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

Guárdelo y ejecútelo haciendo clic en el botón Ejecutar.

En la ventana nueva escriba los parámetros correctos:

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

haga click en ejecutar.

La capa de resultado se agregará a la tabla de contenido y sus puntos se mostrarán en el lienzo del mapa:

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

17.33.4. Salida de texto y gráfico de R - sintaxis

Procesos (con el Plugin Processing R Provider) usa una sintaxis especial para obtener los 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)

  • + después de que un gráfico habilita los gráficos de superposición. Por ejemplo plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))