QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgsspatialindex.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsspatialindex.h - wrapper class for spatial index library
3  ----------------------
4  begin : December 2006
5  copyright : (C) 2006 by Martin Dobias
6  email : wonder.sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSSPATIALINDEX_H
17 #define QGSSPATIALINDEX_H
18 
19 
20 #include "qgis_sip.h"
21 
22 // forward declaration
23 namespace SpatialIndex SIP_SKIP
24 {
25  class IStorageManager;
26  class ISpatialIndex;
27  class Region;
28  class Point;
29 
30  namespace StorageManager
31  {
32  class IBuffer;
33  }
34 }
35 
36 class QgsFeedback;
37 class QgsFeature;
38 class QgsRectangle;
39 class QgsPointXY;
40 
41 #include "qgis_core.h"
42 #include "qgis_sip.h"
43 #include "qgsfeaturesink.h"
44 #include <QList>
45 #include <QSharedDataPointer>
46 
47 #include "qgsfeature.h"
48 
50 class QgsFeatureIterator;
51 class QgsFeatureSource;
52 
67 class CORE_EXPORT QgsSpatialIndex : public QgsFeatureSink
68 {
69 
70  public:
71 
72  /* creation of spatial index */
73 
78 
89  explicit QgsSpatialIndex( const QgsFeatureIterator &fi, QgsFeedback *feedback = nullptr );
90 
102  explicit QgsSpatialIndex( const QgsFeatureSource &source, QgsFeedback *feedback = nullptr );
103 
105  QgsSpatialIndex( const QgsSpatialIndex &other );
106 
108  ~QgsSpatialIndex() override;
109 
111  QgsSpatialIndex &operator=( const QgsSpatialIndex &other );
112 
113  /* operations */
114 
119  Q_DECL_DEPRECATED bool insertFeature( const QgsFeature &feature ) SIP_DEPRECATED;
120 
128  bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = nullptr ) override;
129 
137  bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = nullptr ) override;
138 
144  Q_DECL_DEPRECATED bool insertFeature( QgsFeatureId id, const QgsRectangle &bounds ) SIP_DEPRECATED;
145 
151  bool addFeature( QgsFeatureId id, const QgsRectangle &bounds );
152 
156  bool deleteFeature( const QgsFeature &feature );
157 
158 
159  /* queries */
160 
168  QList<QgsFeatureId> intersects( const QgsRectangle &rectangle ) const;
169 
177  QList<QgsFeatureId> nearestNeighbor( const QgsPointXY &point, int neighbors ) const;
178 
179  /* debugging */
180 
182  QAtomicInt SIP_PYALTERNATIVETYPE( int ) refs() const;
183 
184  private:
185 
186  static SpatialIndex::Region rectToRegion( const QgsRectangle &rect );
187 
196  static bool featureInfo( const QgsFeature &f, SpatialIndex::Region &r, QgsFeatureId &id ) SIP_SKIP;
197 
207  static bool featureInfo( const QgsFeature &f, QgsRectangle &rect, QgsFeatureId &id );
208 
209  friend class QgsFeatureIteratorDataStream; // for access to featureInfo()
210 
211  private:
212 
213  QSharedDataPointer<QgsSpatialIndexData> d;
214 
215 };
216 
217 #endif
218 
Wrapper for iterator of features from vector data provider or vector layer.
A rectangle specified with double values.
Definition: qgsrectangle.h:40
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:571
A class to represent a 2D point.
Definition: qgspointxy.h:43
An interface for objects which accept features via addFeature(s) methods.
qint64 QgsFeatureId
Definition: qgsfeatureid.h:25
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:55
Base class for feedback objects to be used for cancellation of something running in a worker thread...
Definition: qgsfeedback.h:44
#define SIP_SKIP
Definition: qgis_sip.h:119
Data of spatial index that may be implicitly shared.
Utility class for bulk loading of R-trees.
#define SIP_DEPRECATED
Definition: qgis_sip.h:99
A spatial index for QgsFeature objects.
An interface for objects which provide features via a getFeatures method.
#define SIP_PYALTERNATIVETYPE(type)
Definition: qgis_sip.h:129