UNCLASSIFIED
GeographicTranslator
Main Page
Namespaces
Classes
All
Classes
Namespaces
Functions
Enumerations
net
defender
users
ccadmin
MSP
BUILDS
MSP_1.2.0.12_UNCLASS
GEOTRANS
INSTALLER_take2
master
CCS
src
dtcc
CoordinateSystems
azeq
AzimuthalEquidistant.h
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef AzimuthalEquidistant_H
4
#define AzimuthalEquidistant_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: AZIMUTHAL EQUIDISTANT
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between Geodetic coordinates
12
* (latitude and longitude in radians) and Azimuthal Equidistant
13
* projection coordinates (easting and northing in meters). This projection
14
* employs a spherical Earth model. The spherical radius used is the radius of
15
* 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
* AZEQ_NO_ERROR : No errors occurred in function
25
* AZEQ_LAT_ERROR : Latitude outside of valid range
26
* (-90 to 90 degrees)
27
* AZEQ_LON_ERROR : Longitude outside of valid range
28
* (-180 to 360 degrees)
29
* AZEQ_EASTING_ERROR : Easting outside of valid range
30
* (depends on ellipsoid and projection
31
* parameters)
32
* AZEQ_NORTHING_ERROR : Northing outside of valid range
33
* (depends on ellipsoid and projection
34
* parameters)
35
* AZEQ_ORIGIN_LAT_ERROR : Origin latitude outside of valid range
36
* (-90 to 90 degrees)
37
* AZEQ_CENT_MER_ERROR : Central meridian outside of valid range
38
* (-180 to 360 degrees)
39
* AZEQ_A_ERROR : Semi-major axis less than or equal to zero
40
* AZEQ_INV_F_ERROR : Inverse flattening outside of valid range
41
* (250 to 350)
42
* AZEQ_PROJECTION_ERROR : Point is plotted as a circle of radius PI * Ra
43
*
44
*
45
* REUSE NOTES
46
*
47
* AZIMUTHAL EQUIDISTANT is intended for reuse by any application that
48
* performs an Azimuthal Equidistant projection or its inverse.
49
*
50
* REFERENCES
51
*
52
* Further information on AZIMUTHAL EQUIDISTANT can be found in the Reuse Manual.
53
*
54
* AZIMUTHAL EQUIDISTANT originated from: U.S. Army Topographic Engineering Center
55
* Geospatial Information Division
56
* 7701 Telegraph Road
57
* Alexandria, VA 22310-3864
58
*
59
* LICENSES
60
*
61
* None apply to this component.
62
*
63
* RESTRICTIONS
64
*
65
* AZIMUTHAL EQUIDISTANT has no restrictions.
66
*
67
* ENVIRONMENT
68
*
69
* AZIMUTHAL EQUIDISTANT was tested and certified in the following environments:
70
*
71
* 1. Solaris 2.5 with GCC, version 2.8.1
72
* 2. MSDOS with MS Visual C++, version 6
73
*
74
* MODIFICATIONS
75
*
76
* Date Description
77
* ---- -----------
78
* 05-19-00 Original Code
79
* 03-08-07 Original C++ Code
80
*
81
*
82
*/
83
84
85
#include "CoordinateSystem.h"
86
87
88
namespace
MSP
89
{
90
namespace
CCS
91
{
92
class
MapProjection4Parameters;
93
class
MapProjectionCoordinates;
94
class
GeodeticCoordinates;
95
96
97
/***************************************************************************/
98
/*
99
* DEFINES
100
*/
101
102
class
AzimuthalEquidistant
:
public
CoordinateSystem
103
{
104
public
:
105
106
/*
107
* The constructor receives the ellipsoid parameters and
108
* projection parameters as inputs, and sets the corresponding state
109
* variables. If any errors occur, an exception is thrown with a description
110
* of the error.
111
*
112
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (input)
113
* ellipsoidFlattening : Flattening of ellipsoid (input)
114
* centralMeridian : Longitude in radians at the center of (input)
115
* the projection
116
* originLatitude : Latitude in radians at which the (input)
117
* point scale factor is 1.0
118
* falseEasting : A coordinate value in meters assigned to the
119
* central meridian of the projection. (input)
120
* falseNorthing : A coordinate value in meters assigned to the
121
* origin latitude of the projection (input)
122
*/
123
124
AzimuthalEquidistant
(
double
ellipsoidSemiMajorAxis,
double
ellipsoidFlattening,
double
centralMeridian,
double
originLatitude,
double
falseEasting,
double
falseNorthing );
125
126
127
AzimuthalEquidistant
(
const
AzimuthalEquidistant
&ae );
128
129
130
~
AzimuthalEquidistant
(
void
);
131
132
133
AzimuthalEquidistant
& operator=(
const
AzimuthalEquidistant
&ae );
134
135
136
/*
137
* The function getParameters returns the current ellipsoid
138
* parameters and Azimuthal Equidistant projection parameters.
139
*
140
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
141
* ellipsoidFlattening : Flattening of ellipsoid (output)
142
* centralMeridian : Longitude in radians at the center of (output)
143
* the projection
144
* originLatitude : Latitude in radians at which the (output)
145
* point scale factor is 1.0
146
* falseEasting : A coordinate value in meters assigned to the
147
* central meridian of the projection. (output)
148
* falseNorthing : A coordinate value in meters assigned to the
149
* origin latitude of the projection (output)
150
*/
151
152
MapProjection4Parameters
* getParameters()
const
;
153
154
155
/*
156
* The function convertFromGeodetic converts geodetic (latitude and
157
* longitude) coordinates to Azimuthal Equidistant projection (easting and northing)
158
* coordinates, according to the current ellipsoid and Azimuthal Equidistant projection
159
* parameters. If any errors occur, an exception is thrown with a description
160
* of the error.
161
*
162
* longitude : Longitude (lambda) in radians (input)
163
* latitude : Latitude (phi) in radians (input)
164
* easting : Easting (X) in meters (output)
165
* northing : Northing (Y) in meters (output)
166
*/
167
168
MSP::CCS::MapProjectionCoordinates
* convertFromGeodetic(
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates );
169
170
171
/*
172
* The function convertToGeodetic converts Azimuthal_Equidistant projection
173
* (easting and northing) coordinates to geodetic (latitude and longitude)
174
* coordinates, according to the current ellipsoid and Azimuthal_Equidistant projection
175
* coordinates. If any errors occur, an exception is thrown with a description
176
* of the error.
177
*
178
* easting : Easting (X) in meters (input)
179
* northing : Northing (Y) in meters (input)
180
* longitude : Longitude (lambda) in radians (output)
181
* latitude : Latitude (phi) in radians (output)
182
*/
183
184
MSP::CCS::GeodeticCoordinates
* convertToGeodetic(
MSP::CCS::MapProjectionCoordinates
* mapProjectionCoordinates );
185
186
private
:
187
188
/* Ellipsoid Parameters, default to WGS 84 */
189
double
Ra;
/* Spherical Radius */
190
double
Sin_Azeq_Origin_Lat;
191
double
Cos_Azeq_Origin_Lat;
192
193
/* Azimuthal Equidistant projection Parameters */
194
double
Azeq_Origin_Lat;
/* Latitude of origin in radians */
195
double
Azeq_Origin_Long;
/* Longitude of origin in radians */
196
double
Azeq_False_Northing;
/* False northing in meters */
197
double
Azeq_False_Easting;
/* False easting in meters */
198
double
abs_Azeq_Origin_Lat;
199
200
double
Azeq_Delta_Northing;
201
double
Azeq_Delta_Easting;
202
203
};
204
}
205
}
206
207
#endif
208
209
210
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Oct 16 2012 13:48:10 for GeographicTranslator by doxygen 1.8.2