QGIS API Documentation  2.6.0-Brighton
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsosmbase.h
Go to the documentation of this file.
1 #ifndef OSMBASE_H
2 #define OSMBASE_H
3 
4 #include <QString>
5 
6 #include "qgspoint.h"
7 
8 #include <sqlite3.h>
9 
10 typedef qint64 QgsOSMId;
11 
12 class QgsOSMDatabase;
13 
15 {
16  enum Type { Invalid, Node, Way, Relation };
17 
20 };
21 
22 
29 class ANALYSIS_EXPORT QgsOSMElement
30 {
31  public:
32  QgsOSMElement() { mElemID.type = QgsOSMElementID::Invalid; mElemID.id = 0; }
33  QgsOSMElement( QgsOSMElementID::Type t, QgsOSMId id ) { mElemID.type = t; mElemID.id = id; }
34 
35  bool isValid() const { return mElemID.type != QgsOSMElementID::Invalid; }
36 
37  QgsOSMDatabase* database() const;
38 
39  // fetched automatically from DB
40  QgsOSMElementID elemID() const { return mElemID; }
41  QgsOSMId id() const { return mElemID.id; }
42  //QString username() const;
43  //QDateTime timestamp() const;
44  //int version() const;
45 
46  private:
47  QgsOSMElementID mElemID;
48 };
49 
50 
51 
58 class ANALYSIS_EXPORT QgsOSMNode : public QgsOSMElement
59 {
60  public:
61  QgsOSMNode() : mPoint() {}
62  QgsOSMNode( QgsOSMId id, const QgsPoint& point ) : QgsOSMElement( QgsOSMElementID::Node, id ), mPoint( point ) {}
63 
64  QgsPoint point() const { return mPoint; }
65 
66  // fetched on-demand
67  QList<QgsOSMElementID> ways() const; // where the node participates?
68  QList<QgsOSMElementID> relations() const;
69 
70  private:
71  QgsPoint mPoint;
72 };
73 
74 
82 class ANALYSIS_EXPORT QgsOSMWay : public QgsOSMElement
83 {
84  public:
85  QgsOSMWay() {}
86  QgsOSMWay( QgsOSMId id, const QList<QgsOSMId> nodes ) : QgsOSMElement( QgsOSMElementID::Way, id ), mNodes( nodes ) {}
87 
88  QList<QgsOSMId> nodes() const { return mNodes; }
89 
90  // fetched on-demand
91  //QList<OSMElementID> relations() const;
92 
93  private:
94  QList<QgsOSMId> mNodes;
95 };
96 
97 
98 #if 0
99 
105 class ANALYSIS_EXPORT QgsOSMRelation : public QgsOSMElement
106 {
107  public:
108  QString relationType() const;
109 
110  QList< QPair<QgsOSMElementID, QString> > members() const;
111 };
112 #endif
113 
117 class ANALYSIS_EXPORT QgsOSMTags
118 {
119  public:
121 
122  int count() const { return mMap.count(); }
123  QList<QString> keys() const { return mMap.keys(); }
124  bool contains( const QString& k ) const { return mMap.contains( k ); }
125  void insert( const QString& k, const QString& v ) { mMap.insert( k, v ); }
126  QString value( const QString& k ) const { return mMap.value( k ); }
127 
128  private:
129  QMap<QString, QString> mMap;
130 };
131 
132 #endif // OSMBASE_H