QGIS API Documentation  2.6.0-Brighton
 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  /* operations */
64 
66  bool insertFeature( const QgsFeature& f );
67 
69  bool deleteFeature( const QgsFeature& f );
70 
71 
72  /* queries */
73 
75  QList<QgsFeatureId> intersects( QgsRectangle rect ) const;
76 
78  QList<QgsFeatureId> nearestNeighbor( QgsPoint point, int neighbors ) const;
79 
80  /* debugging */
81 
83  int refs() const;
84 
85  protected:
86  // @note not available in python bindings
87  static SpatialIndex::Region rectToRegion( QgsRectangle rect );
88  // @note not available in python bindings
89  bool featureInfo( const QgsFeature& f, SpatialIndex::Region& r, QgsFeatureId &id );
90 
91  private:
92 
93  QSharedDataPointer<QgsSpatialIndexData> d;
94 
95 };
96 
97 #endif
98