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
utm
UTM.h
Go to the documentation of this file.
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef UTM_H
4
#define UTM_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: UTM
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between geodetic coordinates
12
* (latitude and longitudes) and Universal Transverse Mercator (UTM)
13
* projection (zone, hemisphere, easting, and northing) coordinates.
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
* UTM_NO_ERROR : No errors occurred in function
23
* UTM_LAT_ERROR : Latitude outside of valid range
24
* (-80.5 to 84.5 degrees)
25
* UTM_LON_ERROR : Longitude outside of valid range
26
* (-180 to 360 degrees)
27
* UTM_EASTING_ERROR : Easting outside of valid range
28
* (100,000 to 900,000 meters)
29
* UTM_NORTHING_ERROR : Northing outside of valid range
30
* (0 to 10,000,000 meters)
31
* UTM_ZONE_ERROR : Zone outside of valid range (1 to 60)
32
* UTM_HEMISPHERE_ERROR : Invalid hemisphere ('N' or 'S')
33
* UTM_ZONE_OVERRIDE_ERROR: Zone outside of valid range
34
* (1 to 60) and within 1 of 'natural' zone
35
* UTM_A_ERROR : Semi-major axis less than or equal to zero
36
* UTM_INV_F_ERROR : Inverse flattening outside of valid range
37
* (250 to 350)
38
*
39
* REUSE NOTES
40
*
41
* UTM is intended for reuse by any application that performs a Universal
42
* Transverse Mercator (UTM) projection or its inverse.
43
*
44
* REFERENCES
45
*
46
* Further information on UTM can be found in the Reuse Manual.
47
*
48
* UTM originated from : U.S. Army Topographic Engineering Center
49
* Geospatial Information Division
50
* 7701 Telegraph Road
51
* Alexandria, VA 22310-3864
52
*
53
* LICENSES
54
*
55
* None apply to this component.
56
*
57
* RESTRICTIONS
58
*
59
* UTM has no restrictions.
60
*
61
* ENVIRONMENT
62
*
63
* UTM was tested and certified in the following environments:
64
*
65
* 1. Solaris 2.5 with GCC, version 2.8.1
66
* 2. MSDOS with MS Visual C++, version 6
67
*
68
* MODIFICATIONS
69
*
70
* Date Description
71
* ---- -----------
72
* 2-27-07 Original C++ Code
73
* 5-02-11 DR 28872, interface added to allow setting zone override
74
* for each fromGeodetic call. The override in the call has
75
* precedence over what is set in the class constructor.
76
* 5-09-11 DR 28908, add default constructor
77
*
78
* 1/16/2016 A. Layne MSP_DR30125 Updated constructor to receive ellipsoid
79
* code from callers
80
*/
81
82
83
#include <map>
84
#include "
CoordinateSystem.h
"
85
86
87
namespace
MSP
88
{
89
namespace
CCS
90
{
91
class
UTMParameters;
92
class
TransverseMercator;
93
class
UTMCoordinates;
94
class
GeodeticCoordinates;
95
96
97
/***********************************************************************/
98
/*
99
* DEFINES
100
*/
101
102
class
MSP_DTCC_API
UTM
:
public
CoordinateSystem
103
{
104
public
:
105
106
/*
107
* The constructor receives the ellipsoid parameters and
108
* UTM zone override parameter as inputs, and sets the
109
* corresponding state variables. If any errors occur,
110
* an exception is thrown with a description of the error.
111
*
112
* ellipsoidSemiMajorAxis : Semi-major axis in meters (input)
113
* ellipsoidFlattening : Flattening of ellipsoid (input)
114
* override : UTM override zone, 0 indicates no override (input)
115
*/
116
117
UTM
();
118
119
UTM
(
120
double
ellipsoidSemiMajorAxis,
121
double
ellipsoidFlattening,
122
char
*ellipsoidCode,
123
long
override
= 0
124
);
125
126
127
UTM
(
const
UTM
&u );
128
129
130
~
UTM
(
void
);
131
132
133
UTM
& operator=(
const
UTM
&u );
134
135
136
/*
137
* The function getParameters returns the current ellipsoid
138
* parameters and UTM zone override parameter.
139
*
140
* ellipsoidSemiMajorAxis : Semi-major axis (meters) (output)
141
* ellipsoidFlattening : Flattening of ellipsoid (output)
142
* override : UTM override zone, zero indicates no override (output)
143
*/
144
145
UTMParameters
* getParameters()
const
;
146
147
148
/*
149
* The function convertFromGeodetic converts geodetic (latitude and
150
* longitude) coordinates to UTM projection (zone, hemisphere,
151
* easting and northing) coordinates according to the current
152
* ellipsoid and UTM zone override parameters. If any errors occur,
153
* an exception is thrown with a description of the error.
154
*
155
* longitude : Longitude in radians (input)
156
* latitude : Latitude in radians (input)
157
* utmZoneOverride : zone override (input)
158
* zone : UTM zone (output)
159
* hemisphere : North or South hemisphere (output)
160
* easting : Easting (X) in meters (output)
161
* northing : Northing (Y) in meters (output)
162
*/
163
164
MSP::CCS::UTMCoordinates
* convertFromGeodetic(
165
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates,
166
int
utmZoneOverride = 0 );
167
168
169
/*
170
* The function convertToGeodetic converts UTM projection (zone,
171
* hemisphere, easting and northing) coordinates to geodetic
172
* (latitude and longitude) coordinates, according to the
173
* current ellipsoid parameters. If any errors occur,
174
* an exception is thrown with a description of the error.
175
*
176
* zone : UTM zone (input)
177
* hemisphere : North or South hemisphere (input)
178
* easting : Easting (X) in meters (input)
179
* northing : Northing (Y) in meters (input)
180
* longitude : Longitude in radians (output)
181
* latitude : Latitude in radians (output)
182
*/
183
184
MSP::CCS::GeodeticCoordinates
* convertToGeodetic(
185
MSP::CCS::UTMCoordinates
* utmCoordinates );
186
187
private
:
188
char
ellipsCode[3];
189
190
std::map< int, TransverseMercator* > transverseMercatorMap;
191
192
long
UTM_Override;
/* Zone override flag */
193
};
194
}
195
}
196
197
#endif
198
199
200
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Feb 16 2016 14:54:02 for GeographicTranslator by doxygen 1.8.2