mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
166 lines
6.2 KiB
Python
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")
|