UNCLASSIFIED

GeographicTranslator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
WebMercator.h
Go to the documentation of this file.
1 // CLASSIFICATION: UNCLASSIFIED
2 
3 #ifndef WEBM_H
4 #define WEBM_H
5 /***************************************************************************/
6 /* RSC IDENTIFIER: Web Mercator
7  *
8  * ABSTRACT
9  *
10  * This component provides conversions between Geodetic coordinates
11  * (latitude and longitude) and Web Mercator coordinates
12  * (easting and northing).
13  *
14  * ERROR HANDLING
15  *
16  * This component checks parameters for valid values. If an invalid value
17  * is found the error code is combined with the current error code using
18  * the bitwise or. This combining allows multiple error codes to be
19  * returned. The possible error codes are:
20  *
21  * WEBM_NO_ERROR : No errors occurred in function
22  * WEBM_LAT_ERROR : Latitude outside of valid range
23  * (-33.5 to -48.5 degrees)
24  * WEBM_ELLIPSOID_ERROR : Invalid ellipsoid - must be WGS84
25  *
26  * REFERENCES
27  *
28  * Further information on Web Mercator can be found in the NGA document
29  * "Implementation Practice Web Mercator Map Projection", 2014-02-18.
30  *
31  * LICENSES
32  *
33  * None apply to this component.
34  *
35  * MODIFICATIONS
36  *
37  * Date Description
38  * ---- -----------
39  * 06-14-14 Original Code
40  *
41  */
42 
43 #include "CoordinateSystem.h"
44 
45 namespace MSP
46 {
47  namespace CCS
48  {
49  class EllipsoidParameters;
50  class MapProjectionCoordinates;
51  class GeodeticCoordinates;
52 
53  /*
54  * DEFINES
55  */
56 
58  {
59  public:
60 
61  /*
62  * The constructor receives the ellipsoid code and sets
63  * the corresponding state variables. If any errors occur,
64  * an exception is thrown with a description of the error.
65  *
66  * ellipsoidCode : 2-letter code for ellipsoid (input)
67  */
68 
69  WebMercator( char* ellipsoidCode );
70 
71  /*
72  * The function getParameters returns the current ellipsoid code.
73  *
74  * ellipsoidCode : 2-letter code for ellipsoid (output)
75  */
76 
78 
79 
80  /*
81  * The function convertFromGeodetic converts geodetic (latitude and
82  * longitude) coordinates to Web Mercator projection
83  * (easting and northing) coordinates, according to the current
84  * ellipsoid.
85  * If any errors occur, an exception is thrown with a
86  * description of the error.
87  *
88  * longitude : Longitude (lambda), in radians (input)
89  * latitude : Latitude (phi), in radians (input)
90  * easting : Easting (X), in meters (output)
91  * northing : Northing (Y), in meters (output)
92  */
93 
95  MSP::CCS::GeodeticCoordinates* geodeticCoordinates );
96 
97  /*
98  * The function convertToGeodetic converts Web Mercator projection
99  * (easting and northing) coordinates to geodetic
100  * (latitude and longitude) coordinates.
101  * If any errors occur, an exception is thrown with a description
102  * of the error.
103  *
104  * easting : Easting (X), in meters (input)
105  * northing : Northing (Y), in meters (input)
106  * longitude : Longitude (lambda), in radians (output)
107  * latitude : Latitude (phi), in radians (output)
108  */
109 
111  MSP::CCS::MapProjectionCoordinates* mapProjectionCoordinates );
112 
113  private:
114 
115  /* Ellipsoid Parameters, must be WGS84 */
116  char WebMEllipsoidCode[3];
117 
118  };
119  }
120 }
121 
122 #endif
123 
124 
125 // CLASSIFICATION: UNCLASSIFIED