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
bng
BritishNationalGrid.h
Go to the documentation of this file.
1
// CLASSIFICATION: UNCLASSIFIED
2
3
#ifndef BritishNationalGrid_H
4
#define BritishNationalGrid_H
5
6
/***************************************************************************/
7
/* RSC IDENTIFIER: BRITISH NATIONAL GRID
8
*
9
* ABSTRACT
10
*
11
* This component provides conversions between Geodetic coordinates
12
* (latitude and longitude) and British National Grid coordinates.
13
*
14
* ERROR HANDLING
15
*
16
* This component checks parameters for valid values. If an invalid value
17
* is found the error code is combined with the current error code using
18
* the bitwise or. This combining allows multiple error codes to be
19
* returned. The possible error codes are:
20
*
21
* BNG_NO_ERROR : No errors occurred in function
22
* BNG_LAT_ERROR : Latitude outside of valid range
23
* (49.5 to 61.5 degrees)
24
* BNG_LON_ERROR : Longitude outside of valid range
25
* (-10.0 to 3.5 degrees)
26
* BNG_EASTING_ERROR : Easting outside of valid range
27
* (depending on ellipsoid and
28
* projection parameters)
29
* BNG_NORTHING_ERROR : Northing outside of valid range
30
* (depending on ellipsoid and
31
* projection parameters)
32
* BNG_STRING_ERROR : A BNG string error: string too long,
33
* too short, or badly formed
34
* BNG_INVALID_AREA_ERROR : Coordinate is outside of valid area
35
* BNG_ELLIPSOID_ERROR : Invalid ellipsoid - must be Airy
36
*
37
* REUSE NOTES
38
*
39
* BRITISH NATIONAL GRID is intended for reuse by any application that
40
* performs a British National Grid projection or its inverse.
41
*
42
* REFERENCES
43
*
44
* Further information on BRITISH NATIONAL GRID can be found in the
45
* Reuse Manual.
46
*
47
* BRITISH NATIONAL GRID originated from :
48
* 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
* BRITISH NATIONAL GRID has no restrictions.
60
*
61
* ENVIRONMENT
62
*
63
* BRITISH NATIONAL GRID was tested and certified in the following
64
* environments:
65
*
66
* 1. Solaris 2.5 with GCC, version 2.8.1
67
* 2. Windows 95 with MS Visual C++, version 6
68
*
69
* MODIFICATIONS
70
*
71
* Date Description
72
* ---- -----------
73
* 09-06-00 Original Code
74
* 03-02-07 Original C++ Code
75
*
76
*
77
*/
78
79
#include "
DtccApi.h
"
80
#include "
CoordinateSystem.h
"
81
82
83
84
namespace
MSP
85
{
86
namespace
CCS
87
{
88
class
EllipsoidParameters;
89
class
TransverseMercator;
90
class
BNGCoordinates;
91
class
GeodeticCoordinates;
92
93
94
/***************************************************************************/
95
/*
96
* DEFINES
97
*/
98
class
MSP_DTCC_API
BritishNationalGrid
:
public
CoordinateSystem
99
{
100
public
:
101
102
/*
103
* The constructor receives the ellipsoid code and sets
104
* the corresponding state variables. If any errors occur, an exception is thrown
105
* with a description of the error.
106
*
107
* ellipsoidCode : 2-letter code for ellipsoid (input)
108
*/
109
110
BritishNationalGrid
(
char
*ellipsoidCode );
111
112
113
BritishNationalGrid
(
const
BritishNationalGrid
&bng );
114
115
116
~
BritishNationalGrid
(
void
);
117
118
119
BritishNationalGrid
& operator=(
const
BritishNationalGrid
&bng );
120
121
122
/*
123
* The function getParameters returns the current ellipsoid
124
* code.
125
*
126
* ellipsoidCode : 2-letter code for ellipsoid (output)
127
*/
128
129
EllipsoidParameters
* getParameters()
const
;
130
131
132
/*
133
* The function convertFromGeodetic converts geodetic (latitude and
134
* longitude) coordinates to a BNG coordinate string, according to the
135
* current ellipsoid parameters. If any errors occur, an exception is thrown
136
* with a description of the error.
137
*
138
* longitude : Longitude, in radians (input)
139
* latitude : Latitude, in radians (input)
140
* precision : Precision level of BNG string (input)
141
* BNGString : British National Grid coordinate string (output)
142
*
143
*/
144
145
MSP::CCS::BNGCoordinates
* convertFromGeodetic(
MSP::CCS::GeodeticCoordinates
* geodeticCoordinates,
long
precision );
146
147
148
/*
149
* The function convertToGeodetic converts a BNG coordinate string
150
* to geodetic (latitude and longitude) coordinates, according to the current
151
* ellipsoid parameters. If any errors occur, an exception is thrown
152
* with a description of the error.
153
*
154
* BNGString : British National Grid coordinate string (input)
155
* longitude : Longitude, in radians (output)
156
* latitude : Latitude, in radians (output)
157
*
158
*/
159
160
MSP::CCS::GeodeticCoordinates
* convertToGeodetic(
MSP::CCS::BNGCoordinates
* bngCoordinates );
161
162
163
/*
164
* The function convertFromTransverseMercator converts Transverse Mercator
165
* (easting and northing) coordinates to a BNG coordinate string, according
166
* to the current ellipsoid parameters. If any errors occur, an exception is thrown
167
* with a description of the error.
168
*
169
* easting : Easting (X), in meters (input)
170
* northing : Northing (Y), in meters (input)
171
* precision : Precision level of BNG string (input)
172
* BNGString : British National Grid coordinate string (output)
173
*/
174
175
MSP::CCS::BNGCoordinates
* convertFromTransverseMercator(
MapProjectionCoordinates
* mapProjectionCoordinates,
long
precision );
176
177
178
/*
179
* The function convertToTransverseMercator converts a BNG coordinate string
180
* to Transverse Mercator projection (easting and northing) coordinates
181
* according to the current ellipsoid parameters. If any errors occur, an exception is thrown
182
* with a description of the error.
183
*
184
* BNGString : British National Grid coordinate string (input)
185
* easting : Easting (X), in meters (output)
186
* northing : Northing (Y), in meters (output)
187
*/
188
189
MSP::CCS::MapProjectionCoordinates
* convertToTransverseMercator(
MSP::CCS::BNGCoordinates
* bngCoordinates );
190
191
private
:
192
193
TransverseMercator
* transverseMercator;
194
195
char
BNG_Letters[3];
196
double
BNG_Easting;
197
double
BNG_Northing;
198
char
BNG_Ellipsoid_Code[3];
199
200
};
201
}
202
}
203
204
#endif
205
206
207
// CLASSIFICATION: UNCLASSIFIED
Generated on Tue Feb 16 2016 14:54:01 for GeographicTranslator by doxygen 1.8.2