Class: QgsVectorLayer

Represents a vector layer which manages a vector based dataset.

The QgsVectorLayer is instantiated by specifying the name of a data provider, such as postgres or wfs, and url defining the specific data set to connect to. The vector layer constructor in turn instantiates a QgsVectorDataProvider subclass corresponding to the provider type, and passes it the url. The data provider connects to the data source.

The QgsVectorLayer provides a common interface to the different data types. It also manages editing transactions by buffering layer edits until they are written to the underlying QgsVectorDataProvider. Before edits can be made a call to startEditing() is required. Any edits made to a QgsVectorLayer are then held in memory only, and are not written to the underlying QgsVectorDataProvider until a call to commitChanges() is made. Buffered edits can be rolled back and discarded without altering the underlying provider by calling rollBack().

Sample usage of the QgsVectorLayer class:

uri = "point?crs=epsg:4326&field=id:integer"
scratchLayer = QgsVectorLayer(uri, "Scratch point layer",  "memory")

The main data providers supported by QGIS are listed below.

Vector data providers

Memory data providerType (memory)

The memory data provider is used to construct in memory data, for example scratch data or data generated from spatial operations such as contouring. There is no inherent persistent storage of the data. The data source uri is constructed. The url specifies the geometry type (“point”, “linestring”, “polygon”, “multipoint”,”multilinestring”,”multipolygon”), optionally followed by url parameters as follows:

  • crs=definition Defines the coordinate reference system to use for the layer. definition is any string accepted by QgsCoordinateReferenceSystem.createFromString()

  • index=yes Specifies that the layer will be constructed with a spatial index

  • field=name:type(length,precision) Defines an attribute of the layer. Multiple field parameters can be added to the data provider definition. type is one of “integer”, “double”, “string”.

An example url is “Point?crs=epsg:4326&field=id:integer&field=name:string(20)&index=yes”

Since QGIS 3.4 when closing a project, the application shows a warning about potential data loss if there are any non-empty memory layers present. If your memory layer should not trigger such warning, it is possible to suppress that by setting the following custom variable:

layer.setCustomProperty("skipMemoryLayersCheck", 1)

OGR data provider (ogr)

Accesses data using the OGR drivers (https://gdal.org/drivers/vector/index.html). The url is the OGR connection string. A wide variety of data formats can be accessed using this driver, including file based formats used by many GIS systems, database formats, and web services. Some of these formats are also supported by custom data providers listed below.

SpatiaLite data provider (spatialite)

Access data in a SpatiaLite database. The url defines the connection parameters, table, geometry column, and other attributes. The url can be constructed using the QgsDataSourceUri class.

PostgreSQL data provider (postgres)

Connects to a PostgreSQL database. The url defines the connection parameters, table, geometry column, and other attributes. The url can be constructed using the QgsDataSourceUri class.

Microsoft SQL server data provider (mssql)

Connects to a Microsoft SQL server database. The url defines the connection parameters, table, geometry column, and other attributes. The url can be constructed using the QgsDataSourceUri class.

WFS (web feature service) data provider (wfs)

Used to access data provided by a web feature service.

The url can be a HTTP url to a WFS server (legacy, e.g. http://foobar/wfs?TYPENAME=xxx&SRSNAME=yyy[&FILTER=zzz]), or a URI constructed using the QgsDataSourceUri class with the following parameters (note that parameter keys are case sensitive):

  • url=string (mandatory): HTTP url to a WFS server endpoint. e.g http://foobar/wfs

  • typename=string (mandatory): WFS typename

  • srsname=string (recommended): SRS like ‘EPSG:XXXX’

  • username=string

  • password=string

  • authcfg=string

  • version=auto/1.0.0/1.1.0/2.0.0

  • sql=string: full SELECT SQL statement with optional WHERE, ORDER BY and possibly with JOIN if supported on server

  • filter=string: QGIS expression or OGC/FES filter

  • restrictToRequestBBOX=1: to download only features in the view extent (or more generally in the bounding box of the feature iterator)

  • pageSize=number: number of features to retrieve in a single request (WFS 2)

  • maxNumFeatures=number: maximum number of features to retrieve (possibly across several multiple paging requests)

  • IgnoreAxisOrientation=1: to ignore EPSG axis order for WFS 1.1 or 2.0

  • InvertAxisOrientation=1: to invert axis order

  • hideDownloadProgressDialog=1: to hide the download progress dialog

  • featureMode=default/simpleFeatures/complexFeatures (QGIS >= 3.44)

The ‘filter’ key value can either be a QGIS expression or an OGC XML filter. If the value is set to a QGIS expression the driver will turn it into OGC XML filter before passing it to the WFS server. Beware the QGIS expression filter only supports” =, !=, <, >, <=, >=, AND, OR, NOT, LIKE, IS NULL” attribute operators, “BBOX, Disjoint, Intersects, Touches, Crosses, Contains, Overlaps, Within” spatial binary operators and the QGIS local “geomFromWKT, geomFromGML” geometry constructor functions.

Also note:

  • You can use various functions available in the QGIS Expression list, however the function must exist server side and have the same name and arguments to work.

  • Use the special @geometry parameter to provide the layer geometry column as input into the spatial binary operators e.g intersects(@geometry, geomFromWKT('POINT (5 6)'))

OGC API Features data provider (oapif)

Used to access data provided by a OGC API - Features server.

The URI should be constructed using the QgsDataSourceUri class with the following parameters:

  • url=string (mandatory): HTTP url to a OGC API - Features landing page.

  • typename=string (mandatory): Collection id

  • username=string

  • password=string

  • authcfg=string

  • filter=string: QGIS expression (only datetime filtering is forwarded to the server)

  • restrictToRequestBBOX=1: to download only features in the view extent (or more generally in the bounding box of the feature iterator)

  • pageSize=number: number of features to retrieve in a single request

  • maxNumFeatures=number: maximum number of features to retrieve (possibly across several multiple paging requests)

  • hideDownloadProgressDialog=1: to hide the download progress dialog.

Delimited text file data provider (delimitedtext)

Accesses data in a delimited text file, for example CSV files generated by spreadsheets. The contents of the file are split into columns based on specified delimiter characters. Each record may be represented spatially either by an X and Y coordinate column, or by a WKT (well known text) formatted columns.

The url defines the filename, the formatting options (how the text in the file is divided into data fields, and which fields contain the X,Y coordinates or WKT text definition. The options are specified as url query items.

At its simplest the url can just be the filename, in which case it will be loaded as a CSV formatted file.

The url may include the following items:

  • encoding=UTF-8

Defines the character encoding in the file. The default is UTF-8. To use the default encoding for the operating system use “System”.

  • type=(csv|regexp|whitespace|plain)

Defines the algorithm used to split records into columns. Records are defined by new lines, except for csv format files for which quoted fields may span multiple records. The default type is csv.

  • “csv” splits the file based on three sets of characters: delimiter characters, quote characters, and escape characters. Delimiter characters mark the end of a field. Quote characters enclose a field which can contain delimiter characters, and newlines. Escape characters cause the following character to be treated literally (including delimiter, quote, and newline characters). Escape and quote characters must be different from delimiter characters. Escape characters that are also quote characters are treated specially - they can only escape themselves within quotes. Elsewhere they are treated as quote characters. The defaults for delimiter, quote, and escape are ‘,’, ‘”’, ‘”’.

  • “regexp” splits each record using a regular expression (see QRegularExpression documentation for details).

  • “whitespace” splits each record based on whitespace (on or more whitespace characters. Leading whitespace in the record is ignored.

  • “plain” is provided for backwards compatibility. It is equivalent to CSV except that the default quote characters are single and double quotes, and there is no escape characters.

  • delimiter=characters

Defines the delimiter characters used for csv and plain type files, or the regular expression for regexp type files. It is a literal string of characters except that “t” may be used to represent a tab character.

  • quote=characters

Defines the characters that are used as quote characters for csv and plain type files.

  • escape=characters

Defines the characters used to escape delimiter, quote, and newline characters.

  • skipLines=n

Defines the number of lines to ignore at the beginning of the file (default 0)

  • useHeader=(yes|no)

Defines whether the first record in the file (after skipped lines) contains column names (default yes)

  • trimFields=(yes|no)

If yes then leading and trailing whitespace will be removed from fields

  • skipEmptyFields=(yes|no)

If yes then empty fields will be discarded (equivalent to concatenating consecutive delimiters)

  • maxFields=#

Specifies the maximum number of fields to load for each record. Additional fields will be discarded. Default is 0 - load all fields.

  • decimalPoint=c

Defines a character that is used as a decimal point in the numeric columns The default is ‘.’.

  • xField=column yField=column

Defines the name of the columns holding the x and y coordinates for XY point geometries. If the useHeader is no (ie there are no column names), then this is the column number (with the first column as 1).

  • xyDms=(yes|no)

If yes then the X and Y coordinates are interpreted as degrees/minutes/seconds format (fairly permissively), or degree/minutes format.

  • wktField=column

Defines the name of the columns holding the WKT geometry definition for WKT geometries. If the useHeader is no (ie there are no column names), then this is the column number (with the first column as 1).

  • geomType=(point|line|polygon|none)

Defines the geometry type for WKT type geometries. QGIS will only display one type of geometry for the layer - any others will be ignored when the file is loaded. By default the provider uses the type of the first geometry in the file. Use geomType to override this type.

geomType can also be set to none, in which case the layer is loaded without geometries.

  • subset=expression

Defines an expression that will identify a subset of records to display

  • crs=crsstring

Defines the coordinate reference system used for the layer. This can be any string accepted by QgsCoordinateReferenceSystem.createFromString()

  • subsetIndex=(yes|no)

Determines whether the provider generates an index to improve the efficiency of subsets. The default is yes

  • spatialIndex=(yes|no)

Determines whether the provider generates a spatial index. The default is no.

  • watchFile=(yes|no)

Defines whether the file will be monitored for changes. The default is to monitor for changes.

  • quiet

Errors encountered loading the file will not be reported in a user dialog if quiet is included (They will still be shown in the output log).

GPX data provider (gpx)

Provider reads tracks, routes, and waypoints from a GPX file. The url defines the name of the file, and the type of data to retrieve from it (“track”, “route”, or “waypoint”).

An example url is “/home/user/data/holiday.gpx?type=route”

Grass data provider (grass)

Provider to display vector data in a GRASS GIS layer.

Class Hierarchy

Inheritance diagram of qgis.core.QgsVectorLayer

Base classes

QgsMapLayer

Base class for all map layer types.

QObject

QgsExpressionContextGenerator

Abstract interface for generating an expression context.

QgsExpressionContextScopeGenerator

Abstract interface for generating an expression context scope.

QgsFeatureSink

An interface for objects which accept features via addFeature(s) methods.

QgsFeatureSource

An interface for objects which provide features via a getFeatures method.

QgsAbstractProfileSource

Interface for classes which can generate elevation profiles.

Subclasses

QgsAuxiliaryLayer

Allows managing the auxiliary storage for a vector layer.

Enums

EditResult

alias of VectorEditResult

SelectBehavior

Specifies how a selection should be applied.

VertexMarkerType

Editing vertex markers, used for showing vertices during a edit operation.

Abstract Methods

clone

Returns a new instance equivalent to this one.

Methods

actions

Returns all layer actions defined on this layer.

addAttribute

Add an attribute field (but does not commit it) returns True if the field was added

addCurvedPart

Adds a new ring to a multipart feature.

addCurvedRing

Adds a ring to polygon/multipolygon features (takes ownership)

addExpressionField

Add a new field which is calculated by the expression specified

addFeatureRendererGenerator

Adds a new feature renderer generator to the layer.

addJoin

Joins another vector layer to this layer

addPart

Adds a new part polygon to a multipart feature

addPartV2

Adds a new part polygon to a multipart feature

addRing

Adds a ring to polygon/multipolygon features

addTopologicalPoints

Adds topological points for every vertex of the geometry.

aggregate

Calculates an aggregated value from the layer's features.

attributeAlias

Returns the alias of an attribute name or a null string if there is no alias.

attributeAliases

Returns a map of field name to attribute alias

attributeDisplayName

Convenience function that returns the attribute alias if defined or the field name else

attributeList

Returns list of attribute indexes.

attributeTableConfig

Returns the attribute table configuration object.

auxiliaryLayer

Returns the current auxiliary layer.

beginEditCommand

Create edit command for undo/redo operations

boundingBoxOfSelected

Returns the bounding box of the selected features.

capabilitiesString

Capabilities for this layer, comma separated and translated.

changeAttributeValue

Changes an attribute value for a feature (but does not immediately commit the changes).

changeAttributeValues

Changes attributes' values for a feature (but does not immediately commit the changes).

changeGeometry

Changes a feature's geometry within the layer's edit buffer (but does not immediately commit the changes).

commitChanges

Attempts to commit to the underlying data provider any buffered changes made since the last to call to startEditing().

commitErrors

Returns a list containing any error messages generated when attempting to commit changes to the layer.

conditionalStyles

Returns the conditional styles that are set for this layer.

constraintDescription

Returns the descriptive name for the constraint expression for a specified field index.

constraintExpression

Returns the constraint expression for for a specified field index, if set.

countSymbolFeatures

Count features for symbols.

dataComment

Returns a description for this layer as defined in the data provider.

defaultValue

Returns the calculated default value for the specified field index.

defaultValueDefinition

Returns the definition of the expression used when calculating the default value for a field.

deleteAttributes

Deletes a list of attribute fields (but does not commit it)

deleteFeature

Deletes a feature from the layer (but does not commit it).

deleteFeatures

Deletes a set of features from the layer (but does not commit it)

deleteSelectedFeatures

Deletes the selected features

deleteVertex

Deletes a vertex from a feature.

deselect

Deselects feature by its ID

destroyEditCommand

Destroy active command and reverts all changes in it

diagramLayerSettings

diagramRenderer

diagramsEnabled

Returns whether the layer contains diagrams which are enabled and should be drawn.

displayExpression

Returns the preview expression, used to create a human readable preview string.

displayField

This is a shorthand for accessing the displayExpression if it is a simple field.

editBuffer

Buffer with uncommitted editing operations.

editFormConfig

Returns the configuration of the form used to represent this vector layer.

editorWidgetSetup

Returns the editor widget setup for the field at the specified index.

endEditCommand

Finish edit command and add it to undo/redo stack

excludeAttributesWfs

A set of attributes that are not advertised in WFS requests with QGIS server.

excludeAttributesWms

A set of attributes that are not advertised in WMS requests with QGIS server.

expressionField

Returns the expression used for a given expression field

featureBlendMode

Returns the current blending mode for features

featureCount

Number of features rendered with specified legend key.

featureRendererGenerators

Returns a list of the feature renderer generators owned by the layer.

fieldConfigurationFlags

Returns the configuration flags of the field at given index

fieldConstraints

Returns any constraints which are present for a specified field index.

fieldConstraintsAndStrength

Returns a map of constraint with their strength for a specific field of the layer.

geometryOptions

Configuration and logic to apply automatically on any edit happening on this layer.

geometryType

Returns point, line or polygon

getFeature

Queries the layer for the feature with the given id.

getFeatures

Queries the layer for features specified in request.

getGeometry

Queries the layer for the geometry at the given id.

getSelectedFeatures

Returns an iterator of the selected features.

insertVertex

Inserts a new vertex before the given vertex number, in the given ring, item (first number is index 0), and feature.

invertSelection

Selects not selected features and deselects selected ones

invertSelectionInRectangle

Inverts selection of features found within the search rectangle (in layer's coordinates)

isAuxiliaryField

Returns True if the field comes from the auxiliary layer, False otherwise.

isEditCommandActive

Tests if an edit command is active

isSqlQuery

Returns True if the layer is a query (SQL) layer.

joinBuffer

Returns the join buffer object.

labeling

Access to labeling configuration.

labelsEnabled

Returns whether the layer contains labels which are enabled and should be drawn.

loadAuxiliaryLayer

Loads the auxiliary layer for this vector layer.

minimumAndMaximumValue

Calculates both the minimum and maximum value for an attribute column.

modifySelection

Modifies the current selection on this layer

moveVertex

Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates.

moveVertexV2

Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates.

primaryKeyAttributes

Returns the list of attributes which make up the layer's primary keys.

readExtentFromXml

Returns True if the extent is read from the XML document when data source has no metadata, False if it's the data provider which determines it.

referencingRelations

Returns the layer's relations, where the foreign key is on this layer.

removeExpressionField

Removes an expression field

removeFeatureRendererGenerator

Removes the feature renderer with matching id from the layer.

removeFieldAlias

Removes an alias (a display name) for attributes to display in dialogs

removeFieldConstraint

Removes a constraint for a specified field index.

removeJoin

Removes a vector layer join

removeSelection

Clear selection

renameAttribute

Renames an attribute field (but does not commit it).

renderer

Returns the feature renderer used for rendering the features in the layer in 2D map views.

reselect

Reselects the previous set of selected features.

rollBack

Stops a current editing operation and discards any uncommitted edits.

select

Selects feature by its ID

selectAll

Select all the features

selectByExpression

Selects matching features using an expression.

selectByIds

Selects matching features using a list of feature IDs.

selectByRect

Selects features found within the search rectangle (in layer's coordinates)

selectedFeatureCount

Returns the number of features that are selected in this layer.

selectedFeatureIds

Returns a list of the selected features IDs in this layer.

selectedFeatures

Returns a copy of the user-selected features.

setAttributeTableConfig

Sets the attribute table configuration object.

setAuxiliaryLayer

Sets the current auxiliary layer.

setConstraintExpression

Sets the constraint expression for the specified field index.

setCoordinateSystem

Setup the coordinate system transformation for the layer

setDefaultValueDefinition

Sets the definition of the expression to use when calculating the default value for a field.

setDiagramLayerSettings

setDiagramRenderer

Sets diagram rendering object (takes ownership)

setDisplayExpression

Set the preview expression, used to create a human readable preview string.

setEditFormConfig

Sets the editFormConfig (configuration) of the form used to represent this vector layer.

setEditorWidgetSetup

Sets the editor widget setup for the field at the specified index.

setExcludeAttributesWfs

A set of attributes that are not advertised in WFS requests with QGIS server.

setExcludeAttributesWms

A set of attributes that are not advertised in WMS requests with QGIS server.

setFeatureBlendMode

Sets the blending mode used for rendering each feature

setFieldAlias

Sets an alias (a display name) for attributes to display in dialogs

setFieldConfigurationFlag

Sets the given configuration flag for the field at given index to be active or not.

setFieldConfigurationFlags

Sets the configuration flags of the field at given index

setFieldConstraint

Sets a constraint for a specified field index.

setFieldDuplicatePolicy

Sets a duplicate policy for the field with the specified index.

setFieldMergePolicy

Sets a merge policy for the field with the specified index.

setFieldSplitPolicy

Sets a split policy for the field with the specified index.

setLabeling

Sets labeling configuration.

setLabelsEnabled

Sets whether labels should be enabled for the layer.

setProviderEncoding

Sets the text encoding of the data provider.

setReadExtentFromXml

Flag allowing to indicate if the extent has to be read from the XML document when data source has no metadata or if the data provider has to determine it.

setReadOnly

Makes layer read-only (editing disabled) or not

setRenderer

Sets the feature renderer which will be invoked to represent this layer in 2D map views.

setSimplifyMethod

Sets the simplification settings for fast rendering of features

simplifyDrawingCanbeApplied

Returns whether the VectorLayer can apply the specified simplification hint

simplifyMethod

Returns the simplification settings for fast rendering of features

splitFeatures

Splits features cut by the given line

splitParts

Splits parts cut by the given line

startEditing

Makes the layer editable.

storageType

Returns the permanent storage type for this layer as a friendly name.

storedExpressionManager

Returns the manager of the stored expressions for this layer.

symbolFeatureIds

Ids of features rendered with specified legend key.

translateFeature

Translates feature by dx, dy

uniqueStringsMatching

Returns unique string values of an attribute which contain a specified subset string.

updateExpressionField

Changes the expression used to define an expression based (virtual) field

updateFeature

Updates an existing feature in the layer, replacing the attributes and geometry for the feature with matching QgsFeature.id() with the attributes and geometry from feature.

updateFields

Will regenerate the fields property of this layer by obtaining all fields from the dataProvider, joined fields and virtual fields.

vectorJoins

vectorLayerTypeFlags

Returns the vector layer type flags.

writeSld

Writes the symbology of the layer into the document provided in SLD 1.1 format

Virtual Methods

In PyQGIS, only methods marked as virtual can be safely overridden in a Python subclass of QgsVectorLayer. See the FAQ for more details.

deleteAttribute

Deletes an attribute field (but does not commit it).

fields

Returns the list of fields of this layer.

hasFeatures

Determines if this vector layer has features.

isEditable

Returns True if the provider is in editing mode

isModified

Returns True if the provider has been modified since the last commit

isSpatial

Returns True if this is a geometry layer and False in case of NoGeometry (table only) or UnknownGeometry

maximumValue

Returns the maximum value for an attribute column or an invalid variant in case of error.

minimumValue

Returns the minimum value for an attribute column or an invalid variant in case of error.

readXml

Reads vector layer specific state from project file Dom node.

resolveReferences

Resolves references to other layers (kept as layer IDs after reading XML) into layer objects.

setExtent3D

Sets the extent

setSubsetString

Sets the string (typically sql) used to define a subset of the layer

subsetString

Returns the string (typically sql) used to define a subset of the layer.

supportsEditing

Returns whether the layer supports editing or not

uniqueValues

Calculates a list of unique values contained within an attribute in the layer.

updateExtents

Update the extents for the layer.

wkbType

Returns the WKBType or WKBUnknown in case of error

writeXml

Writes vector layer specific state to project file Dom node.

Static Methods

drawVertexMarker

Draws a vertex symbol at (screen) coordinates x, y.

Signals

afterCommitChanges

Emitted after changes are committed to the data provider.

afterRollBack

Emitted after changes are rolled back.

allowCommitChanged

Emitted whenever the allowCommit() property of this layer changes.

attributeAdded

Will be emitted, when a new attribute has been added to this vector layer.

attributeDeleted

Will be emitted, when an attribute has been deleted from this vector layer.

attributeValueChanged

Emitted whenever an attribute value change is done in the edit buffer.

beforeAddingExpressionField

Will be emitted, when an expression field is going to be added to this vector layer.

beforeCommitChanges

Emitted before changes are committed to the data provider.

beforeEditingStarted

Emitted before editing on this layer is started.

beforeModifiedCheck

Emitted when the layer is checked for modifications.

beforeRemovingExpressionField

Will be emitted, when an expression field is going to be deleted from this vector layer.

beforeRollBack

Emitted before changes are rolled back.

committedAttributeValuesChanges

Emitted when attribute value changes are saved to the provider if not in transaction mode.

committedAttributesAdded

Emitted when attributes are added to the provider if not in transaction mode.

committedAttributesDeleted

Emitted when attributes are deleted from the provider if not in transaction mode.

committedFeaturesAdded

Emitted when features are added to the provider if not in transaction mode.

committedFeaturesRemoved

Emitted when features are deleted from the provider if not in transaction mode.

committedGeometriesChanges

Emitted when geometry changes are saved to the provider if not in transaction mode.

displayExpressionChanged

Emitted when the display expression changes

editCommandDestroyed

Signal emitted, when an edit command is destroyed

editCommandEnded

Signal emitted, when an edit command successfully ended

editCommandStarted

Signal emitted when a new edit command has been started

editFormConfigChanged

Will be emitted whenever the edit form configuration of this layer changes.

featureAdded

Emitted when a new feature has been added to the layer

featureBlendModeChanged

Signal emitted when setFeatureBlendMode() is called

featureDeleted

Emitted when a feature has been deleted.

featuresDeleted

Emitted when features have been deleted.

geometryChanged

Emitted whenever a geometry change is done in the edit buffer.

labelingFontNotFound

Emitted when the font family defined for labeling layer is not found on system

raiseError

Signals an error related to this vector layer.

readCustomSymbology

Signal emitted whenever the symbology (QML-file) for this layer is being read.

readOnlyChanged

Emitted when the read only state of this layer is changed.

selectionChanged

Emitted when selection was changed

subsetStringChanged

Emitted when the layer's subset string has changed.

supportsEditingChanged

Emitted when the read only state or the data provider of this layer is changed.

symbolFeatureCountMapChanged

Emitted when the feature count for symbols on this layer has been recalculated.

updatedFields

Emitted whenever the fields available from this layer have been changed.

writeCustomSymbology

Signal emitted whenever the symbology (QML-file) for this layer is being written.

class qgis.core.QgsVectorLayer[source]

Bases: QgsMapLayer, QgsExpressionContextGenerator, QgsExpressionContextScopeGenerator, QgsFeatureSink, QgsFeatureSource, QgsAbstractProfileSource

__init__(path: str | None = '', baseName: str | None = '', providerLib: str | None = '', options: QgsVectorLayer.LayerOptions = QgsVectorLayer.LayerOptions())

Constructor - creates a vector layer

The QgsVectorLayer is constructed by instantiating a data provider. The provider interprets the supplied path (url) of the data source to connect to and access the data.

Parameters:
  • path (Optional[str] = '') – The path or url of the parameter. Typically this encodes parameters used by the data provider as url query items.

  • baseName (Optional[str] = '') – The name used to represent the layer in the legend

  • providerLib (Optional[str] = '') – The name of the data provider, e.g., “memory”, “postgres”

  • options (QgsVectorLayer.LayerOptions = QgsVectorLayer.LayerOptions()) – layer load options

class DeleteContext

Bases: object

Context for cascade delete features

Added in version 3.14.

cascade
handledFeatures(self, layer: QgsVectorLayer | None) Any

Returns a list of feature IDs from the specified layer affected by the delete operation.

Parameters:

layer (Optional[QgsVectorLayer])

Return type:

Any

handledLayers(self, includeAuxiliaryLayers: bool = True) List[QgsVectorLayer]

Returns a list of all layers affected by the delete operation.

If includeAuxiliaryLayers is False then auxiliary layers will not be included in the returned list.

Parameters:

includeAuxiliaryLayers (bool = True)

Return type:

List[QgsVectorLayer]

EditResult

alias of VectorEditResult

class LayerOptions

Bases: object

Setting options for loading vector layers.

fallbackCrs: QgsCoordinateReferenceSystem

Fallback layer coordinate reference system.

This may be set for layers where the coordinate reference system is known in advance, and where the layer path may not be initially resolvable. (E.g. layers with a URI pointing to a non-existent file). It is only ever used if the layer cannot be resolved, otherwise the actual layer CRS will be detected and used for the layer.

Added in version 3.8.

fallbackWkbType: WkbType

Fallback geometry type.

This may be set for layers where the geometry type is known in advance, and where the layer path may not be initially resolvable. (E.g. layers with a URI pointing to a non-existent file). It is only ever used if the layer cannot be resolved, otherwise the actual layer geometry type will be detected and used for the layer.

See also

fallbackCrs()

Added in version 3.8.

forceReadOnly: bool

Controls whether the layer is forced to be load as Read Only

If True, then the layer’s provider will only check read capabilities. Write capabilities will be skipped.

If False (the default), the layer’s provider will check the edition capabilities based on user rights or file rights or others.

Added in version 3.28.

loadAllStoredStyles: bool

Controls whether the stored styles will be all loaded.

If True and the layer’s provider supports style stored in the data source all the available styles will be loaded in addition to the default one.

If False (the default), the layer’s provider will only load the default style.

Added in version 3.30.

readExtentFromXml: bool

If True, the layer extent will be read from XML (i.e. stored in the project file). If False, the extent will be determined by the provider on layer load.

skipCrsValidation: bool

Controls whether the layer is allowed to have an invalid/unknown CRS.

If True, then no validation will be performed on the layer’s CRS and the layer layer’s crs() may be invalid() (i.e. the layer will have no georeferencing available and will be treated as having purely numerical coordinates).

If False (the default), the layer’s CRS will be validated using QgsCoordinateReferenceSystem.validate(), which may cause a blocking, user-facing dialog asking users to manually select the correct CRS for the layer.

Added in version 3.10.

class SelectBehavior(*values)

Bases: IntEnum

Specifies how a selection should be applied.

Added in version 3.22.

  • SetSelection: Set selection, removing any existing selection

  • AddToSelection: Add selection to current selection

  • IntersectSelection: Modify current selection to include only select features which match

  • RemoveFromSelection: Remove from current selection

class VertexMarkerType(*values)

Bases: IntEnum

Editing vertex markers, used for showing vertices during a edit operation.

Added in version 3.22.

  • SemiTransparentCircle: Semi-transparent circle marker

  • Cross: Cross marker

  • NoMarker: No marker

actions(self) QgsActionManager | None[source]

Returns all layer actions defined on this layer.

The pointer which is returned directly points to the actions object which is used by the layer, so any changes are immediately applied.

Return type:

Optional[QgsActionManager]

addAttribute(self, field: QgsField) bool[source]

Add an attribute field (but does not commit it) returns True if the field was added

Note

Calls to addAttribute() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:

field (QgsField)

Return type:

bool

addCurvedPart(self, ring: QgsCurve | None) Qgis.GeometryOperationResult

Adds a new ring to a multipart feature.

Note

Calls to addPart() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:

ring (Optional[QgsCurve])

Return type:

Qgis.GeometryOperationResult

addCurvedRing(self, ring: QgsCurve | None)

Adds a ring to polygon/multipolygon features (takes ownership)

Parameters:
Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • AddRingNotInExistingFeature

  • InvalidInputGeometryType

  • AddRingNotClosed

  • AddRingNotValid

  • AddRingCrossesExistingRings

Note

Calls to addRing() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

addExpressionField(self, exp: str | None, fld: QgsField) int[source]

Add a new field which is calculated by the expression specified

Parameters:
  • exp (Optional[str]) – The expression which calculates the field

  • fld (QgsField) – The field to calculate

Return type:

int

Returns:

The index of the new field

addFeatureRendererGenerator(self, generator: QgsFeatureRendererGenerator | None)[source]

Adds a new feature renderer generator to the layer.

Ownership of generator is transferred to the layer.

Added in version 3.18.

Parameters:

generator (Optional[QgsFeatureRendererGenerator])

addJoin(self, joinInfo: QgsVectorLayerJoinInfo) bool[source]

Joins another vector layer to this layer

Parameters:

joinInfo (QgsVectorLayerJoinInfo) – join object containing join layer id, target and source field

Note

since 2.6 returns bool indicating whether the join can be added

Return type:

bool

addPart(self, ring: Iterable[QgsPointXY]) Qgis.GeometryOperationResult[source]

Adds a new part polygon to a multipart feature

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • SelectionIsEmpty

  • SelectionIsGreaterThanOne

  • AddPartSelectedGeometryNotFound

  • AddPartNotMultiGeometry

  • InvalidBaseGeometry

  • InvalidInputGeometryType

Note

Calls to addPart() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

Parameters:

ring (Iterable[QgsPointXY])

addPartV2(self, ring: Iterable[QgsPointXY]) Qgis.GeometryOperationResult

Adds a new part polygon to a multipart feature

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • SelectionIsEmpty

  • SelectionIsGreaterThanOne

  • AddPartSelectedGeometryNotFound

  • AddPartNotMultiGeometry

  • InvalidBaseGeometry

  • InvalidInputGeometryType

Note

available in Python bindings as addPartV2

Note

Calls to addPart() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

Parameters:

ring (Iterable[QgsPointXY])

addPartV2(self, ring: Iterable[QgsPoint]) Qgis.GeometryOperationResult

Adds a new part polygon to a multipart feature

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • SelectionIsEmpty

  • SelectionIsGreaterThanOne

  • AddPartSelectedGeometryNotFound

  • AddPartNotMultiGeometry

  • InvalidBaseGeometry

  • InvalidInputGeometryType

Note

Calls to addPart() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:

ring (Iterable[QgsPoint])

addRing(self, ring: Iterable[QgsPointXY])[source]

Adds a ring to polygon/multipolygon features

Parameters:
Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • AddRingNotInExistingFeature

  • InvalidInputGeometryType

  • AddRingNotClosed

  • AddRingNotValid

  • AddRingCrossesExistingRings

Note

Calls to addRing() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

addRing(self, ring: Iterable[QgsPoint])[source]

Adds a ring to polygon/multipolygon features

Parameters:
Returns:

Qgis.GeometryOperationResult

  • Success

  • LayerNotEditable

  • AddRingNotInExistingFeature

  • InvalidInputGeometryType

  • AddRingNotClosed

  • AddRingNotValid

  • AddRingCrossesExistingRings

Note

Calls to addRing() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

addTopologicalPoints(self, geom: QgsGeometry) int[source]

Adds topological points for every vertex of the geometry.

Parameters:

geom (QgsGeometry) – the geometry where each vertex is added to segments of other features

Returns:

  • 1 in case of layer error (invalid or non editable)

Returns:

0 in case of success

Returns:

1 in case of geometry error (non spatial or null geometry)

Return type:

int

Returns:

2 in case no vertices needed to be added

Note

geom is not going to be modified by the function

Note

Calls to addTopologicalPoints() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

addTopologicalPoints(self, p: QgsPointXY) int[source]

Adds a vertex to segments which intersect point p but don’t already have a vertex there. If a feature already has a vertex at position p, no additional vertex is inserted. This method is useful for topological editing.

Parameters:

p (QgsPointXY) – position of the vertex

Returns:

  • 1 in case of layer error (invalid or non editable)

Returns:

0 in case of success

Returns:

1 in case of geometry error (non spatial or null geometry)

Return type:

int

Returns:

2 in case no vertices needed to be added

Note

Calls to addTopologicalPoints() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

addTopologicalPoints(self, p: QgsPoint) int[source]

Adds a vertex to segments which intersect point p but don’t already have a vertex there. If a feature already has a vertex at position p, no additional vertex is inserted. This method is useful for topological editing.

Parameters:

p (QgsPoint) – position of the vertex

Returns:

  • 1 in case of layer error (invalid or non editable)

Returns:

0 in case of success

Returns:

1 in case of geometry error (non spatial or null geometry)

Return type:

int

Returns:

2 in case no vertices needed to be added

Note

Calls to addTopologicalPoints() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Added in version 3.10.

addTopologicalPoints(self, ps: Iterable[QgsPoint]) int[source]

Adds a vertex to segments which intersect any of the points p but don’t already have a vertex there. If a feature already has a vertex at position p, no additional vertex is inserted. This method is useful for topological editing.

Parameters:

ps (Iterable[QgsPoint]) – point sequence of the vertices

Returns:

  • 1 in case of layer error (invalid or non editable)

Returns:

0 in case of success

Returns:

1 in case of geometry error (non spatial or null geometry)

Return type:

int

Returns:

2 in case no vertices needed to be added

Note

Calls to addTopologicalPoints() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Added in version 3.16.

signal afterCommitChanges[source]

Emitted after changes are committed to the data provider.

Added in version 3.16.

signal afterRollBack[source]

Emitted after changes are rolled back.

Added in version 3.4.

aggregate(self, aggregate: Qgis.Aggregate, fieldOrExpression: str | None, parameters: QgsAggregateCalculator.AggregateParameters = QgsAggregateCalculator.AggregateParameters(), context: QgsExpressionContext | None = None, fids: Any | None = None, feedback: QgsFeedback | None = None)[source]

Calculates an aggregated value from the layer’s features. Currently any filtering expression provided will override filters in the FeatureRequest.

Parameters:
  • aggregate (Qgis.Aggregate) – aggregate to calculate

  • fieldOrExpression (Optional[str]) – source field or expression to use as basis for aggregated values.

  • parameters (QgsAggregateCalculator.AggregateParameters = QgsAggregateCalculator.AggregateParameters()) – parameters controlling aggregate calculation

  • context (Optional[QgsExpressionContext] = None) – expression context for expressions and filters

  • ok – if specified, will be set to True if aggregate calculation was successful

  • fids (Optional[Any] = None) – list of fids to filter, otherwise will use all fids

  • feedback (Optional[QgsFeedback] = None) -> (Any) – optional feedback argument for early cancellation (since QGIS 3.22)

Returns:

calculated aggregate value

signal allowCommitChanged[source]

Emitted whenever the allowCommit() property of this layer changes.

Added in version 3.4.

signal attributeAdded(idx: int)[source]

Will be emitted, when a new attribute has been added to this vector layer. Applies only to types QgsFields.OriginEdit, QgsFields.OriginProvider and QgsFields.OriginExpression

Parameters:

idx (int) – The index of the new attribute

See also

updatedFields()

attributeAlias(self, index: int) str[source]

Returns the alias of an attribute name or a null string if there is no alias.

see {attributeDisplayName( int attributeIndex )} which returns the field name if no alias is defined.

Parameters:

index (int)

Return type:

str

attributeAliases(self) Dict[str, str][source]

Returns a map of field name to attribute alias

Return type:

Dict[str, str]

signal attributeDeleted(idx: int)[source]

Will be emitted, when an attribute has been deleted from this vector layer. Applies only to types QgsFields.OriginEdit, QgsFields.OriginProvider and QgsFields.OriginExpression

Parameters:

idx (int) – The index of the deleted attribute

See also

updatedFields()

attributeDisplayName(self, index: int) str[source]

Convenience function that returns the attribute alias if defined or the field name else

Parameters:

index (int)

Return type:

str

attributeList(self) List[int][source]

Returns list of attribute indexes. i.e. a list from 0 … fieldCount()

Return type:

List[int]

attributeTableConfig(self) QgsAttributeTableConfig[source]

Returns the attribute table configuration object. This defines the appearance of the attribute table.

Return type:

QgsAttributeTableConfig

signal attributeValueChanged(fid: QgsFeatureId, idx: int, value: object)[source]

Emitted whenever an attribute value change is done in the edit buffer. Note that at this point the attribute change is not yet saved to the provider.

Parameters:
  • fid (QgsFeatureId) – The id of the changed feature

  • idx (int) – The attribute index of the changed attribute

  • value (object) – The new value of the attribute

auxiliaryLayer(self) QgsAuxiliaryLayer | None[source]

Returns the current auxiliary layer.

Return type:

Optional[QgsAuxiliaryLayer]

signal beforeAddingExpressionField(fieldName: str)[source]

Will be emitted, when an expression field is going to be added to this vector layer. Applies only to types QgsFields.OriginExpression

Parameters:

fieldName (str) – The name of the attribute to be added

signal beforeCommitChanges(stopEditing: bool)[source]

Emitted before changes are committed to the data provider.

The stopEditing flag specifies if the editing mode shall be left after this commit.

Parameters:

stopEditing (bool)

signal beforeEditingStarted[source]

Emitted before editing on this layer is started.

signal beforeModifiedCheck[source]

Emitted when the layer is checked for modifications. Use for last-minute additions.

signal beforeRemovingExpressionField(idx: int)[source]

Will be emitted, when an expression field is going to be deleted from this vector layer. Applies only to types QgsFields.OriginExpression

Parameters:

idx (int) – The index of the attribute to be deleted

signal beforeRollBack[source]

Emitted before changes are rolled back.

beginEditCommand(self, text: str | None)[source]

Create edit command for undo/redo operations

Parameters:

text (Optional[str]) – text which is to be displayed in undo window

boundingBoxOfSelected(self) QgsRectangle[source]

Returns the bounding box of the selected features. If there is no selection, QgsRectangle(0,0,0,0) is returned

Return type:

QgsRectangle

capabilitiesString(self) str[source]

Capabilities for this layer, comma separated and translated.

Return type:

str

changeAttributeValue(self, fid: int, field: int, newValue: Any, oldValue: Any = None, skipDefaultValues: bool = False, context: QgsVectorLayerToolsContext | None = None) bool[source]

Changes an attribute value for a feature (but does not immediately commit the changes). The fid argument specifies the ID of the feature to be changed.

The field argument must specify a valid field index for the layer (where an index of 0 corresponds to the first field).

The new value to be assigned to the field is given by newValue.

If a valid QVariant is specified for oldValue, it will be used as the field value in the case of an undo operation corresponding to this attribute value change. If an invalid QVariant is used (the default behavior), then the feature’s current value will be automatically retrieved and used. Note that this involves a feature request to the underlying data provider, so it is more efficient to explicitly pass an oldValue if it is already available.

If skipDefaultValues is set to True, default field values will not be updated. This can be used to override default field value expressions.

If context is provided, it will be used when updating default values (since QGIS 3.38).

Return type:

bool

Returns:

True if the feature’s attribute was successfully changed.

Note

Calls to changeAttributeValue() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

See also

startEditing()

See also

commitChanges()

See also

changeGeometry()

See also

updateFeature()

Parameters:
  • fid (int)

  • field (int)

  • newValue (Any)

  • oldValue (Any = None)

  • skipDefaultValues (bool = False)

  • context (Optional[QgsVectorLayerToolsContext] = None)

changeAttributeValues(self, fid: int, newValues: Dict[int, Any], oldValues: Dict[int, Any] = {}, skipDefaultValues: bool = False, context: QgsVectorLayerToolsContext | None = None) bool[source]

Changes attributes’ values for a feature (but does not immediately commit the changes). The fid argument specifies the ID of the feature to be changed.

The new values to be assigned to the fields are given by newValues.

If a valid QVariant is specified for a field in oldValues, it will be used as the field value in the case of an undo operation corresponding to this attribute value change. If an invalid QVariant is used (the default behavior), then the feature’s current value will be automatically retrieved and used. Note that this involves a feature request to the underlying data provider, so it is more efficient to explicitly pass an oldValue if it is already available.

If skipDefaultValues is set to True, default field values will not be updated. This can be used to override default field value expressions.

If context is provided, it will be used when updating default values (since QGIS 3.38).

Return type:

bool

Returns:

True if feature’s attributes was successfully changed.

Note

Calls to changeAttributeValues() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

See also

startEditing()

See also

commitChanges()

See also

changeGeometry()

See also

updateFeature()

Parameters:
  • fid (int)

  • newValues (Dict[int, Any])

  • oldValues (Dict[int, Any] = {})

  • skipDefaultValues (bool = False)

  • context (Optional[QgsVectorLayerToolsContext] = None)

changeGeometry(self, fid: int, geometry: QgsGeometry, skipDefaultValue: bool = False) bool[source]

Changes a feature’s geometry within the layer’s edit buffer (but does not immediately commit the changes). The fid argument specifies the ID of the feature to be changed.

If skipDefaultValue is set to True, default field values will not be updated. This can be used to override default field value expressions.

Return type:

bool

Returns:

True if the feature’s geometry was successfully changed.

Note

Calls to changeGeometry() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

See also

startEditing()

See also

commitChanges()

See also

updateFeature()

Parameters:
  • fid (int)

  • geometry (QgsGeometry)

  • skipDefaultValue (bool = False)

abstract clone(self) QgsVectorLayer | None[source]

Returns a new instance equivalent to this one. A new provider is created for the same data source and renderers for features and diagrams are cloned too. Moreover, each attributes (transparency, extent, selected features and so on) are identical.

Return type:

Optional[QgsVectorLayer]

Returns:

a new layer instance

commitChanges(self, stopEditing: bool = True) bool[source]

Attempts to commit to the underlying data provider any buffered changes made since the last to call to startEditing().

Returns the result of the attempt. If a commit fails (i.e. False is returned), the in-memory changes are left untouched and are not discarded. This allows editing to continue if the commit failed on e.g. a disallowed value in a Postgres database - the user can re-edit and try again.

The commits occur in distinct stages, (add attributes, add features, change attribute values, change geometries, delete features, delete attributes) so if a stage fails, it can be difficult to roll back cleanly. Therefore any error message returned by commitErrors() also includes which stage failed so that the user has some chance of repairing the damage cleanly.

By setting stopEditing to False, the layer will stay in editing mode. Otherwise the layer editing mode will be disabled if the commit is successful.

See also

startEditing()

See also

commitErrors()

See also

rollBack()

Parameters:

stopEditing (bool = True)

Return type:

bool

commitErrors(self) List[str][source]

Returns a list containing any error messages generated when attempting to commit changes to the layer.

See also

commitChanges()

Return type:

List[str]

signal committedAttributeValuesChanges(layerId: str, changedAttributesValues: QgsChangedAttributesMap)[source]

Emitted when attribute value changes are saved to the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • changedAttributesValues (QgsChangedAttributesMap)

signal committedAttributesAdded(layerId: str, addedAttributes: List[QgsField])[source]

Emitted when attributes are added to the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • addedAttributes (List[QgsField])

signal committedAttributesDeleted(layerId: str, deletedAttributes: QgsAttributeList)[source]

Emitted when attributes are deleted from the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • deletedAttributes (QgsAttributeList)

signal committedFeaturesAdded(layerId: str, addedFeatures: QgsFeatureList)[source]

Emitted when features are added to the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • addedFeatures (QgsFeatureList)

signal committedFeaturesRemoved(layerId: str, deletedFeatureIds: QgsFeatureIds)[source]

Emitted when features are deleted from the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • deletedFeatureIds (QgsFeatureIds)

signal committedGeometriesChanges(layerId: str, changedGeometries: QgsGeometryMap)[source]

Emitted when geometry changes are saved to the provider if not in transaction mode.

Parameters:
  • layerId (str)

  • changedGeometries (QgsGeometryMap)

conditionalStyles(self) QgsConditionalLayerStyles | None[source]

Returns the conditional styles that are set for this layer. Style information is used to render conditional formatting in the attribute table.

Return type:

Optional[QgsConditionalLayerStyles]

Returns:

Return a QgsConditionalLayerStyles object holding the conditional attribute style information. Style information is generic and can be used for anything.

constraintDescription(self, index: int) str[source]

Returns the descriptive name for the constraint expression for a specified field index.

Parameters:

index (int)

Return type:

str

constraintExpression(self, index: int) str[source]

Returns the constraint expression for for a specified field index, if set.

Parameters:

index (int)

Return type:

str

countSymbolFeatures(self, storeSymbolFids: bool = False) QgsVectorLayerFeatureCounter | None[source]

Count features for symbols. The method will return the feature counter task. You will need to connect to the symbolFeatureCountMapChanged() signal to be notified when the freshly updated feature counts are ready.

Parameters:

storeSymbolFids (bool = False) – If True will gather the feature ids (fids) per symbol, otherwise only the count. Default False.

Note

If the count features for symbols has been already done a None is returned. If you need to wait for the results, you can call waitForFinished() on the feature counter.

Return type:

Optional[QgsVectorLayerFeatureCounter]

dataComment(self) str[source]

Returns a description for this layer as defined in the data provider.

Return type:

str

defaultValue(self, index: int, feature: QgsFeature = QgsFeature(), context: QgsExpressionContext | None = None) Any[source]

Returns the calculated default value for the specified field index. The default value may be taken from a client side default value expression (see setDefaultValueDefinition()) or taken from the underlying data provider.

Parameters:
  • index (int) – field index

  • feature (QgsFeature = QgsFeature()) – optional feature to use for default value evaluation. If passed, then properties from the feature (such as geometry) can be used when calculating the default value.

  • context (Optional[QgsExpressionContext] = None) – optional expression context to evaluate expressions again. If not specified, a default context will be created

Return type:

Any

Returns:

calculated default value

defaultValueDefinition(self, index: int) QgsDefaultValue[source]

Returns the definition of the expression used when calculating the default value for a field.

Parameters:

index (int) – field index

Return type:

QgsDefaultValue

Returns:

definition of the default value with the expression evaluated when calculating default values for field, or definition with an empty string if no default is set

See also

defaultValue()

virtual deleteAttribute(self, attr: int) bool[source]

Deletes an attribute field (but does not commit it).

Note

Calls to deleteAttribute() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:

attr (int)

Return type:

bool

deleteAttributes(self, attrs: Iterable[int]) bool[source]

Deletes a list of attribute fields (but does not commit it)

Parameters:

attrs (Iterable[int]) – the indices of the attributes to delete

Return type:

bool

Returns:

True if at least one attribute has been deleted

deleteFeature(self, fid: int, context: QgsVectorLayer.DeleteContext | None = None) bool[source]

Deletes a feature from the layer (but does not commit it).

Parameters:
  • fid (int) – The feature id to delete

  • context (Optional[QgsVectorLayer.DeleteContext] = None) – The chain of features who will be deleted for feedback and to avoid endless recursions

Note

Calls to deleteFeature() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Return type:

bool

deleteFeatures(self, fids: Any, context: QgsVectorLayer.DeleteContext | None = None) bool[source]

Deletes a set of features from the layer (but does not commit it)

Parameters:
  • fids (Any) – The feature ids to delete

  • context (Optional[QgsVectorLayer.DeleteContext] = None) – The chain of features who will be deleted for feedback and to avoid endless recursions

Return type:

bool

Returns:

False if the layer is not in edit mode or does not support deleting in case of an active transaction depends on the provider implementation

Note

Calls to deleteFeatures() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

deleteSelectedFeatures(self, context: QgsVectorLayer.DeleteContext | None = None)[source]

Deletes the selected features

Parameters:
  • deletedCount – The number of successfully deleted features

  • context (Optional[QgsVectorLayer.DeleteContext] = None) -> (bool) – The chain of features who will be deleted for feedback and to avoid endless recursions

Returns:

True in case of success and False otherwise

deleteVertex(self, featureId: int, vertex: int) Qgis.VectorEditResult[source]

Deletes a vertex from a feature.

Parameters:
  • featureId (int) – ID of feature to remove vertex from

  • vertex (int) – index of vertex to delete

Note

Calls to deleteVertex() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Return type:

Qgis.VectorEditResult

deselect(self, featureId: int)[source]

Deselects feature by its ID

Parameters:

featureId (int) – The id of the feature to deselect

See also

deselect()

deselect(self, featureIds: Any)[source]

Deselects features by their ID

Parameters:

featureIds (Any) – The ids of the features to deselect

See also

deselect()

destroyEditCommand(self)[source]

Destroy active command and reverts all changes in it

diagramLayerSettings(self) QgsDiagramLayerSettings | None[source]
Return type:

Optional[QgsDiagramLayerSettings]

diagramRenderer(self) QgsDiagramRenderer | None[source]
Return type:

Optional[QgsDiagramRenderer]

diagramsEnabled(self) bool[source]

Returns whether the layer contains diagrams which are enabled and should be drawn.

Return type:

bool

Returns:

True if layer contains enabled diagrams

displayExpression(self) str[source]

Returns the preview expression, used to create a human readable preview string. Uses QgsExpression

Return type:

str

Returns:

The expression which will be used to preview features for this layer

signal displayExpressionChanged[source]

Emitted when the display expression changes

displayField(self) str[source]

This is a shorthand for accessing the displayExpression if it is a simple field. If the displayExpression is more complex than a simple field, a null string will be returned.

Return type:

str

static drawVertexMarker(x: float, y: float, p: QPainter, type: Qgis.VertexMarkerType, vertexSize: int)[source]

Draws a vertex symbol at (screen) coordinates x, y. (Useful to assist vertex editing.)

Deprecated since version 3.40: Use the equivalent QgsSymbolLayerUtils.drawVertexMarker function instead.

Parameters:
editBuffer(self) QgsVectorLayerEditBuffer | None[source]

Buffer with uncommitted editing operations. Only valid after editing has been turned on.

Return type:

Optional[QgsVectorLayerEditBuffer]

signal editCommandDestroyed[source]

Signal emitted, when an edit command is destroyed

Note

This is not a rollback, it is only related to the current edit command. See beforeRollBack()

signal editCommandEnded[source]

Signal emitted, when an edit command successfully ended

Note

This does not mean it is also committed, only that it is written to the edit buffer. See beforeCommitChanges()

signal editCommandStarted(text: str)[source]

Signal emitted when a new edit command has been started

Parameters:

text (str) – Description for this edit command

editFormConfig(self) QgsEditFormConfig[source]

Returns the configuration of the form used to represent this vector layer.

Return type:

QgsEditFormConfig

Returns:

The configuration of this layers’ form

signal editFormConfigChanged[source]

Will be emitted whenever the edit form configuration of this layer changes.

editorWidgetSetup(self, index: int) QgsEditorWidgetSetup[source]

Returns the editor widget setup for the field at the specified index.

The editor widget setup defines which QgsFieldFormatter and editor widget will be used for the field.

Parameters:

index (int)

Return type:

QgsEditorWidgetSetup

endEditCommand(self)[source]

Finish edit command and add it to undo/redo stack

excludeAttributesWfs(self) Set[str]

A set of attributes that are not advertised in WFS requests with QGIS server.

Deprecated since version 3.16: Use fields().configurationFlags() instead.

Return type:

Set[str]

excludeAttributesWms(self) Set[str]

A set of attributes that are not advertised in WMS requests with QGIS server.

Deprecated since version 3.16: Use fields().configurationFlags() instead.

Return type:

Set[str]

expressionField(self, index: int) str[source]

Returns the expression used for a given expression field

Parameters:

index (int) – An index of an epxression based (virtual) field

Return type:

str

Returns:

The expression for the field at index

signal featureAdded(fid: QgsFeatureId)[source]

Emitted when a new feature has been added to the layer

Parameters:

fid (QgsFeatureId) – The id of the new feature

featureBlendMode(self) QPainter.CompositionMode[source]

Returns the current blending mode for features

Return type:

QPainter.CompositionMode

signal featureBlendModeChanged(blendMode: QPainter.CompositionMode)[source]

Signal emitted when setFeatureBlendMode() is called

Parameters:

blendMode (QPainter.CompositionMode)

featureCount(self, legendKey: str | None) int

Number of features rendered with specified legend key. Features must be first calculated by countSymbolFeatures()

Return type:

int

Returns:

number of features rendered by symbol or -1 if failed or counts are not available

Parameters:

legendKey (Optional[str])

featureCount(self) int

Returns feature count including changes which have not yet been committed If you need only the count of committed features call this method on this layer’s provider.

Return type:

int

Returns:

the number of features on this layer or -1 if unknown.

signal featureDeleted(fid: QgsFeatureId)[source]

Emitted when a feature has been deleted.

If you do expensive operations in a slot connected to this, you should prefer to use featuresDeleted().

Parameters:

fid (QgsFeatureId) – The id of the feature which has been deleted

featureRendererGenerators(self) List[QgsFeatureRendererGenerator]

Returns a list of the feature renderer generators owned by the layer.

Added in version 3.18.

Return type:

List[QgsFeatureRendererGenerator]

signal featuresDeleted(fids: QgsFeatureIds)[source]

Emitted when features have been deleted.

If features are deleted within an edit command, this will only be emitted once at the end to allow connected slots to minimize the overhead. If features are deleted outside of an edit command, this signal will be emitted once per feature.

Parameters:

fids (QgsFeatureIds) – The feature ids that have been deleted.

fieldConfigurationFlags(self, index: int) Qgis.FieldConfigurationFlags[source]

Returns the configuration flags of the field at given index

Added in version 3.34.

Parameters:

index (int)

Return type:

Qgis.FieldConfigurationFlags

fieldConstraints(self, fieldIndex: int) QgsFieldConstraints.Constraints[source]

Returns any constraints which are present for a specified field index. These constraints may be inherited from the layer’s data provider or may be set manually on the vector layer from within QGIS.

Parameters:

fieldIndex (int)

Return type:

QgsFieldConstraints.Constraints

fieldConstraintsAndStrength(self, fieldIndex: int) Dict[QgsFieldConstraints.Constraint, QgsFieldConstraints.ConstraintStrength]

Returns a map of constraint with their strength for a specific field of the layer.

Parameters:

fieldIndex (int) – field index

Return type:

Dict[QgsFieldConstraints.Constraint, QgsFieldConstraints.ConstraintStrength]

virtual fields(self) QgsFields[source]

Returns the list of fields of this layer. This also includes fields which have not yet been saved to the provider.

Return type:

QgsFields

Returns:

A list of fields

signal geometryChanged(fid: QgsFeatureId, geometry: QgsGeometry)[source]

Emitted whenever a geometry change is done in the edit buffer. Note that at this point the geometry change is not yet saved to the provider.

Parameters:
  • fid (QgsFeatureId) – The id of the changed feature

  • geometry (QgsGeometry) – The new geometry

geometryOptions(self) QgsGeometryOptions | None[source]

Configuration and logic to apply automatically on any edit happening on this layer.

Added in version 3.4.

Return type:

Optional[QgsGeometryOptions]

geometryType(self) Qgis.GeometryType[source]

Returns point, line or polygon

Return type:

Qgis.GeometryType

getFeature(self, fid: int) QgsFeature[source]

Queries the layer for the feature with the given id. If there is no such feature, the returned feature will be invalid.

Parameters:

fid (int)

Return type:

QgsFeature

getFeatures(self, request: QgsFeatureRequest = QgsFeatureRequest()) QgsFeatureIterator[source]

Queries the layer for features specified in request.

Parameters:

request (QgsFeatureRequest = QgsFeatureRequest()) – feature request describing parameters of features to return

Return type:

QgsFeatureIterator

Returns:

iterator for matching features from provider

getFeatures(self, expression: str | None) QgsFeatureIterator[source]

Queries the layer for features matching a given expression.

Parameters:

expression (Optional[str])

Return type:

QgsFeatureIterator

getFeatures(self, fids: Any) QgsFeatureIterator[source]

Queries the layer for the features with the given ids.

Parameters:

fids (Any)

Return type:

QgsFeatureIterator

getFeatures(self, rectangle: QgsRectangle) QgsFeatureIterator[source]

Queries the layer for the features which intersect the specified rectangle.

Parameters:

rectangle (QgsRectangle)

Return type:

QgsFeatureIterator

getGeometry(self, fid: int) QgsGeometry[source]

Queries the layer for the geometry at the given id. If there is no such feature, the returned geometry will be invalid.

Parameters:

fid (int)

Return type:

QgsGeometry

getSelectedFeatures(self, request: QgsFeatureRequest = QgsFeatureRequest()) QgsFeatureIterator[source]

Returns an iterator of the selected features.

Parameters:

request (QgsFeatureRequest = QgsFeatureRequest()) – You may specify a request, e.g. to limit the set of requested attributes. Any filter on the request will be discarded.

Return type:

QgsFeatureIterator

Returns:

Iterator over the selected features

Warning

Calling this method returns an iterator for all attributes and geometry for the selected features. Consider using the much more efficient selectedFeatureIds() or selectedFeatureCount() if you do not require access to the feature attributes or geometry.

virtual hasFeatures(self) Qgis.FeatureAvailability[source]

Determines if this vector layer has features.

Warning

when a layer is editable and some features have been deleted, this will return QgsFeatureSource.FeatureAvailability.FeaturesMayBeAvailable to avoid a potentially expensive call to the dataprovider.

Added in version 3.4.

Return type:

Qgis.FeatureAvailability

insertVertex(self, x: float, y: float, atFeatureId: int, beforeVertex: int) bool[source]

Inserts a new vertex before the given vertex number, in the given ring, item (first number is index 0), and feature.

Not meaningful for Point geometries

Note

Calls to insertVertex() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:
  • x (float)

  • y (float)

  • atFeatureId (int)

  • beforeVertex (int)

Return type:

bool

insertVertex(self, point: QgsPoint, atFeatureId: int, beforeVertex: int) bool[source]

Inserts a new vertex before the given vertex number, in the given ring, item (first number is index 0), and feature.

Not meaningful for Point geometries

Note

Calls to insertVertex() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:
  • point (QgsPoint)

  • atFeatureId (int)

  • beforeVertex (int)

Return type:

bool

invertSelection(self)[source]

Selects not selected features and deselects selected ones

invertSelectionInRectangle(self, rect: QgsRectangle)[source]

Inverts selection of features found within the search rectangle (in layer’s coordinates)

Parameters:

rect (QgsRectangle) – The rectangle in which the selection of features will be inverted

isAuxiliaryField(self, index: int)[source]

Returns True if the field comes from the auxiliary layer, False otherwise.

Parameters:

index (int) -> (bool)

isEditCommandActive(self) bool[source]

Tests if an edit command is active

Return type:

bool

virtual isEditable(self) bool[source]

Returns True if the provider is in editing mode

Return type:

bool

virtual isModified(self) bool[source]

Returns True if the provider has been modified since the last commit

Return type:

bool

virtual isSpatial(self) bool[source]

Returns True if this is a geometry layer and False in case of NoGeometry (table only) or UnknownGeometry

Return type:

bool

isSqlQuery(self) bool[source]

Returns True if the layer is a query (SQL) layer.

Note

this is simply a shortcut to check if the SqlQuery flag is set.

Added in version 3.24.

Return type:

bool

joinBuffer(self) QgsVectorLayerJoinBuffer | None[source]

Returns the join buffer object.

Return type:

Optional[QgsVectorLayerJoinBuffer]

labeling(self) QgsAbstractVectorLayerLabeling | None[source]

Access to labeling configuration. May be None if labeling is not used.

Note

Labels will only be rendered if labelsEnabled() returns True.

See also

labelsEnabled()

Return type:

Optional[QgsAbstractVectorLayerLabeling]

signal labelingFontNotFound(layer: QgsVectorLayer, fontfamily: str)[source]

Emitted when the font family defined for labeling layer is not found on system

Parameters:
labelsEnabled(self) bool[source]

Returns whether the layer contains labels which are enabled and should be drawn.

Return type:

bool

Returns:

True if layer contains enabled labels

loadAuxiliaryLayer(self, storage: QgsAuxiliaryStorage, key: str | None = '') bool[source]

Loads the auxiliary layer for this vector layer. If there’s no corresponding table in the database, then nothing happens and False is returned. The key is optional because if this layer has been read from a XML document, then the key read in this document is used by default.

Parameters:
  • storage (QgsAuxiliaryStorage) – The auxiliary storage where to look for the table

  • key (Optional[str] = '') – The key to use for joining.

Return type:

bool

Returns:

True if the auxiliary layer is well loaded, False otherwise

virtual maximumValue(self, index: int) Any[source]

Returns the maximum value for an attribute column or an invalid variant in case of error.

Note

In some circumstances when unsaved changes are present for the layer then the returned value may be outdated (for instance when the attribute value in a saved feature has been changed inside the edit buffer then the previous saved value may be returned as the maximum).

Note

If both the minimum and maximum value are required it is more efficient to call minimumAndMaximumValue() instead of separate calls to minimumValue() and maximumValue().

See also

minimumValue()

See also

uniqueValues()

Parameters:

index (int)

Return type:

Any

minimumAndMaximumValue(self, index: int)[source]

Calculates both the minimum and maximum value for an attribute column.

This is more efficient then calling both minimumValue() and maximumValue() when both the minimum and maximum values are required.

Parameters:

index (int) -> (Any) – index of field to calculate minimum and maximum value for.

Note

In some circumstances when unsaved changes are present for the layer then the calculated values may be outdated (for instance when the attribute value in a saved feature has been changed inside the edit buffer then the previous saved value may be returned as the maximum).

See also

minimumValue()

See also

maximumValue()

Returns:

  • minimum: minimum attribute value or an invalid variant in case of error.

  • maximum: maximum attribute value or an invalid variant in case of error.

Added in version 3.20.

virtual minimumValue(self, index: int) Any[source]

Returns the minimum value for an attribute column or an invalid variant in case of error.

Note

In some circumstances when unsaved changes are present for the layer then the returned value may be outdated (for instance when the attribute value in a saved feature has been changed inside the edit buffer then the previous saved value may be returned as the minimum).

Note

If both the minimum and maximum value are required it is more efficient to call minimumAndMaximumValue() instead of separate calls to minimumValue() and maximumValue().

See also

maximumValue()

See also

uniqueValues()

Parameters:

index (int)

Return type:

Any

modifySelection(self, selectIds: Any, deselectIds: Any)[source]

Modifies the current selection on this layer

Parameters:
  • selectIds (Any) – Select these ids

  • deselectIds (Any) – Deselect these ids

See also

selectByIds()

See also

deselect()

See also

deselect()

moveVertex(self, x: float, y: float, atFeatureId: int, atVertex: int) bool[source]

Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates.

Note

Calls to moveVertex() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:
  • x (float)

  • y (float)

  • atFeatureId (int)

  • atVertex (int)

Return type:

bool

moveVertexV2(self, p: QgsPoint, atFeatureId: int, atVertex: int) bool

Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates.

Note

Calls to moveVertex() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Parameters:
  • p (QgsPoint)

  • atFeatureId (int)

  • atVertex (int)

Return type:

bool

primaryKeyAttributes(self) List[int][source]

Returns the list of attributes which make up the layer’s primary keys.

Return type:

List[int]

signal raiseError(msg: str)[source]

Signals an error related to this vector layer.

Parameters:

msg (str)

signal readCustomSymbology(element: QDomElement, errorMessage: str)[source]

Signal emitted whenever the symbology (QML-file) for this layer is being read. If there is custom style information saved in the file, you can connect to this signal and update the layer style accordingly.

Parameters:
  • element (QDomElement) – The XML layer style element.

  • errorMessage (str) – Write error messages into this string.

readExtentFromXml(self) bool[source]

Returns True if the extent is read from the XML document when data source has no metadata, False if it’s the data provider which determines it.

Return type:

bool

signal readOnlyChanged[source]

Emitted when the read only state of this layer is changed. Only applies to manually set readonly state, not to the edit mode.

See also

setReadOnly()

virtual readXml(self, layer_node: QDomNode, context: QgsReadWriteContext) bool[source]

Reads vector layer specific state from project file Dom node.

Note

Called by QgsMapLayer.readXml().

Parameters:
Return type:

bool

referencingRelations(self, idx: int) List[QgsRelation]

Returns the layer’s relations, where the foreign key is on this layer.

Parameters:

idx (int) – Only get relations, where idx forms part of the foreign key

Return type:

List[QgsRelation]

Returns:

A list of relations

removeExpressionField(self, index: int)[source]

Removes an expression field

Parameters:

index (int) – The index of the field

removeFeatureRendererGenerator(self, id: str | None)[source]

Removes the feature renderer with matching id from the layer.

The corresponding generator will be deleted.

Added in version 3.18.

Parameters:

id (Optional[str])

removeFieldAlias(self, index: int)[source]

Removes an alias (a display name) for attributes to display in dialogs

Parameters:

index (int)

removeFieldConstraint(self, index: int, constraint: QgsFieldConstraints.Constraint)[source]

Removes a constraint for a specified field index. Any constraints inherited from the layer’s data provider will be kept intact and cannot be removed.

Parameters:
removeJoin(self, joinLayerId: str | None) bool[source]

Removes a vector layer join

Return type:

bool

Returns:

True if join was found and successfully removed

Parameters:

joinLayerId (Optional[str])

removeSelection(self)[source]

Clear selection

See also

selectByIds()

See also

reselect()

renameAttribute(self, index: int, newName: str | None) bool[source]

Renames an attribute field (but does not commit it).

Parameters:
  • index (int) – attribute index

  • newName (Optional[str]) – new name of field

Note

Calls to renameAttribute() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Return type:

bool

renderer(self) QgsFeatureRenderer | None[source]

Returns the feature renderer used for rendering the features in the layer in 2D map views.

See also

setRenderer()

Return type:

Optional[QgsFeatureRenderer]

reselect(self)[source]

Reselects the previous set of selected features. This is only applicable after a prior call to removeSelection().

Any other modifications to the selection following a call to removeSelection() clears memory of the previous selection and consequently calling reselect() has no impact.

Added in version 3.10.

virtual resolveReferences(self, project: QgsProject | None)[source]

Resolves references to other layers (kept as layer IDs after reading XML) into layer objects.

Parameters:

project (Optional[QgsProject])

rollBack(self, deleteBuffer: bool = True) bool[source]

Stops a current editing operation and discards any uncommitted edits.

If deleteBuffer is True the editing buffer will be completely deleted (the default behavior).

See also

startEditing()

See also

commitChanges()

Parameters:

deleteBuffer (bool = True)

Return type:

bool

select(self, featureId: int)[source]

Selects feature by its ID

Parameters:

featureId (int) – The id of the feature to select

See also

select()

select(self, featureIds: Any)[source]

Selects features by their ID

Parameters:

featureIds (Any) – The ids of the features to select

See also

select()

selectAll(self)[source]

Select all the features

selectByExpression(self, expression: str | None, behavior: Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection, context: QgsExpressionContext | None = None)[source]

Selects matching features using an expression.

Parameters:
  • expression (Optional[str]) – expression to evaluate to select features

  • behavior (Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection) – selection type, allows adding to current selection, removing from selection, etc.

  • context (Optional[QgsExpressionContext] = None) – since QGIS 3.26, specifies an optional expression context to use when selecting features. If not specified a default one will be built.

See also

selectByRect()

See also

selectByIds()

selectByIds(self, ids: Any, behavior: Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection)[source]

Selects matching features using a list of feature IDs. Will emit the selectionChanged() signal with the clearAndSelect flag set.

Parameters:
  • ids (Any) – feature IDs to select

  • behavior (Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection) – selection type, allows adding to current selection, removing from selection, etc.

See also

selectByRect()

selectByRect(self, rect: QgsRectangle, behavior: Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection)[source]

Selects features found within the search rectangle (in layer’s coordinates)

Parameters:
  • rect (QgsRectangle) – search rectangle

  • behavior (Qgis.SelectBehavior = Qgis.SelectBehavior.SetSelection) – selection type, allows adding to current selection, removing from selection, etc.

See also

selectByIds()

selectedFeatureCount(self) int[source]

Returns the number of features that are selected in this layer.

Return type:

int

selectedFeatureIds(self) Any

Returns a list of the selected features IDs in this layer.

See also

selectByIds()

Return type:

Any

selectedFeatures(self) List[QgsFeature][source]

Returns a copy of the user-selected features.

Warning

Calling this method triggers a request for all attributes and geometry for the selected features. Consider using the much more efficient selectedFeatureIds() or selectedFeatureCount() if you do not require access to the feature attributes or geometry.

Return type:

List[QgsFeature]

Returns:

A list of QgsFeature

See also

getSelectedFeatures() which is more memory friendly when handling large selections

signal selectionChanged(selected: QgsFeatureIds, deselected: QgsFeatureIds, clearAndSelect: bool)[source]

Emitted when selection was changed

Parameters:
  • selected (QgsFeatureIds) – Newly selected feature ids

  • deselected (QgsFeatureIds) – Ids of all features which have previously been selected but are not any more

  • clearAndSelect (bool) – In case this is set to True, the old selection was dismissed and the new selection corresponds to selected

setAttributeTableConfig(self, attributeTableConfig: QgsAttributeTableConfig)[source]

Sets the attribute table configuration object. This defines the appearance of the attribute table.

Parameters:

attributeTableConfig (QgsAttributeTableConfig)

setAuxiliaryLayer(self, layer: QgsAuxiliaryLayer | None = None)[source]

Sets the current auxiliary layer. The auxiliary layer is automatically put in editable mode and fields are updated. Moreover, a join is created between the current layer and the auxiliary layer. Ownership is transferred.

Parameters:

layer (Optional[QgsAuxiliaryLayer] = None)

setConstraintExpression(self, index: int, expression: str | None, description: str | None = '')[source]

Sets the constraint expression for the specified field index. An optional descriptive name for the constraint can also be set. Setting an empty expression will clear any existing expression constraint.

Parameters:
  • index (int)

  • expression (Optional[str])

  • description (Optional[str] = '')

setCoordinateSystem(self)[source]

Setup the coordinate system transformation for the layer

setDefaultValueDefinition(self, index: int, definition: QgsDefaultValue)[source]

Sets the definition of the expression to use when calculating the default value for a field.

Parameters:
  • index (int) – field index

  • definition (QgsDefaultValue) – default value definition to use and evaluate when calculating default values for field. Pass an empty expression to clear the default.

See also

defaultValue()

setDiagramLayerSettings(self, s: QgsDiagramLayerSettings)[source]
Parameters:

s (QgsDiagramLayerSettings)

setDiagramRenderer(self, r: QgsDiagramRenderer | None)[source]

Sets diagram rendering object (takes ownership)

Parameters:

r (Optional[QgsDiagramRenderer])

setDisplayExpression(self, displayExpression: str | None)[source]

Set the preview expression, used to create a human readable preview string. Used e.g. in the attribute table feature list. Uses QgsExpression.

Parameters:

displayExpression (Optional[str]) – The expression which will be used to preview features for this layer

setEditFormConfig(self, editFormConfig: QgsEditFormConfig)[source]

Sets the editFormConfig (configuration) of the form used to represent this vector layer.

See also

editFormConfig()

Parameters:

editFormConfig (QgsEditFormConfig)

setEditorWidgetSetup(self, index: int, setup: QgsEditorWidgetSetup)[source]

Sets the editor widget setup for the field at the specified index.

The editor widget setup defines which QgsFieldFormatter and editor widget will be used for the field.

Parameters:
setExcludeAttributesWfs(self, att: Iterable[str | None])[source]

A set of attributes that are not advertised in WFS requests with QGIS server.

Deprecated since version 3.16: Use setFieldConfigurationFlag() instead.

Parameters:

att (Iterable[Optional[str]])

setExcludeAttributesWms(self, att: Iterable[str | None])[source]

A set of attributes that are not advertised in WMS requests with QGIS server.

Deprecated since version 3.16: Use setFieldConfigurationFlag() instead.

Parameters:

att (Iterable[Optional[str]])

virtual setExtent3D(self, rect: QgsBox3D)[source]

Sets the extent

Parameters:

rect (QgsBox3D)

setFeatureBlendMode(self, blendMode: QPainter.CompositionMode)[source]

Sets the blending mode used for rendering each feature

Parameters:

blendMode (QPainter.CompositionMode)

setFieldAlias(self, index: int, aliasString: str | None)[source]

Sets an alias (a display name) for attributes to display in dialogs

Parameters:
  • index (int)

  • aliasString (Optional[str])

setFieldConfigurationFlag(self, index: int, flag: Qgis.FieldConfigurationFlag, active: bool)[source]

Sets the given configuration flag for the field at given index to be active or not.

Added in version 3.34.

Parameters:
setFieldConfigurationFlags(self, index: int, flags: Qgis.FieldConfigurationFlags | Qgis.FieldConfigurationFlag)[source]

Sets the configuration flags of the field at given index

Added in version 3.34.

Parameters:
setFieldConstraint(self, index: int, constraint: QgsFieldConstraints.Constraint, strength: QgsFieldConstraints.ConstraintStrength = QgsFieldConstraints.ConstraintStrengthHard)[source]

Sets a constraint for a specified field index. Any constraints inherited from the layer’s data provider will be kept intact and cannot be modified. Ie, calling this method only allows for new constraints to be added on top of the existing provider constraints.

Parameters:
  • index (int)

  • constraint (QgsFieldConstraints.Constraint)

  • strength (QgsFieldConstraints.ConstraintStrength = QgsFieldConstraints.ConstraintStrengthHard)

setFieldDuplicatePolicy(self, index: int, policy: Qgis.FieldDuplicatePolicy)[source]

Sets a duplicate policy for the field with the specified index.

Raises:

KeyError – if no field with the specified index exists

Added in version 3.38.

Parameters:
setFieldMergePolicy(self, index: int, policy: Qgis.FieldDomainMergePolicy)[source]

Sets a merge policy for the field with the specified index.

Raises:

KeyError – if no field with the specified index exists

Added in version 3.44.

Parameters:
setFieldSplitPolicy(self, index: int, policy: Qgis.FieldDomainSplitPolicy)[source]

Sets a split policy for the field with the specified index.

Raises:

KeyError – if no field with the specified index exists

Added in version 3.30.

Parameters:
setLabeling(self, labeling: QgsAbstractVectorLayerLabeling | None)[source]

Sets labeling configuration. Takes ownership of the object.

Parameters:

labeling (Optional[QgsAbstractVectorLayerLabeling])

setLabelsEnabled(self, enabled: bool)[source]

Sets whether labels should be enabled for the layer.

Note

Labels will only be rendered if labelsEnabled() is True and a labeling object is returned by labeling().

See also

labelsEnabled()

See also

labeling()

Parameters:

enabled (bool)

setProviderEncoding(self, encoding: str | None)[source]

Sets the text encoding of the data provider.

An empty encoding string indicates that the provider should automatically select the most appropriate encoding.

Warning

Support for setting the provider encoding depends on the underlying data provider. Check dataProvider().capabilities() for the QgsVectorDataProvider.SelectEncoding capability in order to determine if the provider supports this ability.

Parameters:

encoding (Optional[str])

setReadExtentFromXml(self, readExtentFromXml: bool)[source]

Flag allowing to indicate if the extent has to be read from the XML document when data source has no metadata or if the data provider has to determine it.

Parameters:

readExtentFromXml (bool)

setReadOnly(self, readonly: bool = True) bool[source]

Makes layer read-only (editing disabled) or not

Return type:

bool

Returns:

False if the layer is in editing yet or if the data source is in read-only mode

Parameters:

readonly (bool = True)

setRenderer(self, r: QgsFeatureRenderer | None)[source]

Sets the feature renderer which will be invoked to represent this layer in 2D map views. Ownership is transferred.

See also

renderer()

Parameters:

r (Optional[QgsFeatureRenderer])

setSimplifyMethod(self, simplifyMethod: QgsVectorSimplifyMethod)[source]

Sets the simplification settings for fast rendering of features

Parameters:

simplifyMethod (QgsVectorSimplifyMethod)

virtual setSubsetString(self, subset: str | None) bool[source]

Sets the string (typically sql) used to define a subset of the layer

Parameters:

subset (Optional[str]) – The subset string. This may be the where clause of a sql statement or other definition string specific to the underlying dataprovider and data store.

Return type:

bool

Returns:

True, when setting the subset string was successful, False otherwise

simplifyDrawingCanbeApplied(self, renderContext: QgsRenderContext, simplifyHint: Qgis.VectorRenderingSimplificationFlag) bool[source]

Returns whether the VectorLayer can apply the specified simplification hint

Note

Do not use in 3rd party code - may be removed in future version!

Parameters:
Return type:

bool

simplifyMethod(self) QgsVectorSimplifyMethod

Returns the simplification settings for fast rendering of features

Return type:

QgsVectorSimplifyMethod

splitFeatures(self, splitLine: Iterable[QgsPointXY], topologicalEditing: bool = False) Qgis.GeometryOperationResult[source]

Splits features cut by the given line

Parameters:
  • splitLine (Iterable[QgsPointXY]) – line that splits the layer features

  • topologicalEditing (bool = False) – True if topological editing is enabled

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • NothingHappened

  • LayerNotEditable

  • InvalidInputGeometryType

  • InvalidBaseGeometry

  • GeometryEngineError

  • SplitCannotSplitPoint

Note

Calls to splitFeatures() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

splitFeatures(self, splitLine: Iterable[QgsPoint], topologicalEditing: bool = False) Qgis.GeometryOperationResult[source]

Splits features cut by the given line

Parameters:
  • splitLine (Iterable[QgsPoint]) – line that splits the layer features

  • topologicalEditing (bool = False) – True if topological editing is enabled

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • NothingHappened

  • LayerNotEditable

  • InvalidInputGeometryType

  • InvalidBaseGeometry

  • GeometryEngineError

  • SplitCannotSplitPoint

Note

Calls to splitFeatures() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

splitFeatures(self, curve: QgsCurve | None, preserveCircular: bool = False, topologicalEditing: bool = False)[source]

Splits features cut by the given curve

Parameters:
  • curve (Optional[QgsCurve]) – curve that splits the layer features

  • preserveCircular (bool = False) – whether circular strings are preserved after splitting

  • topologicalEditing (bool = False) -> (Qgis.GeometryOperationResult) – True if topological editing is enabled

Returns:

  • Qgis.GeometryOperationResult

    • Success

    • NothingHappened

    • LayerNotEditable

    • InvalidInputGeometryType

    • InvalidBaseGeometry

    • GeometryEngineError

    • SplitCannotSplitPoint

  • topologyTestPoints: topological points to be tested against other layers

Note

Calls to splitFeatures() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Added in version 3.16.

splitParts(self, splitLine: Iterable[QgsPointXY], topologicalEditing: bool = False) Qgis.GeometryOperationResult[source]

Splits parts cut by the given line

Parameters:
  • splitLine (Iterable[QgsPointXY]) – line that splits the layer features

  • topologicalEditing (bool = False) – True if topological editing is enabled

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • NothingHappened

  • LayerNotEditable

  • InvalidInputGeometryType

  • InvalidBaseGeometry

  • GeometryEngineError

  • SplitCannotSplitPoint

Note

Calls to splitParts() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Deprecated since version 3.12: Will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

splitParts(self, splitLine: Iterable[QgsPoint], topologicalEditing: bool = False) Qgis.GeometryOperationResult[source]

Splits parts cut by the given line

Parameters:
  • splitLine (Iterable[QgsPoint]) – line that splits the layer features

  • topologicalEditing (bool = False) – True if topological editing is enabled

Return type:

Qgis.GeometryOperationResult

Returns:

Qgis.GeometryOperationResult

  • Success

  • NothingHappened

  • LayerNotEditable

  • InvalidInputGeometryType

  • InvalidBaseGeometry

  • GeometryEngineError

  • SplitCannotSplitPoint

Note

Calls to splitParts() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

startEditing(self) bool[source]

Makes the layer editable.

This starts an edit session on this layer. Changes made in this edit session will not be made persistent until commitChanges() is called, and can be reverted by calling rollBack().

Return type:

bool

Returns:

True if the layer was successfully made editable, or False if the operation failed (e.g. due to an underlying read-only data source, or lack of edit support by the backend data provider).

See also

commitChanges()

See also

rollBack()

storageType(self) str[source]

Returns the permanent storage type for this layer as a friendly name. This is obtained from the data provider and does not follow any standard.

Return type:

str

storedExpressionManager(self) QgsStoredExpressionManager | None[source]

Returns the manager of the stored expressions for this layer.

Added in version 3.10.

Return type:

Optional[QgsStoredExpressionManager]

virtual subsetString(self) str[source]

Returns the string (typically sql) used to define a subset of the layer.

Return type:

str

Returns:

The subset string or an empty string if not implemented by the provider

signal subsetStringChanged[source]

Emitted when the layer’s subset string has changed.

Added in version 3.2.

virtual supportsEditing(self) bool[source]

Returns whether the layer supports editing or not

Return type:

bool

Returns:

False if the layer is read only or the data provider has no editing capabilities

Added in version 3.18.

signal supportsEditingChanged[source]

Emitted when the read only state or the data provider of this layer is changed.

Added in version 3.18.

signal symbolFeatureCountMapChanged[source]

Emitted when the feature count for symbols on this layer has been recalculated.

symbolFeatureIds(self, legendKey: str | None) Any[source]

Ids of features rendered with specified legend key. Features must be first calculated by countSymbolFeatures()

Return type:

Any

Returns:

Ids of features rendered by symbol or -1 if failed or Ids are not available

Added in version 3.10.

Parameters:

legendKey (Optional[str])

translateFeature(self, featureId: int, dx: float, dy: float) int[source]

Translates feature by dx, dy

Parameters:
  • featureId (int) – id of the feature to translate

  • dx (float) – translation of x-coordinate

  • dy (float) – translation of y-coordinate

Return type:

int

Returns:

0 in case of success

Note

Calls to translateFeature() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

uniqueStringsMatching(self, index: int, substring: str | None, limit: int = -1, feedback: QgsFeedback | None = None) List[str][source]

Returns unique string values of an attribute which contain a specified subset string. Subset matching is done in a case-insensitive manner. Note that in some circumstances when unsaved changes are present for the layer then the returned list may contain outdated values (for instance when the attribute value in a saved feature has been changed inside the edit buffer then the previous saved value will be included in the returned list).

Parameters:
  • index (int) – column index for attribute

  • substring (Optional[str]) – substring to match (case insensitive)

  • limit (int = -1) – maxmum number of the values to return, or -1 to return all unique values

  • feedback (Optional[QgsFeedback] = None) – optional feedback object for canceling request

Return type:

List[str]

Returns:

list of unique strings containing substring

virtual uniqueValues(self, fieldIndex: int, limit: int = -1) Set[Any]

Calculates a list of unique values contained within an attribute in the layer. Note that in some circumstances when unsaved changes are present for the layer then the returned list may contain outdated values (for instance when the attribute value in a saved feature has been changed inside the edit buffer then the previous saved value will be included in the returned list).

Parameters:
  • fieldIndex (int) – column index for attribute

  • limit (int = -1) – maximum number of values to return (or -1 if unlimited)

See also

minimumValue()

See also

maximumValue()

Return type:

Set[Any]

updateExpressionField(self, index: int, exp: str | None)[source]

Changes the expression used to define an expression based (virtual) field

Parameters:
  • index (int) – The index of the expression to change

  • exp (Optional[str]) – The new expression to set

virtual updateExtents(self, force: bool = False)[source]

Update the extents for the layer. This is necessary if features are added/deleted or the layer has been subsetted.

Parameters:

force (bool = False) – True to update layer extent even if it’s read from xml by default, False otherwise

updateFeature(self, feature: QgsFeature, skipDefaultValues: bool = False) bool[source]

Updates an existing feature in the layer, replacing the attributes and geometry for the feature with matching QgsFeature.id() with the attributes and geometry from feature. Changes are not immediately committed to the layer.

If skipDefaultValue is set to True, default field values will not be updated. This can be used to override default field value expressions.

Returns True if the feature’s attribute was successfully changed.

Note

Calls to updateFeature() are only valid for layers in which edits have been enabled by a call to startEditing(). Changes made to features using this method are not committed to the underlying data provider until a commitChanges() call is made. Any uncommitted changes can be discarded by calling rollBack().

Warning

This method needs to query the underlying data provider to fetch the feature with matching QgsFeature.id() on every call. Depending on the underlying data source this can be slow to execute. Consider using the more efficient changeAttributeValue() or changeGeometry() methods instead.

See also

startEditing()

See also

commitChanges()

See also

changeGeometry()

Parameters:
  • feature (QgsFeature)

  • skipDefaultValues (bool = False)

Return type:

bool

updateFields(self)[source]

Will regenerate the fields property of this layer by obtaining all fields from the dataProvider, joined fields and virtual fields. It will also take any changes made to default values into consideration.

Note

Unless the fields on the provider have directly been modified, there is no reason to call this method.

signal updatedFields[source]

Emitted whenever the fields available from this layer have been changed. This can be due to manually adding attributes or due to a join.

vectorJoins(self) List[QgsVectorLayerJoinInfo]
Return type:

List[QgsVectorLayerJoinInfo]

vectorLayerTypeFlags(self) Qgis.VectorLayerTypeFlags[source]

Returns the vector layer type flags.

See also

isSqlQuery()

Added in version 3.24.

Return type:

Qgis.VectorLayerTypeFlags

virtual wkbType(self) Qgis.WkbType[source]

Returns the WKBType or WKBUnknown in case of error

Return type:

Qgis.WkbType

signal writeCustomSymbology[source]

Signal emitted whenever the symbology (QML-file) for this layer is being written. If there is custom style information you want to save to the file, you can connect to this signal and update the element accordingly.

Parameters:
  • element – The XML element where you can add additional style information to.

  • doc – The XML document that you can use to create new XML nodes.

  • errorMessage – Write error messages into this string.

writeSld(self, node: QDomNode, doc: QDomDocument, errorMessage: str | None, props: Dict[str, Any] = {}) bool[source]

Writes the symbology of the layer into the document provided in SLD 1.1 format

Parameters:
  • node (QDomNode) – the node that will have the style element added to it.

  • doc (QDomDocument) – the document that will have the QDomNode added.

  • errorMessage (Optional[str]) – reference to string that will be updated with any error messages

  • props (Dict[str, Any] = {}) – a open ended set of properties that can drive/inform the SLD encoding

Return type:

bool

Returns:

True in case of success

Deprecated since version 3.44: Use the version with QgsSldExportContext instead.

writeSld(self, node: QDomNode, doc: QDomDocument, context: QgsSldExportContext) bool[source]

Writes the symbology of the layer into the document provided in SLD 1.1 format

Parameters:
  • node (QDomNode) – the node that will have the style element added to it.

  • doc (QDomDocument) – the document that will have the QDomNode added.

  • context (QgsSldExportContext) – export context. Errors and warnings may be retrieved from this context.

Return type:

bool

Returns:

True in case of success

Added in version 3.44.

virtual writeXml(self, layer_node: QDomNode, doc: QDomDocument, context: QgsReadWriteContext) bool[source]

Writes vector layer specific state to project file Dom node.

Note

Called by QgsMapLayer.writeXml().

Parameters:
Return type:

bool