QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsvectorlayer.h
Go to the documentation of this file.
1
2/***************************************************************************
3 -------------------
4 begin : Oct 29, 2003
5 copyright : (C) 2003 by Gary E.Sherman
6 email : sherman at mrcc.com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSVECTORLAYER_H
19#define QGSVECTORLAYER_H
20
21
22#include "qgis_core.h"
23#include <QMap>
24#include <QSet>
25#include <QList>
26#include <QStringList>
27#include <QFont>
28#include <QMutex>
29
30#include "qgis.h"
31#include "qgsmaplayer.h"
32#include "qgsfeature.h"
33#include "qgsfeaturerequest.h"
34#include "qgsfeaturesource.h"
35#include "qgsfields.h"
38#include "qgseditformconfig.h"
41#include "qgsfeatureiterator.h"
46
47class QPainter;
48class QImage;
49
53class QgsCurve;
59class QgsGeometry;
60class QgsGeometryVertexIndex;
61class QgsMapToPixel;
62class QgsRectangle;
63class QgsRectangle;
64class QgsRelation;
65class QgsWeakRelation;
69class QgsSymbol;
76class QgsPoint;
77class QgsFeedback;
85
86typedef QList<int> QgsAttributeList;
87typedef QSet<int> QgsAttributeIds;
88
89// TODO QGIS4: Remove virtual from non-inherited methods (like isModified)
90
392{
393 Q_OBJECT
394
395 Q_PROPERTY( QString subsetString READ subsetString WRITE setSubsetString NOTIFY subsetStringChanged )
396 Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
397 Q_PROPERTY( QString mapTipTemplate READ mapTipTemplate WRITE setMapTipTemplate NOTIFY mapTipTemplateChanged )
398 Q_PROPERTY( QgsEditFormConfig editFormConfig READ editFormConfig WRITE setEditFormConfig NOTIFY editFormConfigChanged )
399 Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged )
400 Q_PROPERTY( bool supportsEditing READ supportsEditing NOTIFY supportsEditingChanged )
401
402 public:
403
409 {
410
414 explicit LayerOptions( bool loadDefaultStyle = true,
415 bool readExtentFromXml = false )
416 : loadDefaultStyle( loadDefaultStyle )
417 , readExtentFromXml( readExtentFromXml )
418 {}
419
424 explicit LayerOptions( const QgsCoordinateTransformContext &transformContext,
425 bool loadDefaultStyle = true,
426 bool readExtentFromXml = false
427 )
428 : loadDefaultStyle( loadDefaultStyle )
429 , readExtentFromXml( readExtentFromXml )
430 , transformContext( transformContext )
431 {}
432
434 bool loadDefaultStyle = true;
435
440 bool readExtentFromXml = false;
441
447
460
473
487 bool skipCrsValidation = false;
488
500 bool forceReadOnly = false;
501 };
502
507 struct CORE_EXPORT DeleteContext
508 {
509
513 explicit DeleteContext( bool cascade = false, QgsProject *project = nullptr ): cascade( cascade ), project( project ) {}
514
521 QList<QgsVectorLayer *> handledLayers( bool includeAuxiliaryLayers = true ) const;
522
526 QgsFeatureIds handledFeatures( QgsVectorLayer *layer ) const;
527
528 QMap<QgsVectorLayer *, QgsFeatureIds> mHandledFeatures SIP_SKIP;
531 };
532
546 explicit QgsVectorLayer( const QString &path = QString(), const QString &baseName = QString(),
547 const QString &providerLib = "ogr", const QgsVectorLayer::LayerOptions &options = QgsVectorLayer::LayerOptions() );
548
549 ~QgsVectorLayer() override;
550
552 QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
554 QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
555
556#ifdef SIP_RUN
557 SIP_PYOBJECT __repr__();
558 % MethodCode
559 QString str = QStringLiteral( "<QgsVectorLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral( "Invalid" ) );
560 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
561 % End
562#endif
563
572 QgsVectorLayer *clone() const override SIP_FACTORY;
573
578 QString storageType() const;
579
583 QString capabilitiesString() const;
584
585
595 bool isSqlQuery() const;
596
603 Qgis::VectorLayerTypeFlags vectorLayerTypeFlags() const;
604
605
609 QString dataComment() const;
610
618 QString displayField() const;
619
627 void setDisplayExpression( const QString &displayExpression );
628
635 QString displayExpression() const;
636
637 QgsVectorDataProvider *dataProvider() FINAL;
638 const QgsVectorDataProvider *dataProvider() const FINAL SIP_SKIP;
639 QgsMapLayerTemporalProperties *temporalProperties() override;
640 QgsMapLayerElevationProperties *elevationProperties() override;
641 QgsAbstractProfileGenerator *createProfileGenerator( const QgsProfileRequest &request ) override SIP_FACTORY;
642
653 void setProviderEncoding( const QString &encoding );
654
656 void setCoordinateSystem();
657
663 bool addJoin( const QgsVectorLayerJoinInfo &joinInfo );
664
669 bool removeJoin( const QString &joinLayerId );
670
675 QgsVectorLayerJoinBuffer *joinBuffer() { return mJoinBuffer; }
676
681 const QgsVectorLayerJoinBuffer *joinBuffer() const { return mJoinBuffer; } SIP_SKIP;
682
683 const QList<QgsVectorLayerJoinInfo> vectorJoins() const;
684
693 bool setDependencies( const QSet<QgsMapLayerDependency> &layers ) FINAL;
694
702 QSet<QgsMapLayerDependency> dependencies() const FINAL;
703
714 int addExpressionField( const QString &exp, const QgsField &fld );
715
723 void removeExpressionField( int index );
724
734 QString expressionField( int index ) const;
735
745 void updateExpressionField( int index, const QString &exp );
746
753 QgsActionManager *actions() { return mActions; }
754
760 const QgsActionManager *actions() const SIP_SKIP { return mActions; }
761
767 int selectedFeatureCount() const;
768
778 Q_INVOKABLE void selectByRect( QgsRectangle &rect, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
779
790 Q_INVOKABLE void selectByExpression( const QString &expression, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection, QgsExpressionContext *context = nullptr );
791
802 Q_INVOKABLE void selectByIds( const QgsFeatureIds &ids, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
803
815 Q_INVOKABLE void modifySelection( const QgsFeatureIds &selectIds, const QgsFeatureIds &deselectIds );
816
818 Q_INVOKABLE void invertSelection();
819
821 Q_INVOKABLE void selectAll();
822
830 Q_INVOKABLE void invertSelectionInRectangle( QgsRectangle &rect );
831
844 Q_INVOKABLE QgsFeatureList selectedFeatures() const;
845
861 QgsFeatureIterator getSelectedFeatures( QgsFeatureRequest request = QgsFeatureRequest() ) const;
862
870 Q_INVOKABLE const QgsFeatureIds &selectedFeatureIds() const;
871
873 Q_INVOKABLE QgsRectangle boundingBoxOfSelected() const;
874
882 bool labelsEnabled() const;
883
893 void setLabelsEnabled( bool enabled );
894
900 bool diagramsEnabled() const;
901
903 void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
904 const QgsDiagramRenderer *diagramRenderer() const { return mDiagramRenderer; }
905
906 void setDiagramLayerSettings( const QgsDiagramLayerSettings &s );
907 const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; }
908
915 QgsFeatureRenderer *renderer() { return mRenderer; }
916
924 const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
925
932 void setRenderer( QgsFeatureRenderer *r SIP_TRANSFER );
933
943 void addFeatureRendererGenerator( QgsFeatureRendererGenerator *generator SIP_TRANSFER );
944
954 void removeFeatureRendererGenerator( const QString &id );
955
963 QList< const QgsFeatureRendererGenerator * > featureRendererGenerators() const;
964
966 Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const;
967
969 Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL;
970
971 QgsCoordinateReferenceSystem sourceCrs() const FINAL;
972 QString sourceName() const FINAL;
973
978 bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) FINAL;
979
984 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const FINAL;
985
986 QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
987 QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
988
993 void resolveReferences( QgsProject *project ) FINAL;
994
1011 virtual void saveStyleToDatabase( const QString &name, const QString &description,
1012 bool useAsDefault, const QString &uiFileContent,
1013 QString &msgError SIP_OUT,
1014 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1015
1025 virtual int listStylesInDatabase( QStringList &ids SIP_OUT, QStringList &names SIP_OUT,
1026 QStringList &descriptions SIP_OUT, QString &msgError SIP_OUT );
1027
1031 virtual QString getStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1032
1040 virtual bool deleteStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1041
1049 virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT, bool loadFromLocalDb,
1050 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1051
1056 QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT,
1057 QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1058
1072 bool loadAuxiliaryLayer( const QgsAuxiliaryStorage &storage, const QString &key = QString() );
1073
1083 void setAuxiliaryLayer( QgsAuxiliaryLayer *layer SIP_TRANSFER = nullptr );
1084
1090 QgsAuxiliaryLayer *auxiliaryLayer();
1091
1097 const QgsAuxiliaryLayer *auxiliaryLayer() const SIP_SKIP;
1098
1099 bool readSymbology( const QDomNode &layerNode, QString &errorMessage,
1100 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1101 bool readStyle( const QDomNode &node, QString &errorMessage,
1102 QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1103 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1104 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1105 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1106 const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1107
1116 bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QVariantMap &props = QVariantMap() ) const;
1117
1118 bool readSld( const QDomNode &node, QString &errorMessage ) FINAL;
1119
1125 long long featureCount( const QString &legendKey ) const;
1126
1133 QgsFeatureIds symbolFeatureIds( const QString &legendKey ) const;
1134
1145 FeatureAvailability hasFeatures() const FINAL;
1146
1147
1148 QString loadDefaultStyle( bool &resultFlag SIP_OUT ) FINAL;
1149
1163 QgsVectorLayerFeatureCounter *countSymbolFeatures( bool storeSymbolFids = false );
1164
1172 virtual bool setSubsetString( const QString &subset );
1173
1178 virtual QString subsetString() const;
1179
1185 QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const FINAL;
1186
1190 inline QgsFeatureIterator getFeatures( const QString &expression )
1191 {
1192 return getFeatures( QgsFeatureRequest( expression ) );
1193 }
1194
1200 {
1201 QgsFeature feature;
1202 getFeatures( QgsFeatureRequest( fid ) ).nextFeature( feature );
1203 return feature;
1204 }
1205
1210 QgsGeometry getGeometry( QgsFeatureId fid ) const;
1211
1216 {
1217 return getFeatures( QgsFeatureRequest( fids ) );
1218 }
1219
1224 {
1225 return getFeatures( QgsFeatureRequest( rectangle ) );
1226 }
1227
1228 bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1229
1255 bool updateFeature( QgsFeature &feature, bool skipDefaultValues = false );
1256
1268 bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex );
1269
1281 bool insertVertex( const QgsPoint &point, QgsFeatureId atFeatureId, int beforeVertex );
1282
1293 bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex );
1294
1305 bool moveVertex( const QgsPoint &p, QgsFeatureId atFeatureId, int atVertex ) SIP_PYNAME( moveVertexV2 );
1306
1317 Qgis::VectorEditResult deleteVertex( QgsFeatureId featureId, int vertex );
1318
1326 Q_INVOKABLE bool deleteSelectedFeatures( int *deletedCount = nullptr, QgsVectorLayer::DeleteContext *context = nullptr );
1327
1348 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addRing( const QVector<QgsPointXY> &ring, QgsFeatureId *featureId = nullptr ) SIP_DEPRECATED;
1349
1350
1370 Q_INVOKABLE Qgis::GeometryOperationResult addRing( const QgsPointSequence &ring, QgsFeatureId *featureId = nullptr );
1371
1392 Q_INVOKABLE Qgis::GeometryOperationResult addRing( QgsCurve *ring SIP_TRANSFER, QgsFeatureId *featureId = nullptr ) SIP_PYNAME( addCurvedRing );
1393
1413 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QList<QgsPointXY> &ring ) SIP_DEPRECATED;
1414
1415#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1416
1437 Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QVector<QgsPointXY> &ring ) SIP_PYNAME( addPartV2 ) SIP_DEPRECATED;
1438#endif
1439
1459 Q_INVOKABLE Qgis::GeometryOperationResult addPart( const QgsPointSequence &ring ) SIP_PYNAME( addPartV2 );
1460
1468 Q_INVOKABLE Qgis::GeometryOperationResult addPart( QgsCurve *ring SIP_TRANSFER ) SIP_PYNAME( addCurvedPart );
1469
1481 Q_INVOKABLE int translateFeature( QgsFeatureId featureId, double dx, double dy );
1482
1503 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitParts( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1504
1524 Q_INVOKABLE Qgis::GeometryOperationResult splitParts( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1525
1546 Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitFeatures( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1547
1567 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1568
1591 Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsCurve *curve, QgsPointSequence &topologyTestPoints SIP_OUT, bool preserveCircular = false, bool topologicalEditing = false );
1592
1606 int addTopologicalPoints( const QgsGeometry &geom );
1607
1624 Q_DECL_DEPRECATED int addTopologicalPoints( const QgsPointXY &p ) SIP_DEPRECATED;
1625
1642 int addTopologicalPoints( const QgsPoint &p );
1643
1660 int addTopologicalPoints( const QgsPointSequence &ps );
1661
1668 const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
1669
1677
1682 void setLabeling( QgsAbstractVectorLayerLabeling *labeling SIP_TRANSFER );
1683
1685 bool isEditable() const FINAL;
1686
1688 bool isSpatial() const FINAL;
1689
1691 bool isModified() const override;
1692
1699 bool isAuxiliaryField( int index, int &srcIndex ) const;
1700
1702 void reload() FINAL;
1703
1708 QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) FINAL SIP_FACTORY;
1709
1710 QgsRectangle extent() const FINAL;
1711 QgsRectangle sourceExtent() const FINAL;
1712
1719 QgsFields fields() const FINAL;
1720
1724 inline QgsAttributeList attributeList() const { return mFields.allAttributesList(); }
1725
1729 QgsAttributeList primaryKeyAttributes() const;
1730
1736 long long featureCount() const FINAL;
1737
1744 bool setReadOnly( bool readonly = true );
1745
1751 bool supportsEditing() const override;
1752
1773 bool changeGeometry( QgsFeatureId fid, QgsGeometry &geometry, bool skipDefaultValue = false );
1774
1805 bool changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue = QVariant(), bool skipDefaultValues = false );
1806
1842 bool changeAttributeValues( QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues = QgsAttributeMap(), bool skipDefaultValues = false );
1843
1853 bool addAttribute( const QgsField &field );
1854
1860 void setFieldAlias( int index, const QString &aliasString );
1861
1867 void removeFieldAlias( int index );
1868
1879 bool renameAttribute( int index, const QString &newName );
1880
1887 QString attributeAlias( int index ) const;
1888
1890 QString attributeDisplayName( int index ) const;
1891
1893 QgsStringMap attributeAliases() const;
1894
1899 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWms() const SIP_DEPRECATED;
1900
1905 Q_DECL_DEPRECATED void setExcludeAttributesWms( const QSet<QString> &att ) SIP_DEPRECATED;
1906
1911 Q_DECL_DEPRECATED QSet<QString> excludeAttributesWfs() const SIP_DEPRECATED;
1912
1917 Q_DECL_DEPRECATED void setExcludeAttributesWfs( const QSet<QString> &att ) SIP_DEPRECATED;
1918
1927 virtual bool deleteAttribute( int attr );
1928
1936 bool deleteAttributes( const QList<int> &attrs );
1937
1938 bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1939
1950 bool deleteFeature( QgsFeatureId fid, DeleteContext *context = nullptr );
1951
1965 bool deleteFeatures( const QgsFeatureIds &fids, DeleteContext *context = nullptr );
1966
1990 Q_INVOKABLE bool commitChanges( bool stopEditing = true );
1991
1997 QStringList commitErrors() const;
1998
2008 Q_INVOKABLE bool rollBack( bool deleteBuffer = true );
2009
2016 QList<QgsRelation> referencingRelations( int idx ) const;
2017
2027 QList<QgsWeakRelation> weakRelations() const SIP_SKIP;
2028
2037 void setWeakRelations( const QList< QgsWeakRelation > &relations ) SIP_SKIP;
2038
2040 Q_INVOKABLE QgsVectorLayerEditBuffer *editBuffer() { return mEditBuffer; }
2041
2046 const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
2047
2052 void beginEditCommand( const QString &text );
2053
2055 void endEditCommand();
2056
2058 void destroyEditCommand();
2059
2064 Q_DECL_DEPRECATED static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int vertexSize );
2065
2074 void updateFields();
2075
2090 QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
2091 QgsExpressionContext *context = nullptr ) const;
2092
2104 void setDefaultValueDefinition( int index, const QgsDefaultValue &definition );
2105
2116 QgsDefaultValue defaultValueDefinition( int index ) const;
2117
2125 QgsFieldConstraints::Constraints fieldConstraints( int fieldIndex ) const;
2126
2132 QMap< QgsFieldConstraints::Constraint, QgsFieldConstraints::ConstraintStrength> fieldConstraintsAndStrength( int fieldIndex ) const;
2133
2143
2151 void removeFieldConstraint( int index, QgsFieldConstraints::Constraint constraint );
2152
2160 QString constraintExpression( int index ) const;
2161
2169 QString constraintDescription( int index ) const;
2170
2179 void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
2180
2186 void setFieldConfigurationFlags( int index, QgsField::ConfigurationFlags flags ) SIP_SKIP;
2187
2192 void setFieldConfigurationFlag( int index, QgsField::ConfigurationFlag flag, bool active ) SIP_SKIP;
2193
2199 QgsField::ConfigurationFlags fieldConfigurationFlags( int index ) const SIP_SKIP;
2200
2204 void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
2205
2212 QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
2213
2225 QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;
2226
2240 QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
2241 QgsFeedback *feedback = nullptr ) const;
2242
2257 QVariant minimumValue( int index ) const FINAL;
2258
2273 QVariant maximumValue( int index ) const FINAL;
2274
2275
2295 void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;
2296
2311 QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
2312 const QString &fieldOrExpression,
2313 const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
2314 QgsExpressionContext *context = nullptr,
2315 bool *ok = nullptr,
2316 QgsFeatureIds *fids = nullptr,
2317 QgsFeedback *feedback = nullptr,
2318 QString *error SIP_PYARGREMOVE = nullptr ) const;
2319
2321 void setFeatureBlendMode( QPainter::CompositionMode blendMode );
2323 QPainter::CompositionMode featureBlendMode() const;
2324
2325 QString htmlMetadata() const FINAL;
2326
2331 void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mSimplifyMethod = simplifyMethod; }
2332
2337 inline const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
2338
2344 bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const;
2345
2353 QgsConditionalLayerStyles *conditionalStyles() const;
2354
2359 QgsAttributeTableConfig attributeTableConfig() const;
2360
2365 void setAttributeTableConfig( const QgsAttributeTableConfig &attributeTableConfig );
2366
2374 QString mapTipTemplate() const;
2375
2383 void setMapTipTemplate( const QString &mapTipTemplate );
2384
2386
2387 QgsExpressionContextScope *createExpressionContextScope() const FINAL SIP_FACTORY;
2388
2396 QgsEditFormConfig editFormConfig() const;
2397
2404 void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
2405
2413 void setReadExtentFromXml( bool readExtentFromXml );
2414
2422 bool readExtentFromXml() const;
2423
2429 bool isEditCommandActive() const { return mEditCommandActive; }
2430
2436 QgsGeometryOptions *geometryOptions() const;
2437
2455 bool allowCommit() const SIP_SKIP;
2456
2474 void setAllowCommit( bool allowCommit ) SIP_SKIP;
2475
2481 QgsStoredExpressionManager *storedExpressionManager() { return mStoredExpressionManager; }
2482
2483 public slots:
2484
2492 void select( QgsFeatureId featureId );
2493
2501 Q_INVOKABLE void select( const QgsFeatureIds &featureIds );
2502
2510 void deselect( QgsFeatureId featureId );
2511
2519 Q_INVOKABLE void deselect( const QgsFeatureIds &featureIds );
2520
2527 Q_INVOKABLE void removeSelection();
2528
2539 void reselect();
2540
2547 virtual void updateExtents( bool force = false );
2548
2563 Q_INVOKABLE bool startEditing();
2564
2570 virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
2571
2573
2574 bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
2575
2576 signals:
2577
2585 void selectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect );
2586
2593
2596
2599
2605 void beforeCommitChanges( bool stopEditing );
2606
2609
2615
2621
2630 void attributeAdded( int idx );
2631
2638 void beforeAddingExpressionField( const QString &fieldName );
2639
2648 void attributeDeleted( int idx );
2649
2657
2664
2674
2684 void featuresDeleted( const QgsFeatureIds &fids );
2685
2691
2697
2706 void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
2707
2715 void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
2716
2718 void committedAttributesDeleted( const QString &layerId, const QgsAttributeList &deletedAttributes );
2720 void committedAttributesAdded( const QString &layerId, const QList<QgsField> &addedAttributes );
2722 void committedFeaturesAdded( const QString &layerId, const QgsFeatureList &addedFeatures );
2724 void committedFeaturesRemoved( const QString &layerId, const QgsFeatureIds &deletedFeatureIds );
2726 void committedAttributeValuesChanges( const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues );
2728 void committedGeometriesChanges( const QString &layerId, const QgsGeometryMap &changedGeometries );
2729
2731 void labelingFontNotFound( QgsVectorLayer *layer, const QString &fontfamily );
2732
2734 void featureBlendModeChanged( QPainter::CompositionMode blendMode );
2735
2741 void editCommandStarted( const QString &text );
2742
2749
2756
2766 void readCustomSymbology( const QDomElement &element, QString &errorMessage );
2767
2777 void writeCustomSymbology( QDomElement &element, QDomDocument &doc, QString &errorMessage ) const;
2778
2785
2792
2796 void raiseError( const QString &msg );
2797
2804
2814
2821
2828
2829 protected:
2831 void setExtent( const QgsRectangle &rect ) FINAL;
2832
2833 private slots:
2834 void invalidateSymbolCountedFlag();
2835 void onFeatureCounterCompleted();
2836 void onFeatureCounterTerminated();
2837 void onJoinedFieldsChanged();
2838 void onFeatureDeleted( QgsFeatureId fid );
2839 void onRelationsLoaded();
2840 void onSymbolsCounted();
2841 void onDirtyTransaction( const QString &sql, const QString &name );
2842 void emitDataChanged();
2843 void onAfterCommitChangesDependency();
2844
2845 private:
2846 void updateDefaultValues( QgsFeatureId fid, QgsFeature feature = QgsFeature() );
2847
2857 bool isReadOnly() const FINAL;
2858
2865 bool setDataProvider( QString const &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
2866
2878 void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
2879
2881 void readSldLabeling( const QDomNode &node );
2882
2884 bool readSldTextSymbolizer( const QDomNode &node, QgsPalLayerSettings &settings ) const;
2885
2887 QgsAbstractVectorLayerLabeling *readLabelingFromCustomProperties();
2888
2889 bool deleteFeatureCascade( QgsFeatureId fid, DeleteContext *context = nullptr );
2890
2891#ifdef SIP_RUN
2892 QgsVectorLayer( const QgsVectorLayer &rhs );
2893#endif
2895 void minimumOrMaximumValue( int index, QVariant *minimum, QVariant *maximum ) const;
2896
2897 void createEditBuffer();
2898 void clearEditBuffer();
2899
2900 QgsConditionalLayerStyles *mConditionalStyles = nullptr;
2901
2903 QgsVectorDataProvider *mDataProvider = nullptr;
2904
2906 QgsVectorLayerTemporalProperties *mTemporalProperties = nullptr;
2907
2908 QgsVectorLayerElevationProperties *mElevationProperties = nullptr;
2909
2911 QString mDisplayExpression;
2912
2913 QString mMapTipTemplate;
2914
2916 QgsActionManager *mActions = nullptr;
2917
2919 bool mDataSourceReadOnly = false;
2920
2927 bool mReadOnly = false;
2928
2934 QgsFeatureIds mSelectedFeatureIds;
2935
2939 QgsFeatureIds mPreviousSelectedFeatureIds;
2940
2942 QgsFields mFields;
2943
2945 QgsStringMap mAttributeAliasMap;
2946
2948 QMap<QString, QgsDefaultValue> mDefaultExpressionMap;
2949
2951 QSet<int> mDefaultValueOnUpdateFields;
2952
2954 QMap< QString, QgsFieldConstraints::Constraints > mFieldConstraints;
2955
2957 QMap< QPair< QString, QgsFieldConstraints::Constraint >, QgsFieldConstraints::ConstraintStrength > mFieldConstraintStrength;
2958
2960 QMap< QString, QPair< QString, QString > > mFieldConstraintExpressions;
2961
2962 QMap< QString, QgsField::ConfigurationFlags > mFieldConfigurationFlags;
2963 QMap< QString, QgsEditorWidgetSetup > mFieldWidgetSetups;
2964
2966 QgsEditFormConfig mEditFormConfig;
2967
2970
2972 QgsFeatureRenderer *mRenderer = nullptr;
2973
2975 QgsVectorSimplifyMethod mSimplifyMethod;
2976
2978 QgsAbstractVectorLayerLabeling *mLabeling = nullptr;
2979
2981 bool mLabelsEnabled = false;
2982
2984 bool mLabelFontNotFoundNotified = false;
2985
2987 QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode_SourceOver;
2988
2990 bool mVertexMarkerOnlyForSelection = false;
2991
2992 QStringList mCommitErrors;
2993
2995 QgsVectorLayerEditBuffer *mEditBuffer = nullptr;
2999
3000 //stores information about joined layers
3001 QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
3002
3004 QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;
3005
3006 //diagram rendering object. 0 if diagram drawing is disabled
3007 QgsDiagramRenderer *mDiagramRenderer = nullptr;
3008
3009 //stores infos about diagram placement (placement type, priority, position distance)
3010 QgsDiagramLayerSettings *mDiagramLayerSettings = nullptr;
3011
3012 mutable bool mValidExtent = false;
3013 mutable bool mLazyExtent = true;
3014
3016 std::unique_ptr<QgsAuxiliaryLayer> mAuxiliaryLayer;
3017
3019 QString mAuxiliaryLayerKey;
3020
3021 // Features in renderer classes counted
3022 bool mSymbolFeatureCounted = false;
3023
3024 // Feature counts for each renderer legend key
3025 QHash<QString, long long> mSymbolFeatureCountMap;
3026 QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
3027
3029 bool mEditCommandActive = false;
3030
3032 bool mCommitChangesActive = false;
3033
3034 bool mReadExtentFromXml;
3035 QgsRectangle mXmlExtent;
3036
3037 QgsFeatureIds mDeletedFids;
3038
3039 QgsAttributeTableConfig mAttributeTableConfig;
3040
3041 mutable QMutex mFeatureSourceConstructorMutex;
3042
3043 QgsVectorLayerFeatureCounter *mFeatureCounter = nullptr;
3044
3045 std::unique_ptr<QgsGeometryOptions> mGeometryOptions;
3046
3047 bool mAllowCommit = true;
3048
3050 QgsStoredExpressionManager *mStoredExpressionManager = nullptr;
3051
3053
3055 bool mDataChangedFired = false;
3056
3057 QList<QgsWeakRelation> mWeakRelations;
3058
3059 bool mSetLegendFromStyle = false;
3060
3061 QList< QgsFeatureRendererGenerator * > mRendererGenerators;
3062
3064 QTimer *mRefreshRendererTimer = nullptr;
3065};
3066
3067
3068
3069// clazy:excludeall=qstring-allocations
3070
3071#endif
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:72
GeometryOperationResult
Success or failure of a geometry operation.
Definition: qgis.h:955
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition: qgis.h:860
SelectBehavior
Specifies how a selection should be applied.
Definition: qgis.h:798
@ SetSelection
Set selection, removing any existing selection.
Abstract base class for simplify geometries using a specific algorithm.
Abstract base class for objects which generate elevation profiles.
Interface for classes which can generate elevation profiles.
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
Storage and management of actions associated with a layer.
Utility class for calculating aggregates for a field (or expression) over the features from a vector ...
This is a container for configuration of the attribute table.
Class allowing to manage the auxiliary storage for a vector layer.
Class providing some utility methods to manage auxiliary storage.
The QgsConditionalLayerStyles class holds conditional style information for a layer.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for curved geometry type.
Definition: qgscurve.h:36
Abstract base class for spatial data provider implementations.
The QgsDefaultValue class provides a container for managing client side default values for fields.
Stores the settings for rendering of all diagrams for a layer.
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
Contains configuration settings for an editor form.
Holder for the widget type and its configuration for a field.
Manages an editor widget Widget and wrapper share the same parent.
Abstract interface for generating an expression context.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Abstract interface for generating an expression context scope.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Buffers information about expression fields for a vector layer.
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
An interface for objects which generate feature renderers for vector layers.
This class wraps a request for features to a vector layer (or directly its vector data provider).
An interface for objects which accept features via addFeature(s) methods.
virtual bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
Adds a single feature to the sink.
An interface for objects which provide features via a getFeatures method.
virtual QSet< QVariant > uniqueValues(int fieldIndex, int limit=-1) const
Returns the set of unique values contained within the specified fieldIndex from this source.
SpatialIndexPresence
Enumeration of spatial index presence states.
virtual QgsWkbTypes::Type wkbType() const =0
Returns the geometry type for features returned by this source.
virtual QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const =0
Returns an iterator for the features in the source.
virtual long long featureCount() const =0
Returns the number of features contained in the source, or -1 if the feature count is unknown.
virtual SpatialIndexPresence hasSpatialIndex() const
Returns an enum value representing the presence of a valid spatial index on the source,...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
ConstraintStrength
Strength of constraints.
@ ConstraintStrengthHard
Constraint must be honored before feature can be accepted.
Constraint
Constraints which may be present on a field.
Encapsulate a field in an attribute table or data source.
Definition: qgsfield.h:51
ConfigurationFlag
Configuration flags for fields These flags are meant to be user-configurable and are not describing a...
Definition: qgsfield.h:80
Container of fields for a vector layer.
Definition: qgsfields.h:45
The QgsGeometryOptions class contains options to automatically adjust geometries to constraints on a ...
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:164
Base class for storage of map layer elevation properties.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the layer.
virtual bool setDependencies(const QSet< QgsMapLayerDependency > &layers)
Sets the list of dependencies.
virtual QSet< QgsMapLayerDependency > dependencies() const
Gets the list of dependencies.
friend class QgsVectorLayer
Definition: qgsmaplayer.h:2130
virtual bool isEditable() const
Returns true if the layer can be edited.
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
virtual void setExtent(const QgsRectangle &rect)
Sets the extent.
virtual void setTransformContext(const QgsCoordinateTransformContext &transformContext)=0
Sets the coordinate transform context to transformContext.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Contains settings for how a map layer will be labeled.
A class to represent a 2D point.
Definition: qgspointxy.h:59
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
Encapsulates properties and constraints relating to fetching elevation profiles from different source...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:104
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
This class manages a set of relations between layers.
Contains information about the context of a rendering operation.
Manages stored expressions regarding creation, modification and storing in the project.
An interface for classes which can visit style entity (e.g.
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:93
This is the base class for vector data providers.
The edit buffer group manages a group of edit buffers.
Vector layer specific subclass of QgsMapLayerElevationProperties.
Counts the features in a QgsVectorLayer in task.
Partial snapshot of vector layer's state (only the members necessary for access to features)
Manages joined fields for a vector layer.
Defines left outer join from our vector layer to some other vector layer.
Implementation of map layer temporal properties for vector layers.
Represents a vector layer which manages a vector based data sets.
void committedFeaturesAdded(const QString &layerId, const QgsFeatureList &addedFeatures)
Emitted when features are added to the provider if not in transaction mode.
void labelingFontNotFound(QgsVectorLayer *layer, const QString &fontfamily)
Emitted when the font family defined for labeling layer is not found on system.
void featureBlendModeChanged(QPainter::CompositionMode blendMode)
Signal emitted when setFeatureBlendMode() is called.
void beforeRemovingExpressionField(int idx)
Will be emitted, when an expression field is going to be deleted from this vector layer.
void committedGeometriesChanges(const QString &layerId, const QgsGeometryMap &changedGeometries)
Emitted when geometry changes are saved to the provider if not in transaction mode.
void beforeCommitChanges(bool stopEditing)
Emitted before changes are committed to the data provider.
void mapTipTemplateChanged()
Emitted when the map tip changes.
void attributeAdded(int idx)
Will be emitted, when a new attribute has been added to this vector layer.
QgsAbstractVectorLayerLabeling * labeling()
Access to labeling configuration.
void allowCommitChanged()
Emitted whenever the allowCommitChanged() property of this layer changes.
void editCommandStarted(const QString &text)
Signal emitted when a new edit command has been started.
const QgsDiagramLayerSettings * diagramLayerSettings() const
const QgsVectorLayerJoinBuffer * joinBuffer() const
Returns a const pointer on join buffer object.
void editCommandDestroyed()
Signal emitted, when an edit command is destroyed.
QgsVectorLayer(const QgsVectorLayer &rhs)=delete
QgsVectorLayer cannot be copied.
void featuresDeleted(const QgsFeatureIds &fids)
Emitted when features have been deleted.
void subsetStringChanged()
Emitted when the layer's subset string has changed.
void committedFeaturesRemoved(const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
Emitted when features are deleted from the provider if not in transaction mode.
void symbolFeatureCountMapChanged()
Emitted when the feature count for symbols on this layer has been recalculated.
void writeCustomSymbology(QDomElement &element, QDomDocument &doc, QString &errorMessage) const
Signal emitted whenever the symbology (QML-file) for this layer is being written.
void attributeDeleted(int idx)
Will be emitted, when an attribute has been deleted from this vector layer.
QgsVectorLayer & operator=(QgsVectorLayer const &rhs)=delete
QgsVectorLayer cannot be copied.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
void beforeEditingStarted()
Emitted before editing on this layer is started.
void committedAttributeValuesChanges(const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
Emitted when attribute value changes are saved to the provider if not in transaction mode.
void committedAttributesAdded(const QString &layerId, const QList< QgsField > &addedAttributes)
Emitted when attributes are added to the provider if not in transaction mode.
void committedAttributesDeleted(const QString &layerId, const QgsAttributeList &deletedAttributes)
Emitted when attributes are deleted from the provider if not in transaction mode.
void displayExpressionChanged()
Emitted when the display expression changes.
const QgsActionManager * actions() const
Returns all layer actions defined on this layer.
void editFormConfigChanged()
Will be emitted whenever the edit form configuration of this layer changes.
void afterCommitChanges()
Emitted after changes are committed to the data provider.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
void raiseError(const QString &msg)
Signals an error related to this vector layer.
void editCommandEnded()
Signal emitted, when an edit command successfully ended.
void supportsEditingChanged()
Emitted when the read only state or the data provider of this layer is changed.
void readOnlyChanged()
Emitted when the read only state of this layer is changed.
void attributeValueChanged(QgsFeatureId fid, int idx, const QVariant &value)
Emitted whenever an attribute value change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsFeatureIds &fids)
Queries the layer for the features with the given ids.
void afterRollBack()
Emitted after changes are rolled back.
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings for fast rendering of features.
void selectionChanged(const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect)
Emitted when selection was changed.
void beforeAddingExpressionField(const QString &fieldName)
Will be emitted, when an expression field is going to be added to this vector layer.
void updatedFields()
Emitted whenever the fields available from this layer have been changed.
void featureAdded(QgsFeatureId fid)
Emitted when a new feature has been added to the layer.
void featureDeleted(QgsFeatureId fid)
Emitted when a feature has been deleted.
void readCustomSymbology(const QDomElement &element, QString &errorMessage)
Signal emitted whenever the symbology (QML-file) for this layer is being read.
const QgsVectorLayerEditBuffer * editBuffer() const
Buffer with uncommitted editing operations.
void beforeRollBack()
Emitted before changes are rolled back.
void geometryChanged(QgsFeatureId fid, const QgsGeometry &geometry)
Emitted whenever a geometry change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsRectangle &rectangle)
Queries the layer for the features which intersect the specified rectangle.
const QgsFeatureRenderer * renderer() const
Returns the feature renderer used for rendering the features in the layer in 2D map views.
void beforeModifiedCheck() const
Emitted when the layer is checked for modifications. Use for last-minute additions.
const QgsDiagramRenderer * diagramRenderer() const
This class contains information how to simplify geometries fetched from a vector layer.
SimplifyHint
Simplification flags for fast rendering of features.
The QgsWeakRelation class represent a QgsRelation with possibly unresolved layers or unmatched fields...
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
#define str(x)
Definition: qgis.cpp:37
QMap< QString, QString > QgsStringMap
Definition: qgis.h:3022
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_SKIP
Definition: qgis_sip.h:126
#define FINAL
Definition: qgis_sip.h:237
#define SIP_PYNAME(name)
Definition: qgis_sip.h:81
#define SIP_PYARGREMOVE
Definition: qgis_sip.h:151
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_FACTORY
Definition: qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence
QMap< int, QVariant > QgsAttributeMap
Definition: qgsattributes.h:42
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:917
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:908
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:922
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28
QList< int > QgsAttributeList
Definition: qgsfield.h:26
const QgsField & field
Definition: qgsfield.h:463
QList< int > QgsAttributeList
QSet< int > QgsAttributeIds
Context for cascade delete features.
DeleteContext(bool cascade=false, QgsProject *project=nullptr)
Constructor for DeleteContext.
Setting options for loading vector layers.
LayerOptions(bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
LayerOptions(const QgsCoordinateTransformContext &transformContext, bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
QgsCoordinateReferenceSystem fallbackCrs
Fallback layer coordinate reference system.