PyQGisCookbool--编写一个处理插件(十九)


编写一个处理插件

根据您要开发的插件类型,可能最好将其功能添加为处理算法。这样可以在QGIS中提供更好的集成,附加功能(因为它可以在Processing的组件中运行,例如建模器或批处理接口),并且可以缩短开发时间。

要分发这些算法,您应该创建一个新插件,将其添加到“处理工具箱”中。插件应包含一个算法提供程序,该程序必须在实例化插件时进行注册。

从头开始创建

要从头开始创建一个包含提供算法程序的插件,您可以使用“Plugin Builder”执行以下步骤:

  1. 安装Plugin Builder插件

  2. 使用“插件生成器”创建一个新插件。当Plugin Builder要求您使用模板时,选择“ Processing provider”。

  3. 创建的插件包含具有单个算法的提供程序。提供程序文件和算法文件均已包含注释有关如何修改提供程序和添加其他算法的信息。请参阅他们以获取更多信息。

更新插件

如果要将现有插件添加到Processing,则需要添加一些代码。

  1. metadata.txt文件中,您需要添加一个变量:

    hasProcessingProvider=yes
    
  2. 在使用initGui方法设置插件的Python文件中,您需要修改以下几行:

    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)
    
  3. 您可以创建一个processing_provider文件夹包含以下三个文件:

    • __init__.py--空文件,这是制作有效的Python包所必需的。

    • provider.py 这将创建处理提供程序并公开您的算法。

      from qgis.core import QgsProcessingProvider
      
      from .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包含示例算法文件。复制/粘贴脚本模板文件的内容,然后根据需要进行更新。

  4. 现在,您可以在QGIS中重新加载插件,并且应该在“处理”工具箱和建模器中看到示例脚本。

下一个   前一个

©版权所有2002-现在,QGIS项目 最近更新于2020年4月3日09:14。

使用Sphinx使用Read the Docs提供的主题构建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值