Ejemplo n.º 1
0
    def load(self):
        with QgsRuntimeProfiler.profile('Grass Provider'):
            ProcessingConfig.settingIcons[self.name()] = self.icon()
            ProcessingConfig.addSetting(
                Setting(self.name(), Grass7Utils.GRASS_LOG_COMMANDS,
                        self.tr('Log execution commands'), False))
            ProcessingConfig.addSetting(
                Setting(self.name(), Grass7Utils.GRASS_LOG_CONSOLE,
                        self.tr('Log console output'), False))
            ProcessingConfig.addSetting(
                Setting(self.name(), Grass7Utils.GRASS_HELP_PATH,
                        self.tr('Location of GRASS docs'),
                        Grass7Utils.grassHelpPath()))
            # Add settings for using r.external/v.external instead of r.in.gdal/v.in.ogr
            # but set them to False by default because the {r,v}.external implementations
            # have some bugs on windows + there are algorithms that can't be used with
            # external data (need a solid r.in.gdal/v.in.ogr).
            # For more info have a look at e.g. https://trac.osgeo.org/grass/ticket/3927
            ProcessingConfig.addSetting(
                Setting(
                    self.name(), Grass7Utils.GRASS_USE_REXTERNAL,
                    self.
                    tr('For raster layers, use r.external (faster) instead of r.in.gdal'
                       ), False))
            ProcessingConfig.addSetting(
                Setting(
                    self.name(), Grass7Utils.GRASS_USE_VEXTERNAL,
                    self.
                    tr('For vector layers, use v.external (faster) instead of v.in.ogr'
                       ), False))
            ProcessingConfig.readSettings()
            self.refreshAlgorithms()

        return True
Ejemplo n.º 2
0
    def initialize():
        if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
            return

        with QgsRuntimeProfiler.profile('Initialize'):

            # add native provider if not already added
            if "native" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms(QgsApplication.processingRegistry()))

            # add 3d provider if available and not already added
            if "3d" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                try:
                    from qgis._3d import Qgs3DAlgorithms
                    QgsApplication.processingRegistry().addProvider(Qgs3DAlgorithms(QgsApplication.processingRegistry()))
                except ImportError:
                    # no 3d library available
                    pass

            # Add the basic providers
            for c in [
                QgisAlgorithmProvider,
                GdalAlgorithmProvider,
                ScriptAlgorithmProvider,
                ModelerAlgorithmProvider,
                ProjectProvider
            ]:
                p = c()
                if QgsApplication.processingRegistry().addProvider(p):
                    Processing.BASIC_PROVIDERS.append(p)
            # And initialize
            ProcessingConfig.initialize()
            ProcessingConfig.readSettings()
            RenderingStyles.loadStyles()
Ejemplo n.º 3
0
 def load(self):
     with QgsRuntimeProfiler.profile('GDAL Provider'):
         ProcessingConfig.settingIcons[self.name()] = self.icon()
         ProcessingConfig.addSetting(
             Setting(self.name(), 'ACTIVATE_GDAL', self.tr('Activate'),
                     True))
         ProcessingConfig.readSettings()
         self.refreshAlgorithms()
     return True
Ejemplo n.º 4
0
    def load(self):
        with QgsRuntimeProfiler.profile('QGIS Python Provider'):
            success = super().load()

            if success:
                self.parameterTypeFieldsMapping = FieldsMapper.ParameterFieldsMappingType(
                )
                QgsApplication.instance().processingRegistry(
                ).addParameterType(self.parameterTypeFieldsMapping)

        return success
Ejemplo n.º 5
0
 def loadAlgorithms(self):
     with QgsRuntimeProfiler.profile('Load model algorithms'):
         if self.isLoading:
             return
         self.isLoading = True
         self.algs = []
         folders = ModelerUtils.modelsFolders()
         for f in folders:
             self.loadFromFolder(f)
         for a in self.algs:
             self.addAlgorithm(a)
         self.isLoading = False
Ejemplo n.º 6
0
    def load(self):
        with QgsRuntimeProfiler.profile('Script Provider'):
            ProcessingConfig.settingIcons[self.name()] = self.icon()
            ProcessingConfig.addSetting(Setting(self.name(),
                                                ScriptUtils.SCRIPTS_FOLDERS,
                                                self.tr("Scripts folder(s)"),
                                                ScriptUtils.defaultScriptsFolder(),
                                                valuetype=Setting.MULTIPLE_FOLDERS))

            ProviderActions.registerProviderActions(self, self.actions)
            ProviderContextMenuActions.registerProviderContextMenuActions(self.contextMenuActions)

            ProcessingConfig.readSettings()
            self.refreshAlgorithms()

        return True
Ejemplo n.º 7
0
    def load(self):
        with QgsRuntimeProfiler.profile('Model Provider'):
            ProcessingConfig.settingIcons[self.name()] = self.icon()
            ProcessingConfig.addSetting(
                Setting(self.name(),
                        ModelerUtils.MODELS_FOLDER,
                        self.tr('Models folder', 'ModelerAlgorithmProvider'),
                        ModelerUtils.defaultModelsFolder(),
                        valuetype=Setting.MULTIPLE_FOLDERS))
            ProviderActions.registerProviderActions(self, self.actions)
            ProviderContextMenuActions.registerProviderContextMenuActions(
                self.contextMenuActions)
            ProcessingConfig.readSettings()
            self.refreshAlgorithms()

        return True
Ejemplo n.º 8
0
    def load(self):
        with QgsRuntimeProfiler.profile('OTB Provider'):
            group = self.name()
            ProcessingConfig.settingIcons[group] = self.icon()
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.FOLDER,
                        self.tr("OTB folder"),
                        OtbUtils.otbFolder(),
                        valuetype=Setting.FOLDER,
                        validator=self.validateOtbFolder))
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.APP_FOLDER,
                        self.tr("OTB application folder"),
                        OtbUtils.appFolder(),
                        valuetype=Setting.MULTIPLE_FOLDERS,
                        validator=self.validateAppFolders))
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.SRTM_FOLDER,
                        self.tr("SRTM tiles folder"),
                        OtbUtils.srtmFolder(),
                        valuetype=Setting.FOLDER))
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.GEOID_FILE,
                        self.tr("Geoid file"),
                        OtbUtils.geoidFile(),
                        valuetype=Setting.FOLDER))
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.MAX_RAM_HINT,
                        self.tr("Maximum RAM to use"),
                        OtbUtils.maxRAMHint(),
                        valuetype=Setting.STRING))
            ProcessingConfig.addSetting(
                Setting(group,
                        OtbUtils.LOGGER_LEVEL,
                        self.tr("Logger level"),
                        OtbUtils.loggerLevel(),
                        valuetype=Setting.STRING,
                        validator=self.validateLoggerLevel))
            ProcessingConfig.readSettings()
            self.refreshAlgorithms()

        return True
Ejemplo n.º 9
0
    def load(self):
        with QgsRuntimeProfiler.profile('SAGA Provider'):
            ProcessingConfig.settingIcons[self.name()] = self.icon()
            ProcessingConfig.addSetting(
                Setting("SAGA", SagaUtils.SAGA_IMPORT_EXPORT_OPTIMIZATION,
                        self.tr('Enable SAGA Import/Export optimizations'),
                        False))
            ProcessingConfig.addSetting(
                Setting("SAGA", SagaUtils.SAGA_LOG_COMMANDS,
                        self.tr('Log execution commands'), True))
            ProcessingConfig.addSetting(
                Setting("SAGA", SagaUtils.SAGA_LOG_CONSOLE,
                        self.tr('Log console output'), True))
            ProcessingConfig.readSettings()
            self.refreshAlgorithms()

        return True
Ejemplo n.º 10
0
    def initialize():
        if "model" in [
                p.id()
                for p in QgsApplication.processingRegistry().providers()
        ]:
            return

        with QgsRuntimeProfiler.profile('Initialize'):
            # Add the basic providers
            for c in [
                    QgisAlgorithmProvider, Grass7AlgorithmProvider,
                    GdalAlgorithmProvider, OtbAlgorithmProvider,
                    SagaAlgorithmProvider, ScriptAlgorithmProvider,
                    ModelerAlgorithmProvider, ProjectProvider
            ]:
                p = c()
                if QgsApplication.processingRegistry().addProvider(p):
                    Processing.BASIC_PROVIDERS.append(p)
            # And initialize
            ProcessingConfig.initialize()
            ProcessingConfig.readSettings()
            RenderingStyles.loadStyles()
Ejemplo n.º 11
0
    def load(self):
        with QgsRuntimeProfiler.profile('QGIS Python Provider'):
            success = super().load()

        return success
Ejemplo n.º 12
0
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************
"""

__author__ = 'Alexander Bruy'
__date__ = 'June 2021'
__copyright__ = '(C) 2021, Alexander Bruy'

from qgis.core import QgsApplication, QgsRuntimeProfiler

with QgsRuntimeProfiler.profile('Import GRASS Provider'):
    from grassprovider.Grass7AlgorithmProvider import Grass7AlgorithmProvider


class GrassProviderPlugin:
    def __init__(self):
        self.provider = Grass7AlgorithmProvider()

    def initProcessing(self):
        QgsApplication.processingRegistry().addProvider(self.provider)

    def initGui(self):
        self.initProcessing()

    def unload(self):
        QgsApplication.processingRegistry().removeProvider(self.provider)
Ejemplo n.º 13
0
    def initialize():
        if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
            return

        with QgsRuntimeProfiler.profile('Initialize'):

            # add native provider if not already added
            if "native" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms(QgsApplication.processingRegistry()))

            # add 3d provider if available and not already added
            if "3d" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                try:
                    from qgis._3d import Qgs3DAlgorithms
                    QgsApplication.processingRegistry().addProvider(Qgs3DAlgorithms(QgsApplication.processingRegistry()))
                except ImportError:
                    # no 3d library available
                    pass

            # Add the basic providers
            for c in [
                QgisAlgorithmProvider,
                GdalAlgorithmProvider,
                ScriptAlgorithmProvider,
                ModelerAlgorithmProvider,
                ProjectProvider
            ]:
                p = c()
                if QgsApplication.processingRegistry().addProvider(p):
                    Processing.BASIC_PROVIDERS.append(p)

            if QgsApplication.platform() == 'external':
                # for external applications we must also load the builtin providers stored in separate plugins
                try:
                    from grassprovider.Grass7AlgorithmProvider import Grass7AlgorithmProvider
                    p = Grass7AlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

                try:
                    from otbprovider.OtbAlgorithmProvider import OtbAlgorithmProvider
                    p = OtbAlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

                try:
                    from sagaprovider.SagaAlgorithmProvider import SagaAlgorithmProvider
                    p = SagaAlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

            # And initialize
            ProcessingConfig.initialize()
            ProcessingConfig.readSettings()
            RenderingStyles.loadStyles()
Ejemplo n.º 14
0
    def load(self):
        with QgsRuntimeProfiler.profile('Project Provider'):
            self.refreshAlgorithms()

        return True
Ejemplo n.º 15
0
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************
"""

__author__ = 'Alexander Bruy'
__date__ = 'May 2021'
__copyright__ = '(C) 2021, Alexander Bruy'

from qgis.core import QgsApplication, QgsRuntimeProfiler

with QgsRuntimeProfiler.profile('Import SAGA Provider'):
    from sagaprovider.SagaAlgorithmProvider import SagaAlgorithmProvider


class SagaProviderPlugin:
    def __init__(self):
        self.provider = SagaAlgorithmProvider()

    def initProcessing(self):
        QgsApplication.processingRegistry().addProvider(self.provider)

    def initGui(self):
        self.initProcessing()

    def unload(self):
        QgsApplication.processingRegistry().removeProvider(self.provider)
Ejemplo n.º 16
0
    QgsProcessingParameterDefinition, QgsProcessingOutputVectorLayer,
    QgsProcessingOutputRasterLayer, QgsProcessingOutputPointCloudLayer,
    QgsProcessingOutputMapLayer, QgsProcessingOutputMultipleLayers,
    QgsProcessingFeedback, QgsRuntimeProfiler)
from qgis.analysis import QgsNativeAlgorithms

import processing
from processing.core.ProcessingConfig import ProcessingConfig
from processing.gui.MessageBarProgress import MessageBarProgress
from processing.gui.RenderingStyles import RenderingStyles
from processing.gui.Postprocessing import handleAlgorithmResults
from processing.gui.AlgorithmExecutor import execute
from processing.script import ScriptUtils
from processing.tools import dataobjects

with QgsRuntimeProfiler.profile('Import QGIS Provider'):
    from processing.algs.qgis.QgisAlgorithmProvider import QgisAlgorithmProvider  # NOQA

with QgsRuntimeProfiler.profile('Import GDAL Provider'):
    from processing.algs.gdal.GdalAlgorithmProvider import GdalAlgorithmProvider  # NOQA

with QgsRuntimeProfiler.profile('Import Script Provider'):
    from processing.script.ScriptAlgorithmProvider import ScriptAlgorithmProvider  # NOQA

# should be loaded last - ensures that all dependent algorithms are available when loading models
from processing.modeler.ModelerAlgorithmProvider import ModelerAlgorithmProvider  # NOQA
from processing.modeler.ProjectProvider import ProjectProvider  # NOQA


class Processing(object):
    BASIC_PROVIDERS = []
Ejemplo n.º 17
0
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************
"""

__author__ = 'Alexander Bruy'
__date__ = 'June 2021'
__copyright__ = '(C) 2021, Alexander Bruy'


from qgis.core import QgsApplication, QgsRuntimeProfiler

with QgsRuntimeProfiler.profile('Import OTB Provider'):
    from otbprovider.OtbAlgorithmProvider import OtbAlgorithmProvider


class OtbProviderPlugin:

    def __init__(self):
        self.provider = OtbAlgorithmProvider()

    def initProcessing(self):
        QgsApplication.processingRegistry().addProvider(self.provider)

    def initGui(self):
        self.initProcessing()

    def unload(self):