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
albers
AlbersEqualAreaConic.h
Go to the documentation of this file.
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef AlbersEqualAreaConic_H
4
#define AlbersEqualAreaConic_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: ALBERS
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between Geodetic coordinates
12
* (latitude and longitude in radians) and Albers Equal Area Conic
13
* projection coordinates (easting and northing in meters) defined
14
* by two standard parallels.
15
*
16
* ERROR HANDLING
17
*
18
* This component checks parameters for valid values. If an invalid value
19
* is found the error code is combined with the current error code using
20
* the bitwise or. This combining allows multiple error codes to be
21
* returned. The possible error codes are:
22
*
23
* ALBERS_NO_ERROR : No errors occurred in function
24
* ALBERS_LAT_ERROR : Latitude outside of valid range
25
* (-90 to 90 degrees)
26
* ALBERS_LON_ERROR : Longitude outside of valid range
27
* (-180 to 360 degrees)
28
* ALBERS_EASTING_ERROR : Easting outside of valid range
29
* (depends on ellipsoid and projection
30
* parameters)
31
* ALBERS_NORTHING_ERROR : Northing outside of valid range
32
* (depends on ellipsoid and projection
33
* parameters)
34
* ALBERS_FIRST_STDP_ERROR : First standard parallel outside of valid
35
* range (-90 to 90 degrees)
36
* ALBERS_SECOND_STDP_ERROR : Second standard parallel outside of valid
37
* range (-90 to 90 degrees)
38
* ALBERS_ORIGIN_LAT_ERROR : Origin latitude outside of valid range
39
* (-90 to 90 degrees)
40
* ALBERS_CENT_MER_ERROR : Central meridian outside of valid range
41
* (-180 to 360 degrees)
42
* ALBERS_A_ERROR : Semi-major axis less than or equal to zero
43
* ALBERS_INV_F_ERROR : Inverse flattening outside of valid range
44
* (250 to 350)
45
* ALBERS_HEMISPHERE_ERROR : Standard parallels cannot be opposite
46
* latitudes
47
* ALBERS_FIRST_SECOND_ERROR : The 1st & 2nd standard parallels cannot
48
* both be 0
49
*
50
*
51
* REUSE NOTES
52
*
53
* ALBERS is intended for reuse by any application that performs an Albers
54
* Equal Area Conic projection or its inverse.
55
*
56
* REFERENCES
57
*
58
* Further information on ALBERS can be found in the Reuse Manual.
59
*
60
* ALBERS originated from: U.S. Army Topographic Engineering Center
61
* Geospatial Information Division
62
* 7701 Telegraph Road
63
* Alexandria, VA 22310-3864
64
*
65
* LICENSES
66
*
67
* None apply to this component.
68
*
69
* RESTRICTIONS
70
*
71
* ALBERS has no restrictions.
72
*
73
* ENVIRONMENT
74
*
75
* ALBERS was tested and certified in the following environments:
76
*
77
* 1. Solaris 2.5 with GCC, version 2.8.1
78
* 2. MSDOS with MS Visual C++, version 6
79
*
80
* MODIFICATIONS
81
*
82
* Date Description
83
* ---- -----------
84
* 07-09-99 Original Code
85
* 03-08-07 Original C++ Code
86
*
87
*
88
*/
89
90
91
#include "
CoordinateSystem.h
"
92
93
#include "
DtccApi.h
"
94
95
96
97
namespace
MSP
98
{
99
namespace
CCS
100
{
101
class
MapProjection6Parameters;
102
class
MapProjectionCoordinates;
103
class
GeodeticCoordinates;
104
105
106
/***************************************************************************/
107
/*
108
* DEFINES
109
*/
110
111
class
MSP_DTCC_API
AlbersEqualAreaConic
:
public
CoordinateSystem
112
{
113
public
:
114
115
/*
116
* The constructor receives the ellipsoid parameters and
117
* projection parameters as inputs, and sets the corresponding state
118
* variables. If any errors occur, an exception is thrown with a description
119
* of the error.
120
*
121
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (input)
122
* ellipsoidFlattening : Flattening of ellipsoid (input)
123
* centralMeridian : Longitude in radians at the center of (input)
124
* the projection
125
* originLatitude : Latitude in radians at which the (input)
126
* point scale factor is 1.0
127
* standardParallel1 : First standard parallel (input)
128
* standardParallel2 : Second standard parallel (input)
129
* falseEasting : A coordinate value in meters assigned to the
130
* central meridian of the projection. (input)
131
* falseNorthing : A coordinate value in meters assigned to the
132
* origin latitude of the projection (input)
133
*/
134
135
AlbersEqualAreaConic
(
double
ellipsoidSemiMajorAxis,
double
ellipsoidFlattening,
double
centralMeridian,
double
originLatitude,
double
standardParallel1,
double
standardParallel2,
double
falseEasting,
double
falseNorthing );
136
137
138
AlbersEqualAreaConic
(
const
AlbersEqualAreaConic
&aeac );
139
140
141
~
AlbersEqualAreaConic
(
void
);
142
143
144
AlbersEqualAreaConic
& operator=(
const
AlbersEqualAreaConic
&aeac );
145
146
147
/*
148
* The function getParameters returns the current ellipsoid
149
* parameters, and Albers projection parameters.
150
*
151
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
152
* ellipsoidFlattening : Flattening of ellipsoid (output)
153
* centralMeridian : Longitude in radians at the center of (output)
154
* the projection
155
* originLatitude : Latitude in radians at which the (output)
156
* point scale factor is 1.0
157
* standardParallel1 : First standard parallel (output)
158
* standardParallel2 : Second standard parallel (output)
159
* falseEasting : A coordinate value in meters assigned to the
160
* central meridian of the projection. (output)
161
* falseNorthing : A coordinate value in meters assigned to the
162
* origin latitude of the projection (output)
163
*/
164
165
MapProjection6Parameters
* getParameters()
const
;
166
167
168
/*
169
* The function convertFromGeodetic converts geodetic (latitude and
170
* longitude) coordinates to Albers projection (easting and northing)
171
* coordinates, according to the current ellipsoid and Albers projection
172
* parameters. If any errors occur, an exception is thrown with a description
173
* of the error.
174
*
175
* longitude : Longitude (lambda) in radians (input)
176
* latitude : Latitude (phi) in radians (input)
177
* easting : Easting (X) in meters (output)
178
* northing : Northing (Y) in meters (output)
179
*/
180
181
MSP::CCS::MapProjectionCoordinates
* convertFromGeodetic(
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates );
182
183
184
/*
185
* The function convertToGeodetic converts Albers projection
186
* (easting and northing) coordinates to geodetic (latitude and longitude)
187
* coordinates, according to the current ellipsoid and Albers projection
188
* coordinates. If any errors occur, an exception is thrown with a description
189
* of the error.
190
*
191
* easting : Easting (X) in meters (input)
192
* northing : Northing (Y) in meters (input)
193
* latitude : Latitude (phi) in radians (output)
194
* longitude : Longitude (lambda) in radians (output)
195
*/
196
197
MSP::CCS::GeodeticCoordinates
* convertToGeodetic(
MSP::CCS::MapProjectionCoordinates
* mapProjectionCoordinates );
198
199
private
:
200
201
/* Ellipsoid Parameters, default to WGS 84 */
202
double
es;
/* Eccentricity of ellipsoid */
203
double
es2;
/* Eccentricity squared */
204
double
C
;
/* constant c */
205
double
rho0;
/* height above ellipsoid */
206
double
n;
/* ratio between meridians */
207
double
Albers_a_OVER_n;
/* Albers_a / n */
208
double
one_MINUS_es2;
/* 1 - es2 */
209
double
two_es;
/* 2 * es */
210
211
/* Albers Projection Parameters */
212
double
Albers_Origin_Lat;
/* Latitude of origin in radians */
213
double
Albers_Origin_Long;
/* Longitude of origin in radians */
214
double
Albers_Std_Parallel_1;
215
double
Albers_Std_Parallel_2;
216
double
Albers_False_Easting;
217
double
Albers_False_Northing;
218
219
double
Albers_Delta_Northing;
220
double
Albers_Delta_Easting;
221
222
double
esSine(
double
sinlat );
223
224
double
albersQ(
double
slat,
double
oneminussqressin,
double
essin );
225
226
};
227
}
228
}
229
230
#endif
231
232
233
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Feb 16 2016 14:54:01 for GeographicTranslator by doxygen 1.8.2