Importante
La traducción es un esfuerzo comunitario puede unirse. Esta página está actualmente traducida en |progreso de traducción|.
17. Escribir nuevos complementos de procesamiento
Dependiendo del tipo de complemento que vaya a desarrollar, podría ser una mejor opción agregar su funcionalidad como un algoritmo de procesamiento (o un conjunto de ellos). Eso proporcionaría una mejor integración dentro de QGIS, funcionalidad adicional (ya que se puede ejecutar en los componentes de Processing, como el modelador o la interfaz de procesamiento por lotes), y un tiempo de desarrollo más rápido (ya que Processing tomará una gran parte del trabajo).
Para distribuir esos algoritmos, debe crear un nuevo complemento que los agregue a Caja de Herramientas de Procesos. El complemento debe contener un proveedor de algoritmos, que debe registrarse cuando se crea una instancia del complemento.
17.1. Creando desde cero
Para crear un complemento desde cero que contenga un proveedor de algoritmos, puede seguir estos pasos utilizando el Generador de complementos:
Instala el complemento Plugin Builder
Crea un nuevo complemento, usando el Plugin Builder. En el cuadro de diálogo del Plugin Builder, selecciona «Processing provider».
El complemento creado contiene un proveedor con un solo algoritmo. Tanto el archivo del proveedor como el archivo del algoritmo están completamente comentados y contienen información sobre cómo modificar el proveedor y agregar algoritmos adicionales. Consúltelos para obtener más información.
17.2. Actuializar un complemento
Si quiere añadir su complemento existente a Procesos, necesitará añadir algo de código.
En su archivo
metadata.txt
, necesitará añadir una variable:hasProcessingProvider=yes
En el archivo Python donde tu complemento está instalado con el método
initGui
, necesitas adaptar algunas líneas como esta: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)
Puedes crear una carpeta
processing_provider
con tres archivos en ella:__init__.py
sin nada en él. Esto es necesario para crear un paquete Python válido.provider.py
que creará el proveedor de procesamiento y expondrá sus algoritmos.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
el cuál contiene el archivo de ejemplo de algoritmo. Copiar/pegar el contenido de la fuente archivo de plantilla de script y actualizalo de acuerdo a tus necesidades.
Debería tener un árbol similar a este :
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
Ahora puede volver a cargar su complemento en QGIS y debería ver su script de ejemplo en la caja de herramientas de procesamiento y el modelador.