UNCLASSIFIED

GeographicTranslator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
Gnomonic.h
Go to the documentation of this file.
1 // CLASSIFICATION: UNCLASSIFIED
2 
3 #ifndef Gnomonic_H
4 #define Gnomonic_H
5 
6 /***************************************************************************/
7 /* RSC IDENTIFIER: GNOMONIC
8  *
9  * ABSTRACT
10  *
11  * This component provides conversions between Geodetic coordinates
12  * (latitude and longitude in radians) and Gnomonic
13  * projection coordinates (easting and northing in meters). This projection
14  * employs a spherical Earth model. The spherical radius used is the radius
15  * of the sphere having the same area as the ellipsoid.
16  *
17  * ERROR HANDLING
18  *
19  * This component checks parameters for valid values. If an invalid value
20  * is found the error code is combined with the current error code using
21  * the bitwise or. This combining allows multiple error codes to be
22  * returned. The possible error codes are:
23  *
24  * GNOM_NO_ERROR : No errors occurred in function
25  * GNOM_LAT_ERROR : Latitude outside of valid range
26  * (-90 to 90 degrees)
27  * GNOM_LON_ERROR : Longitude outside of valid range
28  * (-180 to 360 degrees)
29  * GNOM_EASTING_ERROR : Easting outside of valid range
30  * (depends on ellipsoid and projection
31  * parameters)
32  * GNOM_NORTHING_ERROR : Northing outside of valid range
33  * (depends on ellipsoid and projection
34  * parameters)
35  * GNOM_ORIGIN_LAT_ERROR : Origin latitude outside of valid range
36  * (-90 to 90 degrees)
37  * GNOM_CENT_MER_ERROR : Central meridian outside of valid range
38  * (-180 to 360 degrees)
39  * GNOM_A_ERROR : Semi-major axis less than or equal to zero
40  * GNOM_INV_F_ERROR : Inverse flattening outside of valid range
41  * (250 to 350)
42  *
43  *
44  * REUSE NOTES
45  *
46  * GNOMONIC is intended for reuse by any application that
47  * performs a Gnomonic projection or its inverse.
48  *
49  * REFERENCES
50  *
51  * Further information on GNOMONIC can be found in the Reuse Manual.
52  *
53  * GNOMONIC originated from: U.S. Army Topographic Engineering Center
54  * Geospatial Information Division
55  * 7701 Telegraph Road
56  * Alexandria, VA 22310-3864
57  *
58  * LICENSES
59  *
60  * None apply to this component.
61  *
62  * RESTRICTIONS
63  *
64  * GNOMONIC has no restrictions.
65  *
66  * ENVIRONMENT
67  *
68  * GNOMONIC was tested and certified in the following environments:
69  *
70  * 1. Solaris 2.5 with GCC, version 2.8.1
71  * 2. MSDOS with MS Visual C++, version 6
72  *
73  * MODIFICATIONS
74  *
75  * Date Description
76  * ---- -----------
77  * 05-22-00 Original Code
78  * 03-05-07 Original C++ Code
79  *
80  *
81  */
82 
83 
84 #include "CoordinateSystem.h"
85 
86 
87 namespace MSP
88 {
89  namespace CCS
90  {
91  class MapProjection4Parameters;
92  class MapProjectionCoordinates;
93  class GeodeticCoordinates;
94 
95 
96  /***************************************************************************/
97  /*
98  * DEFINES
99  */
100 
101  class Gnomonic : public CoordinateSystem
102  {
103  public:
104 
105  /*
106  * The constructor receives the ellipsoid parameters and
107  * projection parameters as inputs, and sets the corresponding state
108  * variables. If any errors occur, an exception is thrown with a description
109  * of the error.
110  *
111  * ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (input)
112  * ellipsoidFlattening : Flattening of ellipsoid (input)
113  * centralMeridian : Longitude in radians at the center of (input)
114  * the projection
115  * originLatitude : Latitude in radians at which the (input)
116  * point scale factor is 1.0
117  * falseEasting : A coordinate value in meters assigned to the
118  * central meridian of the projection. (input)
119  * falseNorthing : A coordinate value in meters assigned to the
120  * origin latitude of the projection (input)
121  */
122 
123  Gnomonic( double ellipsoidSemiMajorAxis, double ellipsoidFlattening, double centralMeridian, double originLatitude, double falseEasting, double falseNorthing );
124 
125 
126  Gnomonic( const Gnomonic &g );
127 
128 
129  ~Gnomonic( void );
130 
131 
132  Gnomonic& operator=( const Gnomonic &g );
133 
134 
135  /*
136  * The function getParameters returns the current ellipsoid
137  * parameters and Gnomonic projection parameters.
138  *
139  * ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
140  * ellipsoidFlattening : Flattening of ellipsoid (output)
141  * centralMeridian : Longitude in radians at the center of (output)
142  * the projection
143  * originLatitude : Latitude in radians at which the (output)
144  * point scale factor is 1.0
145  * falseEasting : A coordinate value in meters assigned to the
146  * central meridian of the projection. (output)
147  * falseNorthing : A coordinate value in meters assigned to the
148  * origin latitude of the projection (output)
149  */
150 
152 
153 
154  /*
155  * The function convertFromGeodetic converts geodetic (latitude and
156  * longitude) coordinates to Gnomonic projection (easting and northing)
157  * coordinates, according to the current ellipsoid and Gnomonic projection
158  * parameters. If any errors occur, an exception is thrown with a description
159  * of the error.
160  *
161  * longitude : Longitude (lambda) in radians (input)
162  * latitude : Latitude (phi) in radians (input)
163  * easting : Easting (X) in meters (output)
164  * northing : Northing (Y) in meters (output)
165  */
166 
168 
169 
170  /*
171  * The function convertToGeodetic converts Gnomonic projection
172  * (easting and northing) coordinates to geodetic (latitude and longitude)
173  * coordinates, according to the current ellipsoid and Gnomonic projection
174  * coordinates. If any errors occur, an exception is thrown with a description
175  * of the error.
176  *
177  * easting : Easting (X) in meters (input)
178  * northing : Northing (Y) in meters (input)
179  * longitude : Longitude (lambda) in radians (output)
180  * latitude : Latitude (phi) in radians (output)
181  */
182 
184 
185  private:
186 
187  /* Ellipsoid Parameters, default to WGS 84 */
188  double Ra; /* Spherical Radius */
189  double Sin_Gnom_Origin_Lat;
190  double Cos_Gnom_Origin_Lat;
191 
192  /* Gnomonic projection Parameters */
193  double Gnom_Origin_Lat; /* Latitude of origin in radians */
194  double Gnom_Origin_Long; /* Longitude of origin in radians */
195  double Gnom_False_Northing; /* False northing in meters */
196  double Gnom_False_Easting; /* False easting in meters */
197  double abs_Gnom_Origin_Lat;
198 
199  double Gnom_Delta_Northing;
200  double Gnom_Delta_Easting;
201 
202  };
203  }
204 }
205 
206 #endif
207 
208 
209 // CLASSIFICATION: UNCLASSIFIED