UNCLASSIFIED
GeographicTranslator
Main Page
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Enumerations
Enumerator
Friends
Macros
master
geotrans3.7
CCS
src
dtcc
CoordinateSystems
cyleqa
CylindricalEqualArea.h
Go to the documentation of this file.
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef CylindricalEqualArea_H
4
#define CylindricalEqualArea_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: CYLINDRICAL EQUAL AREA
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between Geodetic coordinates
12
* (latitude and longitude in radians) and Cylindrical Equal Area projection
13
* coordinates (easting and northing in meters).
14
*
15
* ERROR HANDLING
16
*
17
* This component checks parameters for valid values. If an invalid value
18
* is found, the error code is combined with the current error code using
19
* the bitwise or. This combining allows multiple error codes to be
20
* returned. The possible error codes are:
21
*
22
* CYEQ_NO_ERROR : No errors occurred in function
23
* CYEQ_LAT_ERROR : Latitude outside of valid range
24
* (-90 to 90 degrees)
25
* CYEQ_LON_ERROR : Longitude outside of valid range
26
* (-180 to 360 degrees)
27
* CYEQ_EASTING_ERROR : Easting outside of valid range
28
* (False_Easting +/- ~20,000,000 m,
29
* depending on ellipsoid parameters
30
* and Origin_Latitude)
31
* CYEQ_NORTHING_ERROR : Northing outside of valid range
32
* (False_Northing +/- ~6,000,000 m,
33
* depending on ellipsoid parameters
34
* and Origin_Latitude)
35
* CYEQ_ORIGIN_LAT_ERROR : Origin latitude outside of valid range
36
* (-90 to 90 degrees)
37
* CYEQ_CENT_MER_ERROR : Central meridian outside of valid range
38
* (-180 to 360 degrees)
39
* CYEQ_A_ERROR : Semi-major axis less than or equal to zero
40
* CYEQ_INV_F_ERROR : Inverse flattening outside of valid range
41
* (250 to 350)
42
*
43
* REUSE NOTES
44
*
45
* CYLINDRICAL EQUAL AREA is intended for reuse by any application that performs a
46
* Cylindrical Equal Area projection or its inverse.
47
*
48
* REFERENCES
49
*
50
* Further information on CYLINDRICAL EQUAL AREA can be found in the Reuse Manual.
51
*
52
* CYLINDRICAL EQUAL AREA originated from :
53
* 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
* CYLINDRICAL EQUAL AREA has no restrictions.
65
*
66
* ENVIRONMENT
67
*
68
* CYLINDRICAL EQUAL AREA was tested and certified in the following environments:
69
*
70
* 1. Solaris 2.5 with GCC 2.8.1
71
* 2. MS Windows 95 with MS Visual C++ 6
72
*
73
* MODIFICATIONS
74
*
75
* Date Description
76
* ---- -----------
77
* 04-16-99 Original Code
78
* 03-07-07 Original C++ Code
79
*
80
*/
81
82
83
#include "
CoordinateSystem.h
"
84
85
86
namespace
MSP
87
{
88
namespace
CCS
89
{
90
class
MapProjection4Parameters;
91
class
MapProjectionCoordinates;
92
class
GeodeticCoordinates;
93
94
95
/***************************************************************************/
96
/*
97
* DEFINES
98
*/
99
100
class
CylindricalEqualArea
:
public
CoordinateSystem
101
{
102
public
:
103
104
/*
105
* The constructor receives the ellipsoid parameters and
106
* Cylindrical Equal Area projcetion parameters as inputs, and sets the corresponding
107
* state variables. If any errors occur, an exception is thrown with a description
108
* of the error.
109
*
110
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (input)
111
* ellipsoidFlattening : Flattening of ellipsoid (input)
112
* centralMeridian : Longitude in radians at the center of (input)
113
* the projection
114
* originLatitude : Latitude in radians at which the (input)
115
* point scale factor is 1.0
116
* falseEasting : A coordinate value in meters assigned to the
117
* central meridian of the projection. (input)
118
* falseNorthing : A coordinate value in meters assigned to the
119
* origin latitude of the projection (input)
120
*/
121
122
CylindricalEqualArea
(
double
ellipsoidSemiMajorAxis,
double
ellipsoidFlattening,
double
centralMeridian,
double
originLatitude,
double
falseEasting,
double
falseNorthing );
123
124
125
CylindricalEqualArea
(
const
CylindricalEqualArea
&cea );
126
127
128
~CylindricalEqualArea
(
void
);
129
130
131
CylindricalEqualArea
&
operator=
(
const
CylindricalEqualArea
&cea );
132
133
134
/*
135
* The function getParameters returns the current ellipsoid
136
* parameters, and Cylindrical Equal Area projection parameters.
137
*
138
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
139
* ellipsoidFlattening : Flattening of ellipsoid (output)
140
* centralMeridian : Longitude in radians at the center of (output)
141
* the projection
142
* originLatitude : Latitude in radians at which the (output)
143
* point scale factor is 1.0
144
* falseEasting : A coordinate value in meters assigned to the
145
* central meridian of the projection. (output)
146
* falseNorthing : A coordinate value in meters assigned to the
147
* origin latitude of the projection (output)
148
*/
149
150
MapProjection4Parameters
*
getParameters
()
const
;
151
152
153
/*
154
* The function convertFromGeodetic converts geodetic (latitude and
155
* longitude) coordinates to Cylindrical Equal Area projection (easting and northing)
156
* coordinates, according to the current ellipsoid and Cylindrical Equal Area projection
157
* parameters. If any errors occur, an exception is thrown with a description
158
* of the error.
159
*
160
* longitude : Longitude (lambda) in radians (input)
161
* latitude : Latitude (phi) in radians (input)
162
* easting : Easting (X) in meters (output)
163
* northing : Northing (Y) in meters (output)
164
*/
165
166
MSP::CCS::MapProjectionCoordinates
*
convertFromGeodetic
(
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates );
167
168
169
/*
170
* The function convertToGeodetic converts
171
* Cylindrical Equal Area projection (easting and northing) coordinates
172
* to geodetic (latitude and longitude) coordinates, according to the
173
* current ellipsoid and Cylindrical Equal Area 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
183
MSP::CCS::GeodeticCoordinates
*
convertToGeodetic
(
MSP::CCS::MapProjectionCoordinates
* mapProjectionCoordinates );
184
185
private
:
186
187
/* Ellipsoid Parameters, default to WGS 84 */
188
double
es2;
/* Eccentricity (0.08181919084262188000) squared */
189
double
es;
/* Sqrt(es2) */
190
double
es4;
/* es2 * es2 */
191
double
es6;
/* es4 * es2 */
192
double
k0;
193
double
Cyeq_a_k0;
/* Cyeq_a * k0 */
194
double
two_k0;
/* 2.0 * k0 */
195
double
c0;
/* es2 / 3.0 + 31.0 * es4 / 180.0 + 517.0 * es6 / 5040.0 */
196
double
c1;
/* 23.0 es4 / 360.0 + 251.0 * es6 / 3780.0 */
197
double
c2;
/* 761.0 * es6 / 45360.0 */
198
199
/* Cylindrical Equal Area projection Parameters */
200
double
Cyeq_Origin_Lat;
/* Latitude of origin in radians */
201
double
Cyeq_Origin_Long;
/* Longitude of origin in radians */
202
double
Cyeq_False_Northing;
/* False northing in meters */
203
double
Cyeq_False_Easting;
/* False easting in meters */
204
205
/* Maximum variance for easting and northing values for WGS 84.*/
206
double
Cyeq_Max_Easting;
207
double
Cyeq_Min_Easting;
208
double
Cyeq_Delta_Northing;
209
210
211
double
cyleqarQ(
double
slat,
double
x );
212
};
213
}
214
}
215
216
#endif
217
218
219
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Feb 16 2016 14:54:01 for GeographicTranslator by doxygen 1.8.2