¿Llamando a la función de clip en pyQGIS desde la consola de Python?


10

¿Hay alguna manera de llamar a la función de clip en QQGIS desde la consola de Python? Se encuentra en las herramientas de geoprocesamiento en el menú vectorial.


Ok, lo arreglé usando primero la función de multicolores a partes individuales. Entonces funciona.
Toke

Respuestas:


10

Claro, puede obtener la función de la caja de herramientas de procesamiento. Aquí se explica cómo usarlo: según http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html

Desde la consola puede obtener una lista de todos los algoritmos disponibles que contienen la palabra "clip" escribiendo:

import processing
processing.alglist("clip")

Luego, puede averiguar cómo usar lo que parece ser la función más apropiada con:

processing.alghelp("qgis:clip")

Luego, simplemente use el algoritmo en su script de la siguiente manera:

processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")

Nota: el algoritmo solo funcionará en las funciones seleccionadas "

Tenga en cuenta que el código anterior no es válido para 3.0+ para el ejemplo de lista que puede hacer:

print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])

para el ejemplo de alghelp puedes hacer:

processing.algorithmHelp("qgis:clip")

Para QGIS3 vea esta pregunta:

¿Cuál es el nuevo alglist y alghelp en el procesamiento QGIS 3.0?


Perdón por volver a darle vida a este tema, pero nunca lo hice funcionar, y ahora lo necesito nuevamente. En la consola Pyhton obtengo las dos capas por Layer = qgis.utils.iface.activeLayer()y InputLayer = qgis.utils.iface.activeLayer(). Luego uso processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")y la nueva capa se agrega al menú Capas con el nombre Recortado . Pero la capa está vacía. Si uso estas dos capas con la función de recorte dentro de Qgis, la capa de salida tiene las líneas del recorte. Alguien que puede estar mal? No recibo ningún error.
Toke

Funciona si uso dos polígonos, pero una de mis capas es una línea y no un polígono. Contiene varias líneas, y puedo usar esta capa para recortar cuando lo hago en Qgis.
Toke

2
Debe tener las funciones que desea recortar seleccionadas. He editado la respuesta para reflejar esto.
Mr Purple

¿Cómo se podría hacer esto sin crear realmente archivos de forma? Tengo una capa con cientos de polígonos en forma de disco que quiero recorrer en iteración, usando cada una como una superposición para una sola capa de datos de puntos. ¿Puedo obtener una lista de objetos QgsFeature de alguna manera?
J. Taylor

Debería hacer eso como una pregunta separada
Sr. Purple

5

Asumiendo que tiene una capa llamada "overlay" y otra llamada "layer_to_clip" cargada.

# get the overlay layer in the console
overlay_layer = [x for x in iface.legendInterface().layers() if x.name() == 'overlay'][0]

# get the layer to clip in the console
layer_to_clip = [x for x in iface.legendInterface().layers() if x.name() == 'layer_to_clip'][0]

# run the algorithm and output the results in /tmp/output.shp

processing.runalg("qgis:clip", overlay_layer, layer_to_clip, "/tmp/output.shp")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.