QGIS/python/processing/__init__.py
2024-11-29 15:38:02 +01:00

166 lines
6.2 KiB
Python

###########################################################################
# __init__.py
# ---------------------
# Date : November 2018
# Copyright : (C) 2018 by Nathan Woodrow
# Email : woodrow dot nathan at gmail dot com
###########################################################################
# #
# 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. #
# #
###########################################################################
"""
QGIS Processing Python additions.
This module contains stable API adding additional Python specific functionality
to the core QGIS c++ Processing classes.
"""
__author__ = "Nathan Woodrow"
__date__ = "November 2018"
__copyright__ = "(C) 2018, Nathan Woodrow"
import typing as _typing
from qgis.core import QgsProcessingAlgorithm as _QgsProcessingAlgorithm
from qgis.core import QgsProcessingFeedback as _QgsProcessingFeedback
from qgis.core import QgsProcessingContext as _QgsProcessingContext
from .algfactory import ProcessingAlgFactory
alg = ProcessingAlgFactory()
# "Forward declare" functions which will be patched in when the Processing plugin loads:
def algorithmHelp(id: str) -> None:
"""
Prints algorithm parameters with their types. Also
provides information about parameters and outputs,
and their acceptable values.
:param id: An algorithm's ID, eg "native:buffer"
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")
def run(
algOrName: _typing.Union[str, _QgsProcessingAlgorithm],
parameters: _typing.Dict[str, object],
onFinish: _typing.Optional[_typing.Callable] = None,
feedback: _typing.Optional[_QgsProcessingFeedback] = None,
context: _typing.Optional[_QgsProcessingContext] = None,
is_child_algorithm: bool = False,
) -> _typing.Union[_typing.Dict, None]:
"""
Executes given algorithm and returns its outputs as dictionary object.
:param algOrName: Either an instance of an algorithm, or an algorithm's ID
:param parameters: Algorithm parameters dictionary
:param onFinish: optional function to run after the algorithm has completed
:param feedback: Processing feedback object
:param context: Processing context object
:param is_child_algorithm: Set to True if this algorithm is being run as part of a larger algorithm,
i.e. it is a sub-part of an algorithm which calls other Processing algorithms.
:return: algorithm results as a dictionary, or None if execution failed
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")
def runAndLoadResults(
algOrName: _typing.Union[str, _QgsProcessingAlgorithm],
parameters: _typing.Dict[str, object],
feedback: _typing.Optional[_QgsProcessingFeedback] = None,
context: _typing.Optional[_QgsProcessingContext] = None,
) -> _typing.Union[_typing.Dict, None]:
"""
Executes given algorithm and load its results into the current QGIS project
when possible.
:param algOrName: Either an instance of an algorithm, or an algorithm's ID
:param parameters: Algorithm parameters dictionary
:param feedback: Processing feedback object
:param context: Processing context object
:return: algorithm results as a dictionary, or None if execution failed
:rtype: Union[dict, None]
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")
def createAlgorithmDialog(
algOrName: _typing.Union[str, _QgsProcessingAlgorithm],
parameters: _typing.Dict[str, object] = {},
) -> _typing.Union[str, _QgsProcessingAlgorithm]:
"""
Creates and returns an algorithm dialog for the specified algorithm, prepopulated
with a given set of parameters. It is the caller's responsibility to execute
and delete this dialog.
:param algOrName: Either an instance of an algorithm, or an algorithm's ID
:param parameters: Initial algorithm parameters dictionary
:return: algorithm results as a dictionary, or None if execution failed
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")
def execAlgorithmDialog(
algOrName: _typing.Union[str, _QgsProcessingAlgorithm],
parameters: _typing.Dict[str, object] = {},
) -> _typing.Union[_typing.Dict, None]:
"""
Executes an algorithm dialog for the specified algorithm, prepopulated
with a given set of parameters.
:param algOrName: Either an instance of an algorithm, or an algorithm's ID
:param parameters: Initial algorithm parameters dictionary
:return: algorithm results as a dictionary, or None if execution failed
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")
def createContext(
feedback: _typing.Optional[_QgsProcessingFeedback] = None,
) -> _QgsProcessingContext:
"""
Creates a default processing context
:param feedback: Optional existing QgsProcessingFeedback object, or None to use a default feedback object
:type feedback: Optional[QgsProcessingFeedback]
:returns: New QgsProcessingContext object
:raises: QgsNotSupportedException if the Processing plugin has not been loaded
"""
from qgis.core import QgsNotSupportedException
raise QgsNotSupportedException("Processing plugin has not been loaded")