Importante

La traducción es un esfuerzo comunitario puede unirse. Esta página está actualmente traducida en |progreso de traducción|.

17.33. Usar lineas de codigo R en Processing

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

Processing (with the Processing R Provider plugin) makes it possible to write and run R scripts inside 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

Adding a script is simple. The easiest way is to open the Processing toolbox and choose Create new R script… from the R menu (labelled with an R icon) at the top of the Processing Toolbox. You can also create the script in for instance a text editor and save it in your R scripts folder (processing/rscripts). When it has been saved there, it will be available for editing by right-clicking on the script name in the processing toolbox and then choose Edit Script…).

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

Nota

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

It opens a R Script Editor in which you have to specify some parameters before you can add the script body.

../../../_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/.

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.

Cuerpo de lineas de codigo

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:

  • for Layer choose sample_points

  • for the X field choose value

Click on Run.

../../../_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.

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
    

Cuerpo de lineas de codigo

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