QGIS API Documentation  3.22.4-Białowieża (ce8e65e95e)
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"
36 #include "qgsvectordataprovider.h"
38 #include "qgseditformconfig.h"
40 #include "qgsaggregatecalculator.h"
41 #include "qgsfeatureiterator.h"
44 #include "qgsexpressioncontext.h"
45 
46 class QPainter;
47 class QImage;
48 
50 class QgsActionManager;
52 class QgsCurve;
54 class QgsDiagramRenderer;
57 class QgsFeatureRenderer;
58 class QgsGeometry;
59 class QgsGeometryVertexIndex;
60 class QgsMapToPixel;
61 class QgsRectangle;
62 class QgsRectangle;
63 class QgsRelation;
64 class QgsWeakRelation;
65 class QgsRelationManager;
68 class QgsSymbol;
75 class QgsPoint;
76 class QgsFeedback;
78 class QgsAuxiliaryLayer;
79 class QgsGeometryOptions;
83 
84 typedef QList<int> QgsAttributeList;
85 typedef QSet<int> QgsAttributeIds;
86 
87 // TODO QGIS4: Remove virtual from non-inherited methods (like isModified)
88 
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 
489  };
490 
495  struct CORE_EXPORT DeleteContext
496  {
497 
501  explicit DeleteContext( bool cascade = false, QgsProject *project = nullptr ): cascade( cascade ), project( project ) {}
502 
509  QList<QgsVectorLayer *> handledLayers( bool includeAuxiliaryLayers = true ) const;
510 
514  QgsFeatureIds handledFeatures( QgsVectorLayer *layer ) const;
515 
516  QMap<QgsVectorLayer *, QgsFeatureIds> mHandledFeatures SIP_SKIP;
517  bool cascade;
519  };
520 
534  explicit QgsVectorLayer( const QString &path = QString(), const QString &baseName = QString(),
535  const QString &providerLib = "ogr", const QgsVectorLayer::LayerOptions &options = QgsVectorLayer::LayerOptions() );
536 
537  ~QgsVectorLayer() override;
538 
540  QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
542  QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
543 
544 #ifdef SIP_RUN
545  SIP_PYOBJECT __repr__();
546  % MethodCode
547  QString str = QStringLiteral( "<QgsVectorLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral( "Invalid" ) );
548  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
549  % End
550 #endif
551 
560  QgsVectorLayer *clone() const override SIP_FACTORY;
561 
566  QString storageType() const;
567 
571  QString capabilitiesString() const;
572 
576  QString dataComment() const;
577 
585  QString displayField() const;
586 
594  void setDisplayExpression( const QString &displayExpression );
595 
602  QString displayExpression() const;
603 
604  QgsVectorDataProvider *dataProvider() FINAL;
605  const QgsVectorDataProvider *dataProvider() const FINAL SIP_SKIP;
606 
610  QgsMapLayerTemporalProperties *temporalProperties() override;
611 
622  void setProviderEncoding( const QString &encoding );
623 
625  void setCoordinateSystem();
626 
632  bool addJoin( const QgsVectorLayerJoinInfo &joinInfo );
633 
638  bool removeJoin( const QString &joinLayerId );
639 
644  QgsVectorLayerJoinBuffer *joinBuffer() { return mJoinBuffer; }
645 
650  const QgsVectorLayerJoinBuffer *joinBuffer() const { return mJoinBuffer; } SIP_SKIP;
651 
652  const QList<QgsVectorLayerJoinInfo> vectorJoins() const;
653 
662  bool setDependencies( const QSet<QgsMapLayerDependency> &layers ) FINAL;
663 
671  QSet<QgsMapLayerDependency> dependencies() const FINAL;
672 
683  int addExpressionField( const QString &exp, const QgsField &fld );
684 
692  void removeExpressionField( int index );
693 
703  QString expressionField( int index ) const;
704 
714  void updateExpressionField( int index, const QString &exp );
715 
722  QgsActionManager *actions() { return mActions; }
723 
729  const QgsActionManager *actions() const SIP_SKIP { return mActions; }
730 
736  int selectedFeatureCount() const;
737 
747  Q_INVOKABLE void selectByRect( QgsRectangle &rect, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
748 
758  Q_INVOKABLE void selectByExpression( const QString &expression, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
759 
770  Q_INVOKABLE void selectByIds( const QgsFeatureIds &ids, Qgis::SelectBehavior behavior = Qgis::SelectBehavior::SetSelection );
771 
783  Q_INVOKABLE void modifySelection( const QgsFeatureIds &selectIds, const QgsFeatureIds &deselectIds );
784 
786  Q_INVOKABLE void invertSelection();
787 
789  Q_INVOKABLE void selectAll();
790 
798  Q_INVOKABLE void invertSelectionInRectangle( QgsRectangle &rect );
799 
812  Q_INVOKABLE QgsFeatureList selectedFeatures() const;
813 
829  QgsFeatureIterator getSelectedFeatures( QgsFeatureRequest request = QgsFeatureRequest() ) const;
830 
838  Q_INVOKABLE const QgsFeatureIds &selectedFeatureIds() const;
839 
841  Q_INVOKABLE QgsRectangle boundingBoxOfSelected() const;
842 
850  bool labelsEnabled() const;
851 
861  void setLabelsEnabled( bool enabled );
862 
868  bool diagramsEnabled() const;
869 
871  void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
872  const QgsDiagramRenderer *diagramRenderer() const { return mDiagramRenderer; }
873 
874  void setDiagramLayerSettings( const QgsDiagramLayerSettings &s );
875  const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; }
876 
883  QgsFeatureRenderer *renderer() { return mRenderer; }
884 
892  const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
893 
900  void setRenderer( QgsFeatureRenderer *r SIP_TRANSFER );
901 
911  void addFeatureRendererGenerator( QgsFeatureRendererGenerator *generator SIP_TRANSFER );
912 
922  void removeFeatureRendererGenerator( const QString &id );
923 
931  QList< const QgsFeatureRendererGenerator * > featureRendererGenerators() const;
932 
934  Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const;
935 
937  Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL;
938 
939  QgsCoordinateReferenceSystem sourceCrs() const FINAL;
940  QString sourceName() const FINAL;
941 
946  bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) FINAL;
947 
952  bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const FINAL;
953 
954  QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
955  QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
956 
961  void resolveReferences( QgsProject *project ) FINAL;
962 
971  virtual void saveStyleToDatabase( const QString &name, const QString &description,
972  bool useAsDefault, const QString &uiFileContent,
973  QString &msgError SIP_OUT );
974 
984  virtual int listStylesInDatabase( QStringList &ids SIP_OUT, QStringList &names SIP_OUT,
985  QStringList &descriptions SIP_OUT, QString &msgError SIP_OUT );
986 
990  virtual QString getStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
991 
999  virtual bool deleteStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1000 
1008  virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT, bool loadFromLocalDb,
1009  QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1010 
1015  QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT,
1016  QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1017 
1031  bool loadAuxiliaryLayer( const QgsAuxiliaryStorage &storage, const QString &key = QString() );
1032 
1042  void setAuxiliaryLayer( QgsAuxiliaryLayer *layer SIP_TRANSFER = nullptr );
1043 
1049  QgsAuxiliaryLayer *auxiliaryLayer();
1050 
1056  const QgsAuxiliaryLayer *auxiliaryLayer() const SIP_SKIP;
1057 
1058  bool readSymbology( const QDomNode &layerNode, QString &errorMessage,
1059  QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1060  bool readStyle( const QDomNode &node, QString &errorMessage,
1061  QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1062  bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1063  const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1064  bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1065  const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1066 
1075  bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QVariantMap &props = QVariantMap() ) const;
1076 
1077  bool readSld( const QDomNode &node, QString &errorMessage ) FINAL;
1078 
1084  long long featureCount( const QString &legendKey ) const;
1085 
1092  QgsFeatureIds symbolFeatureIds( const QString &legendKey ) const;
1093 
1104  FeatureAvailability hasFeatures() const FINAL;
1105 
1106 
1107  QString loadDefaultStyle( bool &resultFlag SIP_OUT ) FINAL;
1108 
1122  QgsVectorLayerFeatureCounter *countSymbolFeatures( bool storeSymbolFids = false );
1123 
1131  virtual bool setSubsetString( const QString &subset );
1132 
1137  virtual QString subsetString() const;
1138 
1144  QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const FINAL;
1145 
1149  inline QgsFeatureIterator getFeatures( const QString &expression )
1150  {
1151  return getFeatures( QgsFeatureRequest( expression ) );
1152  }
1153 
1158  inline QgsFeature getFeature( QgsFeatureId fid ) const
1159  {
1160  QgsFeature feature;
1161  getFeatures( QgsFeatureRequest( fid ) ).nextFeature( feature );
1162  return feature;
1163  }
1164 
1169  QgsGeometry getGeometry( QgsFeatureId fid ) const;
1170 
1175  {
1176  return getFeatures( QgsFeatureRequest( fids ) );
1177  }
1178 
1182  inline QgsFeatureIterator getFeatures( const QgsRectangle &rectangle )
1183  {
1184  return getFeatures( QgsFeatureRequest( rectangle ) );
1185  }
1186 
1187  bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1188 
1214  bool updateFeature( QgsFeature &feature, bool skipDefaultValues = false );
1215 
1227  bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex );
1228 
1240  bool insertVertex( const QgsPoint &point, QgsFeatureId atFeatureId, int beforeVertex );
1241 
1252  bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex );
1253 
1264  bool moveVertex( const QgsPoint &p, QgsFeatureId atFeatureId, int atVertex ) SIP_PYNAME( moveVertexV2 );
1265 
1276  Qgis::VectorEditResult deleteVertex( QgsFeatureId featureId, int vertex );
1277 
1285  Q_INVOKABLE bool deleteSelectedFeatures( int *deletedCount = nullptr, DeleteContext *context = nullptr );
1286 
1307  Q_DECL_DEPRECATED Qgis::GeometryOperationResult addRing( const QVector<QgsPointXY> &ring, QgsFeatureId *featureId = nullptr ) SIP_DEPRECATED;
1308 
1309 
1329  Q_INVOKABLE Qgis::GeometryOperationResult addRing( const QgsPointSequence &ring, QgsFeatureId *featureId = nullptr );
1330 
1351  Q_INVOKABLE Qgis::GeometryOperationResult addRing( QgsCurve *ring SIP_TRANSFER, QgsFeatureId *featureId = nullptr ) SIP_PYNAME( addCurvedRing );
1352 
1372  Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QList<QgsPointXY> &ring ) SIP_DEPRECATED;
1373 
1374 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1375 
1396  Q_DECL_DEPRECATED Qgis::GeometryOperationResult addPart( const QVector<QgsPointXY> &ring ) SIP_PYNAME( addPartV2 ) SIP_DEPRECATED;
1397 #endif
1398 
1418  Q_INVOKABLE Qgis::GeometryOperationResult addPart( const QgsPointSequence &ring ) SIP_PYNAME( addPartV2 );
1419 
1427  Q_INVOKABLE Qgis::GeometryOperationResult addPart( QgsCurve *ring SIP_TRANSFER ) SIP_PYNAME( addCurvedPart );
1428 
1440  Q_INVOKABLE int translateFeature( QgsFeatureId featureId, double dx, double dy );
1441 
1462  Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitParts( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1463 
1483  Q_INVOKABLE Qgis::GeometryOperationResult splitParts( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1484 
1505  Q_DECL_DEPRECATED Qgis::GeometryOperationResult splitFeatures( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1506 
1526  Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1527 
1550  Q_INVOKABLE Qgis::GeometryOperationResult splitFeatures( const QgsCurve *curve, QgsPointSequence &topologyTestPoints SIP_OUT, bool preserveCircular = false, bool topologicalEditing = false );
1551 
1565  int addTopologicalPoints( const QgsGeometry &geom );
1566 
1583  Q_DECL_DEPRECATED int addTopologicalPoints( const QgsPointXY &p ) SIP_DEPRECATED;
1584 
1601  int addTopologicalPoints( const QgsPoint &p );
1602 
1619  int addTopologicalPoints( const QgsPointSequence &ps );
1620 
1627  const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
1628 
1635  QgsAbstractVectorLayerLabeling *labeling() { return mLabeling; }
1636 
1641  void setLabeling( QgsAbstractVectorLayerLabeling *labeling SIP_TRANSFER );
1642 
1644  bool isEditable() const FINAL;
1645 
1647  bool isSpatial() const FINAL;
1648 
1650  bool isModified() const override;
1651 
1658  bool isAuxiliaryField( int index, int &srcIndex ) const;
1659 
1661  void reload() FINAL;
1662 
1667  QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) FINAL SIP_FACTORY;
1668 
1669  QgsRectangle extent() const FINAL;
1670  QgsRectangle sourceExtent() const FINAL;
1671 
1678  QgsFields fields() const FINAL;
1679 
1683  inline QgsAttributeList attributeList() const { return mFields.allAttributesList(); }
1684 
1688  QgsAttributeList primaryKeyAttributes() const;
1689 
1695  long long featureCount() const FINAL;
1696 
1701  bool setReadOnly( bool readonly = true );
1702 
1708  bool supportsEditing() const override;
1709 
1730  bool changeGeometry( QgsFeatureId fid, QgsGeometry &geometry, bool skipDefaultValue = false );
1731 
1762  bool changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue = QVariant(), bool skipDefaultValues = false );
1763 
1799  bool changeAttributeValues( QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues = QgsAttributeMap(), bool skipDefaultValues = false );
1800 
1810  bool addAttribute( const QgsField &field );
1811 
1817  void setFieldAlias( int index, const QString &aliasString );
1818 
1824  void removeFieldAlias( int index );
1825 
1836  bool renameAttribute( int index, const QString &newName );
1837 
1844  QString attributeAlias( int index ) const;
1845 
1847  QString attributeDisplayName( int index ) const;
1848 
1850  QgsStringMap attributeAliases() const;
1851 
1856  Q_DECL_DEPRECATED QSet<QString> excludeAttributesWms() const SIP_DEPRECATED;
1857 
1862  Q_DECL_DEPRECATED void setExcludeAttributesWms( const QSet<QString> &att ) SIP_DEPRECATED;
1863 
1868  Q_DECL_DEPRECATED QSet<QString> excludeAttributesWfs() const SIP_DEPRECATED;
1869 
1874  Q_DECL_DEPRECATED void setExcludeAttributesWfs( const QSet<QString> &att ) SIP_DEPRECATED;
1875 
1884  virtual bool deleteAttribute( int attr );
1885 
1893  bool deleteAttributes( const QList<int> &attrs );
1894 
1895  bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1896 
1907  bool deleteFeature( QgsFeatureId fid, DeleteContext *context = nullptr );
1908 
1922  bool deleteFeatures( const QgsFeatureIds &fids, DeleteContext *context = nullptr );
1923 
1947  Q_INVOKABLE bool commitChanges( bool stopEditing = true );
1948 
1954  QStringList commitErrors() const;
1955 
1965  Q_INVOKABLE bool rollBack( bool deleteBuffer = true );
1966 
1973  QList<QgsRelation> referencingRelations( int idx ) const;
1974 
1981  QList<QgsWeakRelation> weakRelations( ) const SIP_SKIP;
1982 
1983 
1985  Q_INVOKABLE QgsVectorLayerEditBuffer *editBuffer() { return mEditBuffer; }
1986 
1991  const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
1992 
1997  void beginEditCommand( const QString &text );
1998 
2000  void endEditCommand();
2001 
2003  void destroyEditCommand();
2004 
2009  Q_DECL_DEPRECATED static void drawVertexMarker( double x, double y, QPainter &p, Qgis::VertexMarkerType type, int vertexSize );
2010 
2019  void updateFields();
2020 
2035  QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
2036  QgsExpressionContext *context = nullptr ) const;
2037 
2049  void setDefaultValueDefinition( int index, const QgsDefaultValue &definition );
2050 
2061  QgsDefaultValue defaultValueDefinition( int index ) const;
2062 
2070  QgsFieldConstraints::Constraints fieldConstraints( int fieldIndex ) const;
2071 
2077  QMap< QgsFieldConstraints::Constraint, QgsFieldConstraints::ConstraintStrength> fieldConstraintsAndStrength( int fieldIndex ) const;
2078 
2088 
2096  void removeFieldConstraint( int index, QgsFieldConstraints::Constraint constraint );
2097 
2105  QString constraintExpression( int index ) const;
2106 
2114  QString constraintDescription( int index ) const;
2115 
2124  void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
2125 
2131  void setFieldConfigurationFlags( int index, QgsField::ConfigurationFlags flags ) SIP_SKIP;
2132 
2137  void setFieldConfigurationFlag( int index, QgsField::ConfigurationFlag flag, bool active ) SIP_SKIP;
2138 
2144  QgsField::ConfigurationFlags fieldConfigurationFlags( int index ) const SIP_SKIP;
2145 
2149  void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
2150 
2157  QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
2158 
2170  QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;
2171 
2185  QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
2186  QgsFeedback *feedback = nullptr ) const;
2187 
2202  QVariant minimumValue( int index ) const FINAL;
2203 
2218  QVariant maximumValue( int index ) const FINAL;
2219 
2220 
2240  void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;
2241 
2256  QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
2257  const QString &fieldOrExpression,
2258  const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
2259  QgsExpressionContext *context = nullptr,
2260  bool *ok = nullptr,
2261  QgsFeatureIds *fids = nullptr,
2262  QgsFeedback *feedback = nullptr,
2263  QString *error SIP_PYARGREMOVE = nullptr ) const;
2264 
2266  void setFeatureBlendMode( QPainter::CompositionMode blendMode );
2268  QPainter::CompositionMode featureBlendMode() const;
2269 
2270  QString htmlMetadata() const FINAL;
2271 
2276  void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mSimplifyMethod = simplifyMethod; }
2277 
2282  inline const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
2283 
2289  bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const;
2290 
2298  QgsConditionalLayerStyles *conditionalStyles() const;
2299 
2304  QgsAttributeTableConfig attributeTableConfig() const;
2305 
2310  void setAttributeTableConfig( const QgsAttributeTableConfig &attributeTableConfig );
2311 
2319  QString mapTipTemplate() const;
2320 
2328  void setMapTipTemplate( const QString &mapTipTemplate );
2329 
2331 
2332  QgsExpressionContextScope *createExpressionContextScope() const FINAL SIP_FACTORY;
2333 
2341  QgsEditFormConfig editFormConfig() const;
2342 
2349  void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
2350 
2358  void setReadExtentFromXml( bool readExtentFromXml );
2359 
2367  bool readExtentFromXml() const;
2368 
2374  bool isEditCommandActive() const { return mEditCommandActive; }
2375 
2381  QgsGeometryOptions *geometryOptions() const;
2382 
2400  bool allowCommit() const SIP_SKIP;
2401 
2419  void setAllowCommit( bool allowCommit ) SIP_SKIP;
2420 
2426  QgsStoredExpressionManager *storedExpressionManager() { return mStoredExpressionManager; }
2427 
2428  public slots:
2429 
2437  void select( QgsFeatureId featureId );
2438 
2446  Q_INVOKABLE void select( const QgsFeatureIds &featureIds );
2447 
2455  void deselect( QgsFeatureId featureId );
2456 
2464  Q_INVOKABLE void deselect( const QgsFeatureIds &featureIds );
2465 
2472  Q_INVOKABLE void removeSelection();
2473 
2484  void reselect();
2485 
2492  virtual void updateExtents( bool force = false );
2493 
2508  Q_INVOKABLE bool startEditing();
2509 
2515  virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
2516 
2517  SpatialIndexPresence hasSpatialIndex() const override;
2518 
2519  bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
2520 
2521  signals:
2522 
2530  void selectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect );
2531 
2538 
2540  void beforeModifiedCheck() const;
2541 
2544 
2550  void beforeCommitChanges( bool stopEditing );
2551 
2554 
2560 
2566 
2575  void attributeAdded( int idx );
2576 
2583  void beforeAddingExpressionField( const QString &fieldName );
2584 
2593  void attributeDeleted( int idx );
2594 
2602 
2609 
2619 
2629  void featuresDeleted( const QgsFeatureIds &fids );
2630 
2636 
2642 
2651  void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
2652 
2660  void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
2661 
2663  void committedAttributesDeleted( const QString &layerId, const QgsAttributeList &deletedAttributes );
2665  void committedAttributesAdded( const QString &layerId, const QList<QgsField> &addedAttributes );
2667  void committedFeaturesAdded( const QString &layerId, const QgsFeatureList &addedFeatures );
2669  void committedFeaturesRemoved( const QString &layerId, const QgsFeatureIds &deletedFeatureIds );
2671  void committedAttributeValuesChanges( const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues );
2673  void committedGeometriesChanges( const QString &layerId, const QgsGeometryMap &changedGeometries );
2674 
2676  void labelingFontNotFound( QgsVectorLayer *layer, const QString &fontfamily );
2677 
2679  void featureBlendModeChanged( QPainter::CompositionMode blendMode );
2680 
2686  void editCommandStarted( const QString &text );
2687 
2694 
2701 
2711  void readCustomSymbology( const QDomElement &element, QString &errorMessage );
2712 
2722  void writeCustomSymbology( QDomElement &element, QDomDocument &doc, QString &errorMessage ) const;
2723 
2730 
2737 
2741  void raiseError( const QString &msg );
2742 
2749 
2757 
2764 
2771 
2772  protected:
2774  void setExtent( const QgsRectangle &rect ) FINAL;
2775 
2776  private slots:
2777  void invalidateSymbolCountedFlag();
2778  void onFeatureCounterCompleted();
2779  void onFeatureCounterTerminated();
2780  void onJoinedFieldsChanged();
2781  void onFeatureDeleted( QgsFeatureId fid );
2782  void onRelationsLoaded();
2783  void onSymbolsCounted();
2784  void onDirtyTransaction( const QString &sql, const QString &name );
2785  void emitDataChanged();
2786  void onAfterCommitChangesDependency();
2787 
2788  private:
2789  void updateDefaultValues( QgsFeatureId fid, QgsFeature feature = QgsFeature() );
2790 
2794  bool isReadOnly() const FINAL;
2795 
2802  bool setDataProvider( QString const &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
2803 
2815  void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
2816 
2818  void readSldLabeling( const QDomNode &node );
2819 
2821  bool readSldTextSymbolizer( const QDomNode &node, QgsPalLayerSettings &settings ) const;
2822 
2824  QgsAbstractVectorLayerLabeling *readLabelingFromCustomProperties();
2825 
2826  bool deleteFeatureCascade( QgsFeatureId fid, DeleteContext *context = nullptr );
2827 
2828 #ifdef SIP_RUN
2829  QgsVectorLayer( const QgsVectorLayer &rhs );
2830 #endif
2832  void minimumOrMaximumValue( int index, QVariant *minimum, QVariant *maximum ) const;
2833 
2834  QgsConditionalLayerStyles *mConditionalStyles = nullptr;
2835 
2837  QgsVectorDataProvider *mDataProvider = nullptr;
2838 
2840  QgsVectorLayerTemporalProperties *mTemporalProperties = nullptr;
2841 
2843  QString mDisplayExpression;
2844 
2845  QString mMapTipTemplate;
2846 
2848  QgsActionManager *mActions = nullptr;
2849 
2851  bool mReadOnly = false;
2852 
2858  QgsFeatureIds mSelectedFeatureIds;
2859 
2863  QgsFeatureIds mPreviousSelectedFeatureIds;
2864 
2866  QgsFields mFields;
2867 
2869  QgsStringMap mAttributeAliasMap;
2870 
2872  QMap<QString, QgsDefaultValue> mDefaultExpressionMap;
2873 
2875  QSet<int> mDefaultValueOnUpdateFields;
2876 
2878  QMap< QString, QgsFieldConstraints::Constraints > mFieldConstraints;
2879 
2881  QMap< QPair< QString, QgsFieldConstraints::Constraint >, QgsFieldConstraints::ConstraintStrength > mFieldConstraintStrength;
2882 
2884  QMap< QString, QPair< QString, QString > > mFieldConstraintExpressions;
2885 
2886  QMap< QString, QgsField::ConfigurationFlags > mFieldConfigurationFlags;
2887  QMap< QString, QgsEditorWidgetSetup > mFieldWidgetSetups;
2888 
2890  QgsEditFormConfig mEditFormConfig;
2891 
2894 
2896  QgsFeatureRenderer *mRenderer = nullptr;
2897 
2899  QgsVectorSimplifyMethod mSimplifyMethod;
2900 
2902  QgsAbstractVectorLayerLabeling *mLabeling = nullptr;
2903 
2905  bool mLabelsEnabled = false;
2906 
2908  bool mLabelFontNotFoundNotified = false;
2909 
2911  QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode_SourceOver;
2912 
2914  bool mVertexMarkerOnlyForSelection = false;
2915 
2916  QStringList mCommitErrors;
2917 
2919  QgsVectorLayerEditBuffer *mEditBuffer = nullptr;
2922 
2923  //stores information about joined layers
2924  QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
2925 
2927  QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;
2928 
2929  //diagram rendering object. 0 if diagram drawing is disabled
2930  QgsDiagramRenderer *mDiagramRenderer = nullptr;
2931 
2932  //stores infos about diagram placement (placement type, priority, position distance)
2933  QgsDiagramLayerSettings *mDiagramLayerSettings = nullptr;
2934 
2935  mutable bool mValidExtent = false;
2936  mutable bool mLazyExtent = true;
2937 
2939  std::unique_ptr<QgsAuxiliaryLayer> mAuxiliaryLayer;
2940 
2942  QString mAuxiliaryLayerKey;
2943 
2944  // Features in renderer classes counted
2945  bool mSymbolFeatureCounted = false;
2946 
2947  // Feature counts for each renderer legend key
2948  QHash<QString, long long> mSymbolFeatureCountMap;
2949  QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
2950 
2952  bool mEditCommandActive = false;
2953 
2954  bool mReadExtentFromXml;
2955  QgsRectangle mXmlExtent;
2956 
2957  QgsFeatureIds mDeletedFids;
2958 
2959  QgsAttributeTableConfig mAttributeTableConfig;
2960 
2961  mutable QMutex mFeatureSourceConstructorMutex;
2962 
2963  QgsVectorLayerFeatureCounter *mFeatureCounter = nullptr;
2964 
2965  std::unique_ptr<QgsGeometryOptions> mGeometryOptions;
2966 
2967  bool mAllowCommit = true;
2968 
2970  QgsStoredExpressionManager *mStoredExpressionManager = nullptr;
2971 
2973 
2975  bool mDataChangedFired = false;
2976 
2977  QList<QgsWeakRelation> mWeakRelations;
2978 
2979  bool mSetLegendFromStyle = false;
2980 
2981  QList< QgsFeatureRendererGenerator * > mRendererGenerators;
2982 };
2983 
2984 
2985 
2986 // clazy:excludeall=qstring-allocations
2987 
2988 #endif
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:63
GeometryOperationResult
Success or failure of a geometry operation.
Definition: qgis.h:647
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition: qgis.h:574
SelectBehavior
Specifies how a selection should be applied.
Definition: qgis.h:545
@ SetSelection
Set selection, removing any existing selection.
Abstract base class for simplify geometries using a specific algorithm.
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.
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:125
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:2113
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 a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:101
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:38
This is the base class for vector data providers.
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.
const QgsActionManager * actions() const
Returns all layer actions defined on this layer.
void committedFeaturesAdded(const QString &layerId, const QgsFeatureList &addedFeatures)
Emitted when features are added to the provider.
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.
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.
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.
QgsVectorLayer & operator=(QgsVectorLayer const &rhs)=delete
QgsVectorLayer cannot be copied.
void editCommandDestroyed()
Signal emitted, when an edit command is destroyed.
QgsVectorLayer(const QgsVectorLayer &rhs)=delete
QgsVectorLayer cannot be copied.
const QgsDiagramLayerSettings * diagramLayerSettings() const
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.
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.
QgsAbstractVectorLayerLabeling * labeling()
Access to labeling configuration.
void attributeDeleted(int idx)
Will be emitted, when an attribute has been deleted from this vector layer.
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.
void committedAttributesAdded(const QString &layerId, const QList< QgsField > &addedAttributes)
Emitted when attributes are added to the provider.
void committedAttributesDeleted(const QString &layerId, const QgsAttributeList &deletedAttributes)
Emitted when attributes are deleted from the provider.
void displayExpressionChanged()
Emitted when the display expression changes.
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.
const QgsFeatureRenderer * renderer() const
Returns the feature renderer used for rendering the features in the layer in 2D map views.
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 QgsVectorLayerJoinBuffer * joinBuffer() const
Returns a const pointer on join buffer object.
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.
void beforeRollBack()
Emitted before changes are rolled back.
const QgsDiagramRenderer * diagramRenderer() const
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 QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings for fast rendering of features.
void beforeModifiedCheck() const
Emitted when the layer is checked for modifications. Use for last-minute additions.
const QgsVectorLayerEditBuffer * editBuffer() const
Buffer with uncommitted editing operations.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
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:1703
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_SKIP
Definition: qgis_sip.h:126
#define FINAL
Definition: qgis_sip.h:228
#define SIP_PYNAME(name)
Definition: qgis_sip.h:81
#define SIP_PYARGREMOVE
Definition: qgis_sip.h:146
#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:38
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:877
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:868
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:882
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.