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``.
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.
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.
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/.
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 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.
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.
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”
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”
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]])
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:
Si no, una vez que la ventana de edicion ha cerrado, use la caja de ehrramientas de Processing para encontrar tu codigo:
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”
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:
Nota
Puedes abrir, copiar y guardar la imagen al hacer click en la parcela
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.
Igual que aneriormente hay que poner parametros antes del cuerpo del codigo:
especifique el nombre del grupo en el que desea colocar su script, por ejemplo, Análisis de patrones de puntos:
##Point pattern analysis=group
poner las capas que contienen los puntos al azar:
##Layer=vector
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
especifique que el archivo de salida es una capa de vector:
##Output= output vector
Ahora que puedes agregar el cuerpo de la funcion:
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
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))
Guarde y Ejecute, haciendo click en el botón de Ejecutar.
En la ventana nueva escriba los parámetros correctos:
haga click en ejecutar.
Puntos resultantes se desplegaran en el canvas del mapa.
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]]))``