Eu quero acessar a função de linhas de explosão no Python fora do QGIS a partir de um script independente.
Que módulo eu tenho que carregar para usá-lo?
Como posso acessar processing
?
from qgis.core import *
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
processing.runalg('qgis:explodelines', layerInput, 'temp.shp')
qgis
pyqgis
qgis-processing
explode
ustroetz
fonte
fonte
import processing
.Respostas:
ATUALIZAÇÃO 24.04.2018: Veja como fazer isso no QGIS v3.x aqui .
Para QGIS v2.x
Finalmente, encontrei a maneira correta de executar algoritmos de processamento por meio de scripts PyQGIS independentes.
Usando o plugin de processamento versão 2.2.0-2, você pode tentar o seguinte script:
As versões mais recentes de processamento podem estar localizadas em
/usr/share/qgis/python/plugins
, portanto, você pode precisar usá-losys.path.append('/usr/share/qgis/python/plugins')
adequadamente.Encontrei o exemplo de trabalho em Erro: Algoritmo não encontrado , que por sua vez é baseado em uma discussão na lista de discussão do Qgis-dev .
fonte
'/home/user/.qgis2/python/plugins'
. Você pode encontrar o local abrindo o QGIS e clicando emplugins/Manage and install plugins
rolar para baixo para processamento e você verá o local da instalação na descrição.cannot-create-a-qpixmap
com este suporte função sozinho, mas eu vejo que você resolveu que também nesta questão gis.stackexchange.com/questions/188074/...layerInput
removendo e alterando a linha runalg para: parageneral.runalg(*sys.argv[1:])
não mencionar que esse script pode ser a base do processamento paralelo de GIS conforme esta pergunta: gis.stackexchange.com/questions/119961/…Até que eu comece a trabalhar da maneira genérica de fazê-lo, eu direi uma solução alternativa.
Eu uso o plugin Processing versão 2.2.0-2 (sugiro que você use esta versão), instalada no
/home/germap/.qgis2/python/plugins/
meu computador. Você precisa conhecer o local desta pasta, porque você importa o módulo de processamento a partir daí.Como você conhece o provedor (
qgis
) e o algoritmo (explodelines
), pode/home/germap/.qgis2/python/plugins/processing/algs/qgis/
usar o nome do script das linhas de explosão:Explode.py
Essas informações permitem importar o algoritmo diretamente para o script independente do Python.Portanto, abra um console Python e copie o seguinte script (eu uso o GNU / Linux, para que as variáveis de ambiente sejam definidas por padrão, permitindo que eu importe as bibliotecas qgis e PyQt4 com facilidade):
Se você não receber mensagens de erro, é isso. A camada de saída foi salva no caminho de saída que você especificou (
/home/user/data/out.shp
)Nota: Em relação a uma maneira genérica (ou seja, chamar algoritmos pelo nome), encontrei alguns problemas que preciso resolver antes de publicá-lo. Assim que eu funcionar, eu a publicarei.
fonte