QGIS API Documentation  2.3.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
44 class CORE_EXPORT QgsSpatialIndex
45 {
46 
47  public:
48 
49  /* creation of spatial index */
50 
53 
55  QgsSpatialIndex( const QgsSpatialIndex& other );
56 
58  ~QgsSpatialIndex();
59 
61  QgsSpatialIndex& operator=( const QgsSpatialIndex& other );
62 
63 
64  /* operations */
65 
67  bool insertFeature( const QgsFeature& f );
68 
70  bool deleteFeature( const QgsFeature& f );
71 
72 
73  /* queries */
74 
76  QList<QgsFeatureId> intersects( QgsRectangle rect ) const;
77 
79  QList<QgsFeatureId> nearestNeighbor( QgsPoint point, int neighbors ) const;
80 
81  /* debugging */
82 
84  int refs() const;
85 
86  protected:
87  // @note not available in python bindings
88  static SpatialIndex::Region rectToRegion( QgsRectangle rect );
89  // @note not available in python bindings
90  bool featureInfo( const QgsFeature& f, SpatialIndex::Region& r, QgsFeatureId &id );
91 
92  private:
93 
94  QSharedDataPointer<QgsSpatialIndexData> d;
95 
96 };
97 
98 #endif
99 
A rectangle specified with double values.
Definition: qgsrectangle.h:35
QSharedDataPointer< QgsSpatialIndexData > d
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:114
Data of spatial index that may be implicitly shared.
A class to represent a point geometry.
Definition: qgspoint.h:63
qint64 QgsFeatureId
Definition: qgsfeature.h:30