source: subversion/applications/editors/osm-editor/qt3/Node.h @ 16590

Last change on this file since 16590 was 1158, checked in by nick, 14 years ago

moved current version to qt3 directory in preparation for qt4

File size: 3.3 KB
Line 
1#ifndef NODE_H
2#define NODE_H
3
4/*
5    Copyright (C) 2005 Nick Whitelegg, Hogweed Software, nick@hogweed.org
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
20
21 */
22
23
24#include <qstring.h>
25#include <qcstring.h>
26#include <qstringlist.h>
27#include <vector>
28#include <map>
29#include <fstream>
30#include "functions.h"
31#include "EarthPoint.h"
32#include <qtextstream.h>
33#include "NodeMetaDataHandler.h"
34
35#include <iostream>
36
37#include <cmath>
38
39using std::ostream;
40
41namespace OpenStreetMap
42{
43
44class Node
45{
46private:
47        double lat, lon;
48        int osm_id;
49        QString name, type, timestamp;
50        std::map <QString,QString> tags;
51
52public:
53        Node()
54        {
55                lat=lon=0; 
56                name=type=""; 
57                osm_id = 0; 
58                timestamp="";
59                tags["name"] = "";
60        }
61
62        Node(double lt, double ln)
63        {
64                lat=lt; 
65                lon=ln; 
66                osm_id=0; 
67                name=type=""; 
68                timestamp="";
69                tags["name"] = "";
70        }
71        Node(int i,double lt, double ln)
72        {
73                lat=lt; 
74                lon=ln; 
75                osm_id=i; 
76                name=type=""; 
77                timestamp="";
78                tags["name"] = "";
79        }
80
81        Node(int i,double lt, double ln,const QString& n, const QString& t)
82        {
83                lat=lt; 
84                lon=ln; 
85                setName(n);     
86                setType(t);     
87                osm_id=i; 
88                timestamp="";
89        }
90
91        Node(double lt, double ln,const QString& n, const QString& t)
92        {
93                lat=lt; 
94                lon=ln; 
95                setName(n);
96                setType(t);     
97                osm_id=0; 
98                timestamp="";
99        }
100
101        Node(int i,double lt, double ln,const QString& n, const QString& t,
102                                        const QString& ts)
103        {
104                lat=lt; 
105                lon=ln; 
106                setName(n);
107                setType(t);
108                osm_id=i; 
109                timestamp=ts;
110        }
111        int toOSM(QTextStream&,bool allUid=false);
112
113        bool operator==(const Node& tp)
114        { 
115                return (fabs(lat-tp.lat)<0.000001) && (fabs(lon-tp.lon)<0.000001); 
116        }
117
118        bool isFromOSM() 
119        { 
120                return osm_id>0; 
121        }
122
123        void setOSMID(int i ) 
124        { 
125                osm_id  = i; 
126        }
127
128        void setName(const QString& n) 
129        {
130                //name = n;
131                tags["name"] = n;
132        }
133        void setType(const QString& t) 
134        {
135                // Use tags
136                NodeMetaDataHandler mdh;
137                NodeMetaData md = mdh.getMetaData(t);
138                if(md.key!="")
139                        tags[md.key] = md.value;
140                //type = t;
141        }
142        QString getName()
143        {
144                //return name;
145                return tags["name"];
146        }
147        QString getType();
148
149        int getOSMID()
150        {
151                return osm_id;
152        }
153
154
155        double getLat() { return lat; }
156        double getLon() { return lon; }
157        QString getTimestamp() { return timestamp; }
158
159        void setCoords(double lat,double lon)
160                { this->lat=lat; this->lon=lon; }
161        void trackpointToNode();
162        QByteArray toOSM();
163
164        void addTag(const QString& k,const QString& v)
165        {
166                tags[k] = v;
167        }
168};
169
170class TrackPoint
171{
172private:
173        double lat, lon; 
174        QString timestamp;
175
176public:
177        TrackPoint() { lat=lon=0;
178                                timestamp=""; }
179        TrackPoint(double lt, double lg, const QString &ts)
180        {
181                lat=lt;
182                lon=lg;
183                timestamp=ts;
184        }
185
186        double getLat() { return lat; }
187        double getLon() { return lon; }
188        QString getTimestamp() { return timestamp; }
189
190};
191
192}
193#endif
Note: See TracBrowser for help on using the repository browser.