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 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 … `).
Nota
Si no puedes ver R en Processinf, tienes que activarlo en
Abre una «ventana de edicion de lineas de codigo» en el cual tienes que especificar algunos parametros antes de agregar el codigo.
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;
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.
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
y con ).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.
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.
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 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]])
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:
Una vez que se haya cerrado la ventana del editor, use el cuadro de texto de Processing para encontrar su script:
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
La Ventana de Resultados se debe abrir automaticamente, si no, solo hacer click en
.Haga clic en el enlace en el visor y verá:
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:
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
Defina un parámetro de entrada (una capa vectorial) que restringirá la ubicación de los puntos aleatorios:
##Layer=vector
Establezca un parámetro de entrada para el número de puntos que se van a crear (
Tamaño
, con un valor predeterminado de10
):##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.Especifique que hay una capa de vector de salida (llamada
Salida
):##Output=output vector
Cuerpo de lineas de código
Ahora que puedes agregar el cuerpo de la funcion:
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.
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))
Guárdelo y ejecútelo haciendo clic en el botón Ejecutar.
En la ventana nueva escriba los parámetros correctos:
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:
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 ejemploplot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))