Belangrijk
Vertalen is een inspanning van de gemeenschap waaraan u deel kunt nemen <translation_guidelines>. Deze pagina is momenteel voor 100.00% vertaald.
17. Een plug-in voor Processing schrijven
Afhankelijk van het soort plug-in dat u gaat ontwikkelen, zou het misschien een betere optie zijn om de functionaliteit ervan toe te voegen als een algoritme voor Processing (of een set daarvan). Dat zou tot een betere integratie in QGIS leiden, aanvullende functionaliteit (omdat het kan worden uitgevoerd in de componenten van Processing, zoals Modelontwerper of de Processing interface voor batchverwerking), en een snellere ontwikkelingstijd (omdat Processing een groot deel van het werk zal overnemen).
U zou, om deze algoritmes te kunnen distribueren, een nieuwe plug-in moeten maken die ze toevoegt aan de Toolbox van Processing. De plug-in zou een provider voor algoritmes moeten bevatten, die moet worden geregistreerd als de plug-in wordt geïnstantieerd.
17.1. Maken vanaf niets
U kunt de volgende stappen volgen, met behulp van de Plugin Builder, om vanaf nul een plug-in te maken die een provider voor algoritmes bevat:
Installeer de plug-in Plugin Builder
Maak een nieuwe plug-in met de Plugin Builder. Wanneer de Plugin Builder u vraagt naar het te gebruiken sjabloon, selecteer dan “Processing provider”.
De gemaakte plug-in bevat een provider met één enkel algoritme. Zowel het bestand voor de provider als het bestand voor het algoritme zijn volledig voorzien van commentaar en bevatten informatie over hoe de provider aan te passen en aanvullende algoritmes toe te voegen. Verwijs daarnaar voor meer meer informatie.
17.2. Een plug-in bijwerken
U dient nog enige code toe te voegen als u uw bestaande plug-in wilt toevoegen aan Processing.
In uw bestand
metadata.txt
moet u een variabele toevoegen:hasProcessingProvider=yes
In het bestand van Python waar uw plug-in wordt ingesteld met de methode
initGui
, dient u enkele regels als volgt aan te passen:1from qgis.core import QgsApplication 2from .processing_provider.provider import Provider 3 4class YourPluginName: 5 6 def __init__(self): 7 self.provider = None 8 9 def initProcessing(self): 10 self.provider = Provider() 11 QgsApplication.processingRegistry().addProvider(self.provider) 12 13 def initGui(self): 14 self.initProcessing() 15 16 def unload(self): 17 QgsApplication.processingRegistry().removeProvider(self.provider)
U kunt een map
processing_provider
maken met daarin drie bestanden:__init__.py
waar niets in staat. Dit is noodzakelijk om een geldig pakket voor Python te maken.provider.py
dat de provider voor Processing zal maken en uw algoritmes zal laten zien.1from qgis.core import QgsProcessingProvider 2from qgis.PyQt.QtGui import QIcon 3 4from .example_processing_algorithm import ExampleProcessingAlgorithm 5 6 7class Provider(QgsProcessingProvider): 8 9 """ The provider of our plugin. """ 10 11 def loadAlgorithms(self): 12 """ Load each algorithm into the current provider. """ 13 self.addAlgorithm(ExampleProcessingAlgorithm()) 14 # add additional algorithms here 15 # self.addAlgorithm(MyOtherAlgorithm()) 16 17 def id(self) -> str: 18 """The ID of your plugin, used for identifying the provider. 19 20 This string should be a unique, short, character only string, 21 eg "qgis" or "gdal". This string should not be localised. 22 """ 23 return 'yourplugin' 24 25 def name(self) -> str: 26 """The human friendly name of your plugin in Processing. 27 28 This string should be as short as possible (e.g. "Lastools", not 29 "Lastools version 1.0.1 64-bit") and localised. 30 """ 31 return self.tr('Your plugin') 32 33 def icon(self) -> QIcon: 34 """Should return a QIcon which is used for your provider inside 35 the Processing toolbox. 36 """ 37 return QgsProcessingProvider.icon(self)
example_processing_algorithm.py
wat het voorbeeldbestand voor een algoritme bevat. Kopieer/plak de inhoud van het bestand script template en werk dat naar behoefte bij.
U zou een soortgelijke boom moeten hebben als deze:
1└── your_plugin_root_folder
2 ├── __init__.py
3 ├── LICENSE
4 ├── metadata.txt
5 └── processing_provider
6 ├── example_processing_algorithm.py
7 ├── __init__.py
8 └── provider.py
Nu kunt u uw plug-in opnieuw laden in QGIS en u zou uw voorbeeldscript moeten zien in de Toolbox en Modelontwerper van Processing.