Risposte:
Sicuro È possibile ottenere la funzione dalla casella degli strumenti di elaborazione. Ecco come usarlo: secondo http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
Dalla console è possibile ottenere un elenco di tutti gli algoritmi disponibili che contengono la parola "clip" digitando:
import processing
processing.alglist("clip")
Quindi potresti scoprire come utilizzare ciò che appare la funzione più appropriata con:
processing.alghelp("qgis:clip")
Quindi usa semplicemente l'algoritmo nel tuo script come segue:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
Nota: l'algoritmo funzionerà solo su funzioni selezionate "
Nota il codice sopra riportato non è valido per 3.0+ per l'esempio di alglist che puoi fare:
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
per l'esempio di alghelp puoi fare:
processing.algorithmHelp("qgis:clip")
Per QGIS3 vedi questa domanda:
Che cos'è il nuovo alglist e alghelp nell'elaborazione di QGIS 3.0?
Layer = qgis.utils.iface.activeLayer()
e InputLayer = qgis.utils.iface.activeLayer()
. Quindi uso processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
e il nuovo livello viene aggiunto al menu Livelli con il nome Ritagliato . Ma il livello è vuoto. Se uso questi due livelli con la funzione di clip all'interno di Qgis, il livello di output ha le linee del ritaglio. Qualcuno che cosa può essere sbagliato? Non ricevo errori.
Supponendo di avere un layer chiamato "overlay" e un altro chiamato "layer_to_clip" caricato.
# 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")