mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			166 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			6.3 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")
 |