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
azeq
AzimuthalEquidistant.h
Go to the documentation of this file.
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 Feb 16 2016 14:54:01 for GeographicTranslator by doxygen 1.8.2