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
grinten
VanDerGrinten.h
Go to the documentation of this file.
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef VanDerGrinten_H
4
#define VanDerGrinten_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: VAN DER GRINTEN
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between Geodetic coordinates
12
* (latitude and longitude in radians) and Van Der Grinten projection
13
* coordinates (easting and northing in meters). The Van Der Grinten
14
* projection employs a spherical Earth model. The Spherical Radius
15
* used is the the radius of the sphere having the same area as the
16
* ellipsoid.
17
*
18
* ERROR HANDLING
19
*
20
* This component checks parameters for valid values. If an invalid value
21
* is found, the error code is combined with the current error code using
22
* the bitwise or. This combining allows multiple error codes to be
23
* returned. The possible error codes are:
24
*
25
* GRIN_NO_ERROR : No errors occurred in function
26
* GRIN_LAT_ERROR : Latitude outside of valid range
27
* (-90 to 90 degrees)
28
* GRIN_LON_ERROR : Longitude outside of valid range
29
* (-180 to 360 degrees)
30
* GRIN_EASTING_ERROR : Easting outside of valid range
31
* (False_Easting +/- ~20,000,000 m,
32
* depending on ellipsoid parameters)
33
* GRIN_NORTHING_ERROR : Northing outside of valid range
34
* (False_Northing +/- ~20,000,000 m,
35
* depending on ellipsoid parameters)
36
* GRIN_RADIUS_ERROR : Coordinates too far from pole,
37
* depending on ellipsoid and
38
* projection parameters
39
* GRIN_CENT_MER_ERROR : Central meridian outside of valid range
40
* (-180 to 360 degrees)
41
* GRIN_A_ERROR : Semi-major axis less than or equal to zero
42
* GRIN_INV_F_ERROR : Inverse flattening outside of valid range
43
* (250 to 350)
44
*
45
* REUSE NOTES
46
*
47
* VAN DER GRINTEN is intended for reuse by any application that performs a
48
* Van Der Grinten projection or its inverse.
49
*
50
* REFERENCES
51
*
52
* Further information on VAN DER GRINTEN can be found in the Reuse Manual.
53
*
54
* VAN DER GRINTEN 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
* VAN DER GRINTEN has no restrictions.
66
*
67
* ENVIRONMENT
68
*
69
* VAN DER GRINTEN was tested and certified in the following environments:
70
*
71
* 1. Solaris 2.5 with GCC, version 2.8.1
72
* 2. Windows 95 with MS Visual C++, version 6
73
*
74
* MODIFICATIONS
75
*
76
* Date Description
77
* ---- -----------
78
* 3-1-07 Original Code
79
*
80
*/
81
82
83
#include "
CoordinateSystem.h
"
84
85
86
namespace
MSP
87
{
88
namespace
CCS
89
{
90
class
MapProjection3Parameters;
91
class
MapProjectionCoordinates;
92
class
GeodeticCoordinates;
93
94
95
/***************************************************************************/
96
/*
97
* DEFINES
98
*/
99
100
class
VanDerGrinten
:
public
CoordinateSystem
101
{
102
public
:
103
104
/*
105
* The constructor receives the ellipsoid parameters and
106
* projection parameters as inputs, and sets the corresponding state
107
* 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
* falseEasting : A coordinate value in meters assigned to the
115
* central meridian of the projection. (input)
116
* falseNorthing : A coordinate value in meters assigned to the
117
* origin latitude of the projection (input)
118
*/
119
120
VanDerGrinten
(
double
ellipsoidSemiMajorAxis,
double
ellipsoidFlattening,
double
centralMeridian,
double
falseEasting,
double
falseNorthing );
121
122
123
VanDerGrinten
(
const
VanDerGrinten
&v );
124
125
126
~VanDerGrinten
(
void
);
127
128
129
VanDerGrinten
&
operator=
(
const
VanDerGrinten
&v );
130
131
132
/*
133
* The function getParameters returns the current ellipsoid
134
* parameters, and Van Der Grinten projection parameters.
135
*
136
* ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
137
* ellipsoidFlattening : Flattening of ellipsoid (output)
138
* centralMeridian : Longitude in radians at the center of (output)
139
* the projection
140
* falseEasting : A coordinate value in meters assigned to the
141
* central meridian of the projection. (output)
142
* falseNorthing : A coordinate value in meters assigned to the
143
* origin latitude of the projection (output)
144
*/
145
146
MapProjection3Parameters
*
getParameters
()
const
;
147
148
149
/*
150
* The function convertFromGeodetic converts geodetic (latitude and
151
* longitude) coordinates to Van Der Grinten projection (easting and northing)
152
* coordinates, according to the current ellipsoid and Van Der Grinten projection
153
* parameters. If any errors occur, an exception is thrown with a description
154
* of the error.
155
*
156
* longitude : Longitude (lambda) in radians (input)
157
* latitude : Latitude (phi) in radians (input)
158
* easting : Easting (X) in meters (output)
159
* northing : Northing (Y) in meters (output)
160
*/
161
162
MSP::CCS::MapProjectionCoordinates
*
convertFromGeodetic
(
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates );
163
164
165
/*
166
* The function convertToGeodetic converts Grinten projection
167
* (easting and northing) coordinates to geodetic (latitude and longitude)
168
* coordinates, according to the current ellipsoid and Grinten projection
169
* coordinates. If any errors occur, an exception is thrown with a description
170
* of the error.
171
*
172
* easting : Easting (X) in meters (input)
173
* northing : Northing (Y) in meters (input)
174
* longitude : Longitude (lambda) in radians (output)
175
* latitude : Latitude (phi) in radians (output)
176
*/
177
178
MSP::CCS::GeodeticCoordinates
*
convertToGeodetic
(
MSP::CCS::MapProjectionCoordinates
* mapProjectionCoordinates );
179
180
private
:
181
182
/* Ellipsoid Parameters, default to WGS 84 */
183
double
es2;
/* Eccentricity (0.08181919084262188000) squared */
184
double
es4;
/* es2 * es2 */
185
double
es6;
/* es4 * es2 */
186
double
Ra;
/* Spherical Radius */
187
double
PI_Ra;
188
189
/* Van Der Grinten projection Parameters */
190
double
Grin_Origin_Long;
/* Longitude of origin in radians */
191
double
Grin_False_Easting;
192
double
Grin_False_Northing;
193
194
195
double
floatEq(
double
x,
double
v,
double
epsilon );
196
};
197
}
198
}
199
200
#endif
201
202
203
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Feb 16 2016 14:54:02 for GeographicTranslator by doxygen 1.8.2