QGIS API Documentation  2.17.0-Master (8784312)
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 // forward declaration
20 namespace SpatialIndex
21 {
22  class IStorageManager;
23  class ISpatialIndex;
24  class Region;
25  class Point;
26 
27  namespace StorageManager
28  {
29  class IBuffer;
30  }
31 }
32 
33 class QgsFeature;
34 class QgsRectangle;
35 class QgsPoint;
36 
37 #include <QList>
38 #include <QSharedDataPointer>
39 
40 #include "qgsfeature.h"
41 
43 class QgsFeatureIterator;
44 
48 class CORE_EXPORT QgsSpatialIndex
49 {
50 
51  public:
52 
53  /* creation of spatial index */
54 
57 
63  explicit QgsSpatialIndex( const QgsFeatureIterator& fi );
64 
66  QgsSpatialIndex( const QgsSpatialIndex& other );
67 
69  ~QgsSpatialIndex();
70 
72  QgsSpatialIndex& operator=( const QgsSpatialIndex& other );
73 
74  /* operations */
75 
77  bool insertFeature( const QgsFeature& f );
78 
80  bool deleteFeature( const QgsFeature& f );
81 
82 
83  /* queries */
84 
86  QList<QgsFeatureId> intersects( const QgsRectangle& rect ) const;
87 
89  QList<QgsFeatureId> nearestNeighbor( const QgsPoint& point, int neighbors ) const;
90 
91  /* debugging */
92 
94  QAtomicInt refs() const;
95 
96  protected:
98  static SpatialIndex::Region rectToRegion( const QgsRectangle& rect );
100  static bool featureInfo( const QgsFeature& f, SpatialIndex::Region& r, QgsFeatureId &id );
101 
102  friend class QgsFeatureIteratorDataStream; // for access to featureInfo()
103 
104  private:
105 
107 
108 };
109 
110 #endif
111 
Wrapper for iterator of features from vector data provider or vector layer.
A rectangle specified with double values.
Definition: qgsrectangle.h:35
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:187
Data of spatial index that may be implicitly shared.
Utility class for bulk loading of R-trees.
A class to represent a point.
Definition: qgspoint.h:117
qint64 QgsFeatureId
Definition: qgsfeature.h:31