Class: QgsVectorLayerUtils

class qgis.core.QgsVectorLayerUtils

Bases: sip.wrapper

Contains utility methods for working with QgsVectorLayers.

New in version 3.0:

Methods

createFeature

Creates a new feature ready for insertion into a layer.

createFeatures

Creates a set of new features ready for insertion into a layer.

createUniqueValue

Returns a new attribute value for the specified field index which is guaranteed to be unique.

createUniqueValueFromCache

Returns a new attribute value for the specified field index which is guaranteed to be unique within regard to existingValues.

duplicateFeature

Duplicates a feature and it's children (one level deep).

fieldEditabilityDependsOnFeature

Returns True if the editability of the field at index fieldIndex from layer may vary feature by feature.

fieldIsEditable

Tests whether a field is editable for a particular feature.

fieldIsReadOnly

rtype

bool

getDoubleValues

Fetches all double values from a specified field name or expression.

getFeatureDisplayString

rtype

str

getValues

Fetches all values from a specified field name or expression.

getValuesIterator

Create a feature iterator for a specified field name or expression.

guessFriendlyIdentifierField

Given a set of fields, attempts to pick the "most useful" field for user-friendly identification of features.

guessFriendlyIdentifierFieldV2

Given a set of fields, attempts to pick the "most useful" field for user-friendly identification of features.

impactsCascadeFeatures

rtype

Tuple[bool, QgsVectorLayerUtils.QgsDuplicateFeatureContext]

makeFeatureCompatible

Converts input feature to be compatible with the given layer.

makeFeaturesCompatible

Converts input features to be compatible with the given layer.

matchAttributesToFields

Matches the attributes in feature to the specified fields.

validateAttribute

Tests a feature attribute value to check whether it passes all constraints which are present on the corresponding field.

valueExists

Returns True if the specified value already exists within a field.

Attributes

IgnoreAuxiliaryLayers

class CascadedFeatureFlag

Bases: int

class CascadedFeatureFlags
class CascadedFeatureFlags(Union[QgsVectorLayerUtils.CascadedFeatureFlags, QgsVectorLayerUtils.CascadedFeatureFlag])
class CascadedFeatureFlags(QgsVectorLayerUtils.CascadedFeatureFlags)

Bases: sip.wrapper

IgnoreAuxiliaryLayers = 2
class QgsDuplicateFeatureContext

Bases: sip.wrapper

Contains mainly the QMap with QgsVectorLayer and QgsFeatureIds do list all the duplicated features

New in version 3.0.

QgsVectorLayerUtils.QgsDuplicateFeatureContext() Constructor for QgsDuplicateFeatureContext

QgsVectorLayerUtils.QgsDuplicateFeatureContext(QgsVectorLayerUtils.:py:class:.QgsDuplicateFeatureContext)

duplicatedFeatures(self, layer: QgsVectorLayer) object

Returns the duplicated features in the given layer

New in version 3.0.

Parameters

layer (QgsVectorLayer) –

Return type

object

layers(self) List[QgsVectorLayer]

Returns all the layers on which features have been duplicated

New in version 3.0.

Return type

List[QgsVectorLayer]

class QgsFeatureData

Bases: sip.wrapper

Encapsulate geometry and attributes for new features, to be passed to createFeatures

See also

createFeatures()

New in version 3.6.

QgsVectorLayerUtils.QgsFeatureData(geometry: QgsGeometry = QgsGeometry(), attributes: Dict[int, Any] = {}) Constructs a new QgsFeatureData with given geometry and attributes

QgsVectorLayerUtils.QgsFeatureData(QgsVectorLayerUtils.:py:class:.QgsFeatureData)

attributes(self) Dict[int, Any]

Returns attributes

Return type

Dict[int, Any]

geometry(self) QgsGeometry

Returns geometry

Return type

QgsGeometry

createFeature(layer: QgsVectorLayer, geometry: QgsGeometry = QgsGeometry(), attributes: Dict[int, Any] = {}, context: QgsExpressionContext = None) QgsFeature

Creates a new feature ready for insertion into a layer. Default values and constraints (e.g., unique constraints) will automatically be handled. An optional attribute map can be passed for the new feature to copy as many attribute values as possible from the map, assuming that they respect the layer’s constraints. Note that the created feature is not automatically inserted into the layer.

See also

createFeatures()

Parameters
Return type

QgsFeature

createFeatures(layer: QgsVectorLayer, featuresData: Iterable[QgsVectorLayerUtils.QgsFeatureData], context: QgsExpressionContext = None) List[QgsFeature]

Creates a set of new features ready for insertion into a layer. Default values and constraints (e.g., unique constraints) will automatically be handled. Note that the created features are not automatically inserted into the layer.

See also

createFeature()

New in version 3.6.

Parameters
Return type

List[QgsFeature]

createUniqueValue(layer: QgsVectorLayer, fieldIndex: int, seed: Any = None) Any

Returns a new attribute value for the specified field index which is guaranteed to be unique. The optional seed value can be used as a basis for generated values.

See also

valueExists()

Parameters
  • layer (QgsVectorLayer) –

  • fieldIndex (int) –

  • seed (Any = None) –

Return type

Any

createUniqueValueFromCache(layer: QgsVectorLayer, fieldIndex: int, existingValues: Iterable[Any], seed: Any = None) Any

Returns a new attribute value for the specified field index which is guaranteed to be unique within regard to existingValues. The optional seed value can be used as a basis for generated values.

New in version 3.6.

Parameters
  • layer (QgsVectorLayer) –

  • fieldIndex (int) –

  • existingValues (Iterable[Any]) –

  • seed (Any = None) –

Return type

Any

duplicateFeature(layer: QgsVectorLayer, feature: QgsFeature, project: QgsProject, maxDepth: int = 0) Tuple[QgsFeature, QgsVectorLayerUtils.QgsDuplicateFeatureContext]

Duplicates a feature and it’s children (one level deep). It calls CreateFeature, so default values and constraints (e.g., unique constraints) will automatically be handled. The duplicated feature will be automatically inserted into the layer. duplicateFeatureContext stores all the layers and the featureids of the duplicated features (incl. children) maxDepth the maximum depth to duplicate children in relations, 0 is unlimited depth (in any case, limited to 100) depth the current depth, not exposed in Python referencedLayersBranch the current branch of layers across the relations, not exposed in Python, taken by copy not reference, used to avoid infinite loop

New in version 3.0.

Parameters
Return type

Tuple[QgsFeature, QgsVectorLayerUtils.QgsDuplicateFeatureContext]

fieldEditabilityDependsOnFeature(layer: QgsVectorLayer, fieldIndex: int) bool

Returns True if the editability of the field at index fieldIndex from layer may vary feature by feature.

I.e. if the field is taken from a joined layer, the value may or may not be editable for any individual feature depending on the join’s “upsert on edit” capabilities.

New in version 3.18.

Parameters
Return type

bool

fieldIsEditable(layer: QgsVectorLayer, fieldIndex: int, feature: QgsFeature) bool

Tests whether a field is editable for a particular feature.

Return type

bool

Returns

True if the field at index fieldIndex from layer is editable, False if the field is read only.

New in version 3.10.

Parameters
fieldIsReadOnly(layer: QgsVectorLayer, fieldIndex: int) bool
Return type

bool

Returns

True if the field at index fieldIndex from layer is editable, False if the field is read only.

If this function returns True then the editability of the field may still vary feature by feature. See fieldIsEditable() to determine this on a feature by feature basis.

New in version 3.18.

Parameters
getDoubleValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = False, feedback: QgsFeedback = None) Tuple[List[float], bool, int]

Fetches all double values from a specified field name or expression. Null values or invalid expression results are skipped.

Parameters
  • layer (QgsVectorLayer) – vector layer to retrieve values from

  • fieldOrExpression (str) – field name or an expression string evaluating to a double value

  • ok – will be set to False if field or expression is invalid, otherwise True

  • selectedOnly (bool = False) – set to True to get values from selected features only

  • nullCount – optional pointer to integer to store number of null values encountered in

  • feedback (QgsFeedback = None) – optional feedback object to allow cancellation

Return type

Tuple[List[float], bool, int]

Returns

list of fetched values

See also

getValues()

New in version 3.0.

getFeatureDisplayString(layer: QgsVectorLayer, feature: QgsFeature) str
Return type

str

Returns

a descriptive string for a feature, suitable for displaying to the user. The definition is taken from the displayExpression property of layer.

New in version 3.12.

Parameters
getValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = False, feedback: QgsFeedback = None) Tuple[List[Any], bool]

Fetches all values from a specified field name or expression.

Parameters
  • layer (QgsVectorLayer) – vector layer to retrieve values from

  • fieldOrExpression (str) – field name or an expression string

  • ok – will be set to False if field or expression is invalid, otherwise True

  • selectedOnly (bool = False) – set to True to get values from selected features only

  • feedback (QgsFeedback = None) – optional feedback object to allow cancellation

Return type

Tuple[List[Any], bool]

Returns

list of fetched values

New in version 3.0.

getValuesIterator(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool) Tuple[QgsFeatureIterator, bool]

Create a feature iterator for a specified field name or expression.

Parameters
  • layer (QgsVectorLayer) – vector layer to retrieve values from

  • fieldOrExpression (str) – field name or an expression string

  • ok – will be set to False if field or expression is invalid, otherwise True

  • selectedOnly (bool) – set to True to get values from selected features only

Return type

Tuple[QgsFeatureIterator, bool]

Returns

feature iterator

New in version 3.0.

guessFriendlyIdentifierField(fields: QgsFields) str

Given a set of fields, attempts to pick the “most useful” field for user-friendly identification of features.

For instance, if a field called “name” is present, this will be returned.

Assumes that the user has organized the data with the more “interesting” field names first. As such, “name” would be selected before “oldname”, “othername”, etc.

If no friendly identifier is found, the function will fallback to the first available.

Parameters

fields (QgsFields) – list of fields to pick a friendly identifier from

Return type

str

Returns

field name

New in version 3.18.

guessFriendlyIdentifierFieldV2(fields: QgsFields) Tuple[str, bool]

Given a set of fields, attempts to pick the “most useful” field for user-friendly identification of features.

For instance, if a field called “name” is present, this will be returned.

Assumes that the user has organized the data with the more “interesting” field names first. As such, “name” would be selected before “oldname”, “othername”, etc.

If no friendly identifier is found, the function will fallback to the first available.

Parameters

fields (QgsFields) – list of fields to pick a friendly identifier from

Return type

Tuple[str, bool]

Returns

  • field name

  • foundFriendly: set to True if the returned field name is a friendly identifier

New in version 3.22.

impactsCascadeFeatures(layer: QgsVectorLayer, fids: object, project: QgsProject, flags: Union[QgsVectorLayerUtils.CascadedFeatureFlags, QgsVectorLayerUtils.CascadedFeatureFlag] = QgsVectorLayerUtils.CascadedFeatureFlags()) Tuple[bool, QgsVectorLayerUtils.QgsDuplicateFeatureContext]
Return type

Tuple[bool, QgsVectorLayerUtils.QgsDuplicateFeatureContext]

Returns

True if at least one feature of the fids on layer is connected as parent in at least one composition relation of the project or contains joins, where cascade delete is set. Details about cascading effects will be written to context.

New in version 3.14.

Parameters
makeFeatureCompatible(feature: QgsFeature, layer: QgsVectorLayer, sinkFlags: Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = QgsFeatureSink.SinkFlags()) List[QgsFeature]

Converts input feature to be compatible with the given layer.

This function returns a new list of transformed features compatible with the input layer, note that the number of features returned might be greater than one when converting a multi part geometry to single part

The following operations will be performed to convert the input features:

  • convert single geometries to multi part

  • drop additional attributes

  • drop geometry if layer is geometry-less

  • add missing attribute fields

  • add back M/Z values (initialized to 0)

  • drop Z/M

  • convert multi part geometries to single part

Optionally, sinkFlags can be specified to further refine the compatibility logic.

New in version 3.4.

Parameters
Return type

List[QgsFeature]

makeFeaturesCompatible(features: Iterable[QgsFeature], layer: QgsVectorLayer, sinkFlags: Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = QgsFeatureSink.SinkFlags()) List[QgsFeature]

Converts input features to be compatible with the given layer.

This function returns a new list of transformed features compatible with the input layer, note that the number of features returned might be greater than the number of input features.

The following operations will be performed to convert the input features:

  • convert single geometries to multi part

  • drop additional attributes

  • drop geometry if layer is geometry-less

  • add missing attribute fields

  • add back M/Z values (initialized to 0)

  • drop Z/M

  • convert multi part geometries to single part

Optionally, sinkFlags can be specified to further refine the compatibility logic.

New in version 3.4.

Parameters
Return type

List[QgsFeature]

matchAttributesToFields(feature: QgsFeature, fields: QgsFields)

Matches the attributes in feature to the specified fields.

This causes the attributes contained within the given feature to be rearranged (or in some cases dropped) in order to match the fields and order indicated by fields.

The exact behavior depends on whether or not feature has a valid fields container set (see QgsFeature.fields()). If a fields container is set, then the names of the feature’s fields are matched to fields. In this case attributes from feature will be rearranged or dropped in order to match the field names from fields.

If the feature does not have a valid fields container set, then the feature’s attributes are simply truncated to match the number of fields present in fields (or if less attributes are present in feature than in fields, the feature’s attributes are padded with NULL values to match the required length). Finally, the feature’s fields are set to fields.

New in version 3.4.

Parameters
validateAttribute(layer: QgsVectorLayer, feature: QgsFeature, attributeIndex: int, strength: QgsFieldConstraints.ConstraintStrength = QgsFieldConstraints.ConstraintStrengthNotSet, origin: QgsFieldConstraints.ConstraintOrigin = QgsFieldConstraints.ConstraintOriginNotSet) Tuple[bool, List[str]]

Tests a feature attribute value to check whether it passes all constraints which are present on the corresponding field. Returns True if the attribute value is valid for the field. Any constraint failures will be reported in the errors argument. If the strength or origin parameter is set then only constraints with a matching strength/origin will be checked.

Parameters
  • layer (QgsVectorLayer) –

  • feature (QgsFeature) –

  • attributeIndex (int) –

  • strength (QgsFieldConstraints.ConstraintStrength = QgsFieldConstraints.ConstraintStrengthNotSet) –

  • origin (QgsFieldConstraints.ConstraintOrigin = QgsFieldConstraints.ConstraintOriginNotSet) –

Return type

Tuple[bool, List[str]]

valueExists(layer: QgsVectorLayer, fieldIndex: int, value: Any, ignoreIds: object = QgsFeatureIds()) bool

Returns True if the specified value already exists within a field. This method can be used to test for uniqueness of values inside a layer’s attributes. An optional list of ignored feature IDs can be provided, if so, any features with IDs within this list are ignored when testing for existence of the value.

Parameters
  • layer (QgsVectorLayer) –

  • fieldIndex (int) –

  • value (Any) –

  • ignoreIds (object = QgsFeatureIds()) –

Return type

bool