17. Escrevendo um complemento de processamento¶
Dependendo do tipo de plug-in que você desenvolverá, pode ser uma opção melhor adicionar sua funcionalidade como um algoritmo de Processar (ou um conjunto deles). Isso proporcionaria uma melhor integração ao QGIS, funcionalidade adicional (já que pode ser executada nos componentes do Processar, como o modelador ou a interface de processamento em lote) e um tempo de desenvolvimento mais rápido (já que o Processar consumirá grande parte do trabalhos).
Para distribuir esses algoritmos, você deve criar um nov complemento que os adicione à Caixa de Ferramentas de Processar. O complemento deve conter um provedor de algoritmos, que deve ser registrado quando o complemento é instanciado.
17.1. Criando do zero¶
Para criar um complemento do zero que contém um provedor de algoritmos, siga estas etapas usando o Plugin Builder:
Instale o complemento Plugin Builder
Crie um novo complemento usando o Plugin Builder. Quando o Plugin Builder perguntar qual modelo usar, selecione “Processing provider”.
O complemento criado contém um provedor com um único algoritmo. O arquivo do provedor e o arquivo do algoritmo são totalmente comentados e contêm informações sobre como modificar o provedor e adicionar algoritmos adicionais. Consulte-os para obter mais informações.
17.2. Atualizando um complemento¶
Se você deseja adicionar seu complemento existente ao Processar, precisará adicionar algum código.
No seu arquivo
metadata.txt
, você precisa adicionar uma variável:hasProcessingProvider=yes
No arquivo Python em que seu complemento está configurado com o método
initGui
, você precisa adaptar algumas linhas como esta:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
from qgis.core import QgsApplication from processing_provider.provider import Provider class YourPluginName(): def __init__(self): self.provider = None def initProcessing(self): self.provider = Provider() QgsApplication.processingRegistry().addProvider(self.provider) def initGui(self): self.initProcessing() def unload(self): QgsApplication.processingRegistry().removeProvider(self.provider)
Você pode criar uma pasta
processing_provider
com três arquivos:__init__.py
com nada nele. Isso é necessário para criar um pacote Python válido.provider.py
que criará o Provedor de Processamento e exporá seus algoritmos.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
from qgis.core import QgsProcessingProvider from processing_provider.example_processing_algorithm import ExampleProcessingAlgorithm class Provider(QgsProcessingProvider): def loadAlgorithms(self, *args, **kwargs): self.addAlgorithm(ExampleProcessingAlgorithm()) # add additional algorithms here # self.addAlgorithm(MyOtherAlgorithm()) def id(self, *args, **kwargs): """The ID of your plugin, used for identifying the provider. This string should be a unique, short, character only string, eg "qgis" or "gdal". This string should not be localised. """ return 'yourplugin' def name(self, *args, **kwargs): """The human friendly name of your plugin in Processing. This string should be as short as possible (e.g. "Lastools", not "Lastools version 1.0.1 64-bit") and localised. """ return self.tr('Your plugin') def icon(self): """Should return a QIcon which is used for your provider inside the Processing toolbox. """ return QgsProcessingProvider.icon(self)
example_processing_algorithm.py
que contém o arquivo de algoritmo de exemplo. Copie/cole o conteúdo do arquivo script template e atualize-o de acordo com suas necessidades.
Agora você pode recarregar seu complemento no QGIS e deverá ver o seu exemplo de script na caixa de ferramentas Processar e modelador.