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:

  1. Instala el complemento Plugin Builder

  2. Crea un nuevo complemento, usando el Plugin Builder. En el cuadro de diálogo del Plugin Builder, selecciona «Processing provider».

  3. 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.

  1. En su archivo metadata.txt, necesitará añadir una variable:

    hasProcessingProvider=yes
    
  2. 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)
    
  3. 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
       2
       3from processing_provider.example_processing_algorithm import ExampleProcessingAlgorithm
       4
       5
       6class Provider(QgsProcessingProvider):
       7
       8    def loadAlgorithms(self, *args, **kwargs):
       9        self.addAlgorithm(ExampleProcessingAlgorithm())
      10        # add additional algorithms here
      11        # self.addAlgorithm(MyOtherAlgorithm())
      12
      13    def id(self, *args, **kwargs):
      14        """The ID of your plugin, used for identifying the provider.
      15
      16        This string should be a unique, short, character only string,
      17        eg "qgis" or "gdal". This string should not be localised.
      18        """
      19        return 'yourplugin'
      20
      21    def name(self, *args, **kwargs):
      22        """The human friendly name of your plugin in Processing.
      23
      24        This string should be as short as possible (e.g. "Lastools", not
      25        "Lastools version 1.0.1 64-bit") and localised.
      26        """
      27        return self.tr('Your plugin')
      28
      29    def icon(self):
      30        """Should return a QIcon which is used for your provider inside
      31        the Processing toolbox.
      32        """
      33        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.

  4. 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.