Respuestas:
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?
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.
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")