1 votos

QGIS ejecutando algoritmo de procesamiento en Python Consola no almacena Outputfile?

Tengo un proceso que quiero automatizar con un Script de Python. Este Script de Python acepta 2 capas de entrada (1 capa de puntos y 1 capa de líneas; ambas capas no tienen el mismo CRS). El script debe calcular la línea más cercana a cada punto.

Mi solución para esto incluye 3 pasos:

1er paso: reproyectar la capa de entrada (la capa de línea para ser exactos) con el algoritmo de procesamiento "qgis:reprojectlayer" (con el fin de tener dos capas de entrada con el mismo CRS)

Segundo paso: Cálculo de las líneas más cercanas a cada punto con el plugin NNJoin

Tercer paso: Transferir atributos con la calculadora de campo

Antes de empezar a escribir el script de Python, abrí la consola de Python para probar los comandos que necesitaría. En primer lugar, intenté probar el algoritmo qgis:reprojectlayer (para ello, hice un "import processing"). Y luego, comprobé el historial de procesamiento y copié el uso del algoritmo en la consola (para ello, he ejecutado el algoritmo antes).

enter image description here

Y aquí está el problema: Si ejecuto este algoritmo desde la caja de herramientas, genera un archivo de salida que se carga instantáneamente en qgis. Lo mismo ocurre si ejecuto el algoritmo directamente en la ventana del historial (con un doble clic). Pero cuando copio la llamada a la función (de la historia) en mi consola de Python y ejecutar el comando, se ve así:

enter image description here

Dice OUTPUT: memory:, pero no carga nada en qgis y también lo he probado con una ruta de archivo de salida diferente, pero la carpeta de salida sigue vacía. ¿Parece que el algoritmo no genera un archivo? ¿Y cómo puedo asignar el archivo de salida (que debería ser generado por el algoritmo reprojectlayer) a una variable dentro de mi script python?

Mi Script Python tiene este aspecto por el momento (he definido las entradas y la salida): enter image description here

¿Alguna sugerencia?

4voto

Hameno Puntos 129

Para cargar una capa de memoria de procesamiento en QGIS intente lo siguiente:

result = processing.runalg('qgis:reprojectlayer', layer, "EPSG:102013", None) # None parameter defines output as in memory
inMemoryLayer = processing.getObject(result['OUTPUT']) # this gets the memory layer object
QgsMapLayerRegistry.instance().addMapLayer(inMemoryLayer) # adds the memory layer into Q

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X