-
Notifications
You must be signed in to change notification settings - Fork 0
/
CustomMap.h
346 lines (259 loc) · 7.74 KB
/
CustomMap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
#pragma once
#include "stdafx.h"
#define MAX_COUNTRY 18
#define MAX_PRODUCTS 12
#define MAX_LAYERS 12
#define MAP_DATUM_AT ('A' + ('T'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_BE ('N' + ('G'<<8)+ ('I'<<16)+ (' '<<24))
#define MAP_DATUM_CH ('C' + ('H'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_CZ ('C' + ('Z'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_DE ('D' + ('E'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_ES ('E' + ('S'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_FI ('F' + ('I'<<8)+ ('N'<<16)+ (' '<<24))
#define MAP_DATUM_FR ('I' + ('G'<<8)+ ('N'<<16)+ (' '<<24))
#define MAP_DATUM_IE ('O' + ('S'<<8)+ ('i'<<16)+ (' '<<24))
#define MAP_DATUM_IT ('I' + ('T'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_LU ('L' + ('U'<<8)+ ('X'<<16)+ (' '<<24))
#define MAP_DATUM_NI ('O' + ('S'<<8)+ ('N'<<16)+ ('i'<<24))
#define MAP_DATUM_NL ('N' + ('L'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_PT ('P' + ('T'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_PL ('P' + ('L'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_SI ('S' + ('l'<<8)+ ('o'<<16)+ (' '<<24))
#define MAP_DATUM_UK ('O' + ('S'<<8)+ ('G'<<16)+ ('B'<<24))
#define MAP_DATUM_DK ('D' + ('K'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_SE ('S' + ('E'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_HR ('H' + ('R'<<8)+ (' '<<16)+ (' '<<24))
#define MAP_DATUM_ARC ('A' + ('R'<<8)+ ('C'<<16)+ (' '<<24))
#define MAP_DATUM_CAT ('C' + ('a'<<8)+ ('t'<<16)+ (' '<<24))
#define MAP_DATUM_OSM ('O' + ('S'<<8)+ ('M'<<16)+ (' '<<24))
#define MAP_DATUM_BING ('B' + ('I'<<8)+ ('N'<<16)+ ('G'<<24))
#define MAP_DATUM_SAT ('S' + ('A'<<8)+ ('T'<<16)+ (' '<<24))
#define MAP_GFX_FORMAT_PNG ('P' + ('N'<<8)+ ('G'<<16)+ ('d'<<24))
#define MAP_GFX_FORMAT_BMP ('B' + ('M'<<8)+ ('P'<<16)+ ('z'<<24))
#define MAP_GFX_FORMAT_JPEG ('J' + ('P'<<8)+ ('E'<<16)+ ('G'<<24))
#define MAP_GFX_FORMAT_GIF ('G' + ('I'<<8)+ ('F'<<16)+ ('F'<<24))
#define MAP_GFX_TYPE_RASTER ('R' + ('A'<<8)+ ('S'<<16)+ ('T'<<24))
#define MAP_GFX_TYPE_VECTOR ('V' + ('E'<<8)+ ('C'<<16)+ ('T'<<24))
#define MAP_GFX_TYPE_STREET ('S' + ('T'<<8)+ ('R'<<16)+ ('E'<<24))
#define MAP_GFX_TYPE_AERIAL ('S' + ('A'<<8)+ ('T'<<16)+ (' '<<24))
#define MAP_GFX_TYPE_HIGHLAND ('H' + ('I'<<8)+ ('G'<<16)+ ('H'<<24))
enum RadioDatabase {
DBASE_TRACKLOGS_2,
DBASE_TRACKLOGS_3,
DBASE_LOCAL
};
enum RadioMapType {
MAP_OZI,
MAP_KMZ,
MAP_JNX,
MAP_JPR,
MAP_QCT,
MAP_PKG
};
/*
enum ComboMapTypeUK {
MAP_RASTER,
MAP_VECTOR,
MAP_STREET,
MAP_AERIAL,
MAP_HIGHLAND,
};
enum ComboMapTypeDE {
MAP_DE_NRW,
MAP_DE_MV,
MAP_DE_BKG,
MAP_DE_KOMPASS,
};
enum ComboMapTypeES {
MAP_ES_IGN,
MAP_ES_MTC,
};
*/
enum Country {
COUNTRY_BE, // Belgium
COUNTRY_UK, // Britain
COUNTRY_HR, // Croatia
COUNTRY_CZ, // Czech Republic
COUNTRY_DK, // Denmark
COUNTRY_FI, // Finland
COUNTRY_FR, // France
COUNTRY_DE, // Germany
COUNTRY_IT, // Italy
COUNTRY_LU, // Luxembourg
COUNTRY_PT, // Portugal
COUNTRY_SI, // Slovenia
COUNTRY_ES, // Spain
COUNTRY_SE, // Sweden
COUNTRY_CH, // Switzerland
COUNTRY_OSM,
COUNTRY_ARC,
COUNTRY_SAT,
// COUNTRY_AT,
// COUNTRY_IE,
// COUNTRY_NL,
// COUNTRY_PL,
// COUNTRY_CAT,
NUM_COUNTRY
};
enum Products {
PRODUCT_01,
PRODUCT_02,
PRODUCT_03,
PRODUCT_04,
PRODUCT_05,
PRODUCT_06,
PRODUCT_07,
PRODUCT_08,
PRODUCT_09,
PRODUCT_10,
PRODUCT_11,
PRODUCT_12,
NUM_PRODUCTS
};
enum Layers {
LAYER_01,
LAYER_02,
LAYER_03,
LAYER_04,
LAYER_05,
LAYER_06,
LAYER_07,
LAYER_08,
LAYER_09,
LAYER_10,
LAYER_11,
LAYER_12,
NUM_LAYERS
};
enum MapServers {
WMS,
WMTS,
TMS,
GetMapping,
// OpenStreetMap,
Kompass,
Bing,
SatMap,
OSM,
KOMPASS,
BING,
SAT,
ArcGIS,
ANQUET,
IGN,
LUX,
NGI,
CH1903
};
enum GPSModel {
GPS_MODEL_MONTANA,
GPS_MODEL_OREGON,
GPS_MODEL_DAKOTA,
GPS_MODEL_ETREX,
GPS_MODEL_GPS_6X,
GPS_MODEL_OREGON_6X
};
enum CoordSystem {
COORD_SYSTEM_LAT_LON,
COORD_SYSTEM_GRID,
COORD_SYSTEM_OS
};
enum GraphicsType {
JPEG,
PNG,
BMP,
GIF,
JPG
};
class CCustomMap
{
public:
CCustomMap(void);
~CCustomMap(void);
CCustomMap(int nCountry, int nProduct, int nLayer);
//CTileDatabase dbTiles;
void Update(int nCountry, int nProduct, int nLayer);
void UpdateCountry(int nCountry);
void UpdateProduct(int nProduct);
void UpdateLayer(int nLayer);
// void UpdateWorkingData();
int GetCountry();
int GetProduct();
int GetLayer();
int GetDatum();
int GetMetresPerTile();
int GetPixelsPerTile();
// int GetMapScale();
int GetTileBitDepth();
int GetTileGfxType();
int GetCoordinateSystem();
int GetProjection();
CString GetMapName(CRect rectBBox);
int wmsGetPort();
CString wmsGetAttribution();
CString GetRegistryValueName(int nCountry = -1, int nProduct = -1);
CString GetExampleLatLon(int nCountry = -1);
CString GetExampleGrid(int nCountry = -1);
CString GetCoordSystemName(int nCountry = -1);
bool IsValidScale(int nLayer = -1);
//int GetDefaultScale(int nCountry = -1, int nProduct = -1);
void MakeDatabaseFolders();
void UpdateDatabaseRoot(CString strFolder) { m_strDatabaseRoot = strFolder; };
int GetServerType();
CString GetMapFlavourText(int nCountry = -1, int nProduct = -1);
//CString GetMapScaleText(int nLayer = -1);
//int GetMapScaleIndex(CString strScaleText);
CString GetDatabasePath();
void WriteProfile(/*CRect rectBBox*/CString strGridRef);
void ReadProfile(/*int x, int y*/CString& strGridRef);
CString GetRequest_WMS(int easting, int northing);
CString GetRequest_GetMapping(int easting, int northing);
CString GetRequest_OSM(int easting, int northing);
CString GetRequest_Kompass(int easting, int northing);
CString GetRequest_Bing(int easting, int northing);
CString GetRequest_SatMap(int easting, int northing);
CString GetRequest_IGN(int easting, int northing);
CString GetRequest_Lux(int easting, int northing);
CString GetRequest_NGI(int easting, int northing);
CString GetRequest_CH1903(int easting, int northing);
CString GetRequest_ArcGIS(int easting, int northing);
int GetLevelOfDetail(int nCountry = -1, int nProduct = -1, int nLayer = -1);
CString CountryCode(int nCountry = -1);
CString CountryName(int nCountry = -1);
CString ProductCode(int nCountry = -1, int nProduct = -1);
CString ProductName(int nCountry = -1, int nProduct = -1);
CString LayerCode(int nCountry = -1, int nProduct = -1, int nLayer = -1);
CString LayerName(int nCountry = -1, int nProduct = -1, int nLayer = -1);
CString Referer(int nCountry = -1, int nProduct = -1, int nLayer = -1);
int NumberCountry() { return m_nCountryCount; };
int NumberProducts(int nCountry = -1);
int NumberLayers(int nCountry = -1, int nProduct = -1);
private:
void ParseServerRequestString_WMS(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_GetMapping(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_OSM(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_Kompass(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_Bing(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_SatMap(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_IGN(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_Lux(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_NGI(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_CH1903(int nCountry, int nProduct, int nLayer, int l);
void ParseServerRequestString_ArcGIS(int nCountry, int nProduct, int nLayer, int l);
void InitialiseArrayCountry();
void InitialiseArrayProduct();
void InitialiseArrayLayer();
private:
// int m_nDatum;
int m_nCountry;
int m_nProduct;
int m_nLayer;
// int m_nMapScale;
// int m_nPixelsPerTile;
// int m_nMetresPerTile;
// int m_nTileBitDepth;
int m_nCoordSystem;
int m_nCountryCount;
CString m_strDatabaseRoot;
CRect m_rectBBox;
};