17. Scrivere un plugin di Processing¶
Dipendentemente dal tipo di plugin che stai per sviluppare, potrebbe essere una scelta conveniente di aggiungere le sue funzionalità quali algoritmo di Processing (o un set di essi). Ciò fornirebbe una migliore integrazione all’interno di QGIS, funzionalità aggiuntive (dal momento che può essere eseguito nei componenti di Processing, come il modellatore o l’interfaccia di elaborazione batch), e un tempo di sviluppo più spedito (dal momento che Processing si farà carico della gran parte del lavoro).
Per distribuire questi algoritmi, è necessario creare un nuovo plugin che li aggiunge al Processing Toolbox. Il plugin dovrebbe contenere un provider di algoritmi, che deve essere registrato quando il plugin viene istanziato.
17.1. Creazione da zero¶
Per creare un plugin da zero che contiene un provider di algoritmi, è possibile seguire questi passaggi utilizzando il Plugin Builder:
Installare il plugin Plugin Builder
Crea un nuovo plugin usando il Plugin Builder. Quando il Plugin Builder ti chiederà il modello da usare, seleziona «Sorgente di Processing».
Il plugin creato contiene una sorgente con un singolo algoritmo. Il file della sorgente e dell’algoritmo sono entrambi commentati e contengono informazioni su come modificare la sorgente e gli algoritmi aggiuntivi. Fai riferimento ad essi per maggiori informazioni.
17.2. Aggiornare un plugin¶
Se si desidera aggiungere il plugin esistente a Processing, è necessario aggiungere un po” di codice.
Nel tuo
metadata.txt
file, bisogna che aggiungi una variabile:hasProcessingProvider=yes
Nel file Python dove il tuo plugin è impostato tramite il metodo
initGui
, bisogna adattare qualche linea in questo modo: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)
Puoi creare una cartella
processing_provider
contenente tre files:__init__.py
con niente dentro. Ciò è necessario per produrre un package Python valido.provider.py
il quale creerà il Processing provider ed esporrà i tuoi algoritmi.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
che contiene il file algoritmo di esempio. Copia/incolla il contenuto del file script template file e modificalo conformemente alle tue esigenze.
Ora puoi ricaricare il tuo plugin in QGIS e dovresti vedere il tuo script di esempio nella lista di Processing toolbox e modeler.