Desculpe por trazer esse tópico à vida novamente, mas nunca o fiz funcionar, e agora preciso dele novamente. No console pyhton, recebo as duas camadas por 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.
Toke
Funciona se eu usar dois polígonos, mas uma das minhas camadas é uma linha e não um polígono. Ele contém várias linhas, e eu posso usar essa camada para recortar ao fazê-lo no Qgis.
Toke
2
Você precisa ter os recursos que deseja cortar selecionados. Eu editei a resposta para refletir isso.
Sr. Roxo
Como alguém faria isso sem realmente criar shapefiles? Eu tenho uma camada com centenas de polígonos em forma de disco que desejo percorrer, usando cada um como uma sobreposição para uma única camada de dados pontuais. Posso apenas obter uma lista de objetos QgsFeature de alguma forma?
19419 J. Taylor
Você deve fazer isso como uma pergunta separada
Mr Purple
5
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")
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:
Em seguida, você pode descobrir como usar o que parece ser a função mais apropriada com:
Em seguida, basta usar o algoritmo em seu script da seguinte maneira:
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:
Para o exemplo de ajuda que você pode fazer:
Para QGIS3, veja esta pergunta:
O que é o novo alglist e alghelp no QGIS 3.0 Processing?
fonte
Layer = qgis.utils.iface.activeLayer()
eInputLayer = qgis.utils.iface.activeLayer()
. Então eu usoprocessing.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.
fonte