Respostas:
Claro, você pode obter a função na caixa de ferramentas de processamento. Veja como usá-lo: Conforme http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
No console, você pode obter uma lista de todos os algoritmos disponíveis que contêm a palavra "clipe" digitando:
import processing
processing.alglist("clip")
Em seguida, você pode descobrir como usar o que parece ser a função mais apropriada com:
processing.alghelp("qgis:clip")
Em seguida, basta usar o algoritmo em seu script da seguinte maneira:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
Nota: o algoritmo funcionará apenas em recursos selecionados "
Observe que o código acima é inválido para o 3.0+ no exemplo de alglist que você pode fazer:
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
Para o exemplo de ajuda que você pode fazer:
processing.algorithmHelp("qgis:clip")
Para QGIS3, veja esta pergunta:
Layer = qgis.utils.iface.activeLayer()
e InputLayer = qgis.utils.iface.activeLayer()
. Então eu uso processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
e a nova camada é adicionada ao menu Camadas com o nome Recortado . Mas a camada está vazia. Se eu usar essas duas camadas com a função de clipe no Qgis, a camada de saída terá as linhas do recorte. Alguém que pode estar errado? Eu não recebo nenhum erro.
Supondo que você tenha uma camada chamada "overlay" e outra chamada "layer_to_clip" carregada.
# 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")