Class: QgsProcessingUtils

class qgis.core.QgsProcessingUtils

Bases: sip.wrapper

Utility functions for use with processing classes.

New in version 3.0:

Enums

LayerHint

Bases: enum.IntEnum

Methods

combineFields

Combines two field lists, avoiding duplicate field names (in a case-insensitive manner).

combineLayerExtents

Combines the extent of several map layers.

compatibleAnnotationLayers

Returns a list of annotation layers from a project which are compatible with the processing framework.

compatibleLayers

Returns a list of map layers from a project which are compatible with the processing framework.

compatibleMeshLayers

Returns a list of mesh layers from a project which are compatible with the processing framework.

compatiblePluginLayers

Returns a list of plugin layers from a project which are compatible with the processing framework.

compatiblePointCloudLayers

Returns a list of point cloud layers from a project which are compatible with the processing framework.

compatibleRasterLayers

Returns a list of raster layers from a project which are compatible with the processing framework.

compatibleVectorLayers

Returns a list of vector layers from a project which are compatible with the processing framework.

convertToCompatibleFormat

Converts a source vector layer to a file path of a vector layer of compatible format.

convertToCompatibleFormatAndLayerName

Converts a source vector layer to a file path and layer name of a vector layer of compatible format.

createFeatureSink

Creates a feature sink ready for adding features.

decodeProviderKeyAndUri

Decodes a provider key and layer uri from an encoded string, for use with encodeProviderKeyAndUri()

defaultPointCloudExtension

Returns the default point cloud extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

defaultRasterExtension

Returns the default raster extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

defaultVectorExtension

Returns the default vector extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

encodeProviderKeyAndUri

Encodes a provider key and layer uri to a single string, for use with decodeProviderKeyAndUri()

fieldNamesToIndices

Returns a list of field indices parsed from the given list of field names.

formatHelpMapAsHtml

Returns a HTML formatted version of the help text encoded in a variant map for a specified algorithm.

generateIteratingDestination

Converts an input parameter value for use in source iterating mode, where one individual sink is created per input feature.

generateTempFilename

Returns a temporary filename for a given file, putting it into a temporary folder (creating that folder in the process), but not changing the basename.

indicesToFields

Returns a subset of fields based on the indices of desired fields.

mapLayerFromString

Interprets a string as a map layer within the supplied context.

normalizeLayerSource

Normalizes a layer source string for safe comparison across different operating system environments.

removePointerValuesFromMap

Removes any raw pointer values from an input map, replacing them with appropriate string values where possible.

resolveDefaultEncoding

Returns the default encoding.

stringToPythonLiteral

Converts a string to a Python string literal.

tempFolder

Returns a session specific processing temporary folder for use in processing algorithms.

variantToCrs

Converts a variant value to a coordinate reference system.

variantToPythonLiteral

Converts a variant to a Python literal.

variantToSource

Converts a variant value to a new feature source.

class LayerHint(value)

Bases: enum.IntEnum

Layer type hints.

New in version 3.4.

  • UnknownType: Unknown layer type

  • Vector: Vector layer type

  • Raster: Raster layer type

  • Mesh: Mesh layer type, since QGIS 3.6

  • PointCloud: Point cloud layer type, since QGIS 3.22

  • Annotation: Annotation layer type, since QGIS 3.22

combineFields(fieldsA: QgsFields, fieldsB: QgsFields, fieldsBPrefix: str = '') QgsFields

Combines two field lists, avoiding duplicate field names (in a case-insensitive manner).

Duplicate field names will be altered to “name_2”, “name_3”, etc, finding the first non-duplicate name.

Note

Some output file formats (e.g. shapefiles) have restrictions on the maximum length of field names, so be aware that the results of calling this method may be truncated when saving to these formats.

Parameters:
Return type:

QgsFields

combineLayerExtents(layers: Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext) QgsRectangle

Combines the extent of several map layers. If specified, the target crs will be used to transform the layer’s extent to the desired output reference system using the specified context.

New in version 3.8.

combineLayerExtents(layers: Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem = QgsCoordinateReferenceSystem()) -> QgsRectangle Combines the extent of several map layers. If specified, the target crs will be used to transform the layer’s extent to the desired output reference system.

Deprecated since version Use: version with QgsProcessingContext argument instead

Parameters:
Return type:

QgsRectangle

compatibleAnnotationLayers(project: QgsProject, sort: bool = True) List[QgsAnnotationLayer]

Returns a list of annotation layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

New in version 3.22.

Parameters:
Return type:

List[QgsAnnotationLayer]

compatibleLayers(project: QgsProject, sort: bool = True) List[QgsMapLayer]

Returns a list of map layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

Parameters:
Return type:

List[QgsMapLayer]

compatibleMeshLayers(project: QgsProject, sort: bool = True) List[QgsMeshLayer]

Returns a list of mesh layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

New in version 3.6.

Parameters:
Return type:

List[QgsMeshLayer]

compatiblePluginLayers(project: QgsProject, sort: bool = True) List[QgsPluginLayer]

Returns a list of plugin layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

New in version 3.22.

Parameters:
Return type:

List[QgsPluginLayer]

compatiblePointCloudLayers(project: QgsProject, sort: bool = True) List[QgsPointCloudLayer]

Returns a list of point cloud layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

New in version 3.22.

Parameters:
Return type:

List[QgsPointCloudLayer]

compatibleRasterLayers(project: QgsProject, sort: bool = True) List[QgsRasterLayer]

Returns a list of raster layers from a project which are compatible with the processing framework.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

Parameters:
Return type:

List[QgsRasterLayer]

compatibleVectorLayers(project: QgsProject, sourceTypes: Iterable[int] = [], sort: bool = True) List[QgsVectorLayer]

Returns a list of vector layers from a project which are compatible with the processing framework.

The sourceTypes list should be filled with a list of QgsProcessing.SourceType values. If the sourceTypes list is non-empty then the layers will be sorted so that only layers with the specified source type included in the list will be returned. Leaving the sourceTypes list empty will cause all vector layers, regardless of their geometry type, to be returned.

If the sort argument is True then the layers will be sorted by their QgsMapLayer.name() value.

Parameters:
  • project (QgsProject) –

  • sourceTypes (Iterable[int] = []) –

  • sort (bool = True) –

Return type:

List[QgsVectorLayer]

convertToCompatibleFormat(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = -1) str

Converts a source vector layer to a file path of a vector layer of compatible format.

If the specified layer is not of the format listed in the compatibleFormats argument, then the layer will first be exported to a compatible format in a temporary location using baseName. The function will then return the path to that temporary file.

compatibleFormats should consist entirely of lowercase file extensions, e.g. ‘shp’.

The preferredFormat argument is used to specify to desired file extension to use when a temporary layer export is required. This defaults to shapefiles.

The featureLimit argument can be used to specify a limit on the number of features read from the layer.

When an algorithm is capable of handling multi-layer input files (such as Geopackage), it is preferable to use convertToCompatibleFormatAndLayerName() which may avoid conversion in more situations.

Parameters:
Return type:

str

convertToCompatibleFormatAndLayerName(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = -1) Tuple[str, str]

Converts a source vector layer to a file path and layer name of a vector layer of compatible format.

If the specified layer is not of the format listed in the compatibleFormats argument, then the layer will first be exported to a compatible format in a temporary location using baseName. The function will then return the path to that temporary file.

compatibleFormats should consist entirely of lowercase file extensions, e.g. ‘shp’.

The featureLimit argument can be used to specify a limit on the number of features read from the layer.

The preferredFormat argument is used to specify to desired file extension to use when a temporary layer export is required. This defaults to shapefiles.

This method should be preferred over convertToCompatibleFormat() when an algorithm is able to correctly handle files with multiple layers. Unlike convertToCompatibleFormat(), it will not force a conversion in this case and will return the target layer name in the layerName argument.

Parameters:
  • layer (QgsVectorLayer) – source layer to convert (if required)

  • selectedFeaturesOnly (bool) – True if only selected features from the layer should be used

  • baseName (str) – base file name for converted layer, if required

  • compatibleFormats (Iterable[str]) – a list of lowercase file extensions compatible with the algorithm

  • preferredFormat (str) – preferred format extension to use if conversion if required

  • context (QgsProcessingContext) – processing context

  • feedback (QgsProcessingFeedback) – feedback object

  • featureLimit (int = -1) – can be used to place a limit on the maximum number of features read from the layer

Return type:

Tuple[str, str]

Returns:

  • path to source layer, or nearly converted compatible layer

  • layerName: will be set to the target layer name for multi-layer sources (e.g. Geopackage)

New in version 3.10.

createFeatureSink(destination: str, context: QgsProcessingContext, fields: QgsFields, geometryType: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem, createOptions: Dict[str, Any] = {}) Tuple[QgsFeatureSink, str]

Creates a feature sink ready for adding features. The destination specifies a destination URI for the resultant layer. It may be updated in place to reflect the actual destination for the layer.

Sink parameters such as desired fields, geometryType and crs must be specified.

The createOptions map can be used to specify additional sink creation options, which are passed to the underlying provider when creating new layers. Known options also include ‘fileEncoding’, which is used to specify a file encoding to use for created files. If ‘fileEncoding’ is not specified, the default encoding from the context will be used.

If a layer is created for the feature sink, the layer will automatically be added to the context’s temporary layer store.

Note

this version of the createFeatureSink() function has an API designed around use from the SIP bindings. c++ code should call the other createFeatureSink() version.

Note

available in Python bindings as createFeatureSink()

Parameters:
Return type:

Tuple[QgsFeatureSink, str]

decodeProviderKeyAndUri(string: str) Tuple[bool, str, str]

Decodes a provider key and layer uri from an encoded string, for use with encodeProviderKeyAndUri()

Parameters:

string (str) – encoded string, as returned by encodeProviderKeyAndUri()

Return type:

Tuple[bool, str, str]

Returns:

  • True if string was successfully decoded

  • providerKey: ID key for corresponding data provider

  • uri: decoded layer uri

New in version 3.14.

defaultPointCloudExtension() str

Returns the default point cloud extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

This method returns a fallback value of “las”.

New in version 3.24.

Return type:

str

defaultRasterExtension() str

Returns the default raster extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

This method returns the user-set default extension from the processing settings, or a fallback value of “tif”.

New in version 3.10.

Return type:

str

defaultVectorExtension() str

Returns the default vector extension to use, in the absence of all other constraints (e.g. provider based support for extensions).

This method returns the user-set default extension from the processing settings, or a fallback value of “gpkg”.

New in version 3.10.

Return type:

str

encodeProviderKeyAndUri(providerKey: str, uri: str) str

Encodes a provider key and layer uri to a single string, for use with decodeProviderKeyAndUri()

New in version 3.14.

Parameters:
  • providerKey (str) –

  • uri (str) –

Return type:

str

fieldNamesToIndices(fieldNames: Iterable[str], fields: QgsFields) List[int]

Returns a list of field indices parsed from the given list of field names. Unknown field names are ignored. If the list of field names is empty, it is assumed that all fields are required.

New in version 3.2.

Parameters:
  • fieldNames (Iterable[str]) –

  • fields (QgsFields) –

Return type:

List[int]

formatHelpMapAsHtml(map: Dict[str, Any], algorithm: QgsProcessingAlgorithm) str

Returns a HTML formatted version of the help text encoded in a variant map for a specified algorithm.

Parameters:
Return type:

str

generateIteratingDestination(input: Any, id: Any, context: QgsProcessingContext) Any

Converts an input parameter value for use in source iterating mode, where one individual sink is created per input feature. The id parameter represents the unique ID for this output, which is embedded into the resulting parameter value.

Parameters:
Return type:

Any

generateTempFilename(basename: str) str

Returns a temporary filename for a given file, putting it into a temporary folder (creating that folder in the process), but not changing the basename.

See also

tempFolder()

Parameters:

basename (str) –

Return type:

str

indicesToFields(indices: Iterable[int], fields: QgsFields) QgsFields

Returns a subset of fields based on the indices of desired fields.

New in version 3.2.

Parameters:
  • indices (Iterable[int]) –

  • fields (QgsFields) –

Return type:

QgsFields

mapLayerFromString(string: str, context: QgsProcessingContext, allowLoadingNewLayers: bool = True, typeHint: QgsProcessingUtils.LayerHint = QgsProcessingUtils.LayerHint.UnknownType) QgsMapLayer

Interprets a string as a map layer within the supplied context.

The method will attempt to load a layer matching the passed string. E.g. if the string matches a layer ID or name within the context’s project or temporary layer store then this layer will be returned. If the string is a file path and allowLoadingNewLayers is True, then the layer at this file path will be loaded and added to the context’s temporary layer store. Ownership of the layer remains with the context or the context’s current project.

The typeHint can be used to dictate the type of map layer expected.

Parameters:
  • string (str) –

  • context (QgsProcessingContext) –

  • allowLoadingNewLayers (bool = True) –

  • typeHint (QgsProcessingUtils.LayerHint = QgsProcessingUtils.LayerHint.UnknownType) –

Return type:

QgsMapLayer

normalizeLayerSource(source: str) str

Normalizes a layer source string for safe comparison across different operating system environments.

Parameters:

source (str) –

Return type:

str

removePointerValuesFromMap(map: Dict[str, Any]) Dict[str, Any]

Removes any raw pointer values from an input map, replacing them with appropriate string values where possible.

New in version 3.26.

Parameters:

map (Dict[str) –

Return type:

Dict[str, Any]

resolveDefaultEncoding(defaultEncoding: str = '') str

Returns the default encoding.

The default encoding could be the one from “/Processing/encoding” or when it’s not an allowed encoding name like “System”, the default encoding system (mostly UTF-8 on Unix-like, windows-1252 on Windows).

New in version 3.28.

Parameters:

defaultEncoding (str = '') –

Return type:

str

stringToPythonLiteral(string: str) str

Converts a string to a Python string literal. E.g. by replacing ‘ with '.

Parameters:

string (str) –

Return type:

str

tempFolder() str

Returns a session specific processing temporary folder for use in processing algorithms.

Return type:

str

variantToCrs(value: Any, context: QgsProcessingContext, fallbackValue: Any = None) QgsCoordinateReferenceSystem

Converts a variant value to a coordinate reference system.

The optional fallbackValue can be used to specify a “default” value which is used if value cannot be successfully converted to a CRS.

New in version 3.12.

Parameters:
Return type:

QgsCoordinateReferenceSystem

variantToPythonLiteral(value: Any) str

Converts a variant to a Python literal.

New in version 3.6.

Parameters:

value (Any) –

Return type:

str

variantToSource(value: Any, context: QgsProcessingContext, fallbackValue: Any = None) QgsProcessingFeatureSource

Converts a variant value to a new feature source.

Sources will either be taken from context’s active project, or loaded from external sources and stored temporarily in the context.

The optional fallbackValue can be used to specify a “default” value which is used if value cannot be successfully converted to a source.

This function creates a new object and the caller takes responsibility for deleting the returned object.

Parameters:
Return type:

QgsProcessingFeatureSource