UNCLASSIFIED

GeographicTranslator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
egm2008_aoi_grid_package.h
Go to the documentation of this file.
1 
2 // CLASSIFICATION: UNCLASSIFIED
3 
5 // //
6 // File name: egm2008_aoi_grid_package.h //
7 // //
8 // Description of this module: //
9 // Utility software that interpolates EGM 2008 geoid //
10 // heights from one of NGA's reformatted geoid height grids. //
11 // //
12 // This interpolator uses Area of Interest (AOI) //
13 // geoid height grids, not the worldwide geoid height grid. //
14 // //
15 // This interpolator does not load an Area of Interest (AOI) //
16 // geoid height grid until a user first requests a geoid height. //
17 // The interpolator then loads an AOI grid centered near the point of //
18 // interest, and it interpolates local geoid height from the AOI grid. //
19 // This interpolator re-uses the AOI grid until a subsequent point of //
20 // interest lies outside the AOI. The interpolator then loads a //
21 // new AOI grid centered at the new horizontal location of interest. //
22 // //
23 // This interpolator gives exactly the same results as //
24 // the companion egm2008_full_grid_package's interpolator. //
25 // However, the AOI interpolator requires far less computer memory. //
26 // //
27 // Revision History: //
28 // Date Name Description //
29 // ----------- ------------ ----------------------------------------------//
30 // 19 Nov 2010 RD Craig Release //
31 // 11 Feb 2011 RD Craig Updates following code review //
32 // 30 May 2013 RD Craig MSP 1.3: ER29758 //
33 // Added second constructor to //
34 // permit multiple geoid-height grids //
35 // when assessing relative interpolation errors. //
36 // //
38 
39 #ifndef EGM2008_AOI_GRID_PACKAGE_H
40 #define EGM2008_AOI_GRID_PACKAGE_H
41 
42 // This file declares a C++ class
43 // that interpolates EGM 2008 geoid heights from a
44 // reformatted version of NGA's worldwide geoid height grids.
45 
46 #include "DtccApi.h"
47 #include "egm2008_geoid_grid.h"
48 
49 namespace MSP
50 {
51 
53 
54  protected:
55 
56  // _maxAoiColIndex: The AOI grid's maximum column index;
57  // this is referenced to the worldwide grid.
58 
60 
61  // _minAoiColIndex: The AOI grid's minimum column index;
62  // this is referenced to the worldwide grid.
63 
65 
66  // _maxAoiRowIndex: The AOI grid's maximum row index;
67  // this is referenced to the worldwide grid.
68 
70 
71  // _minAoiRowIndex: The AOI grid's minimum row index;
72  // this is referenced to the worldwide grid.
73 
75 
76  // nAoiCols: The number of columns in the AOI grid.
77 
78  int _nAoiCols;
79 
80  // nAoiRows: The number of rows in the AOI grid.
81 
82  int _nAoiRows;
83 
84  // nomAoiCols: Nominal number of columns in the AOI
85  // grid; actual number is latitude dependent.
86 
88 
89  // nomAoiRows: Nominal number of rows in the AOI grid.
90 
92 
93  // heightGrid: A pointer to a
94  // one-dimensional array containing a
95  // part of the reformatted geoid-height grid.
96 
97  float* _heightGrid;
98 
99  public:
100 
101  // Basic functions .....
102 
103  Egm2008AoiGrid( void );
104 
105  Egm2008AoiGrid( const std::string &gridFname ); // new 5/30/2013
106 
107  Egm2008AoiGrid( const Egm2008AoiGrid& oldGrid );
108 
109  ~Egm2008AoiGrid( void );
110 
112  operator = ( const Egm2008AoiGrid& oldGrid );
113 
114  // User functions .....
115 
116  // geoidHeight: A function that interpolates
117  // local geoid height (meters) from
118  // a reformatted EGM 2008 geoid height grid;
119  // this function uses bi-cubic spline interpolation.
120 
121  virtual int
122  geoidHeight(
123  int wSize, // input
124  double latitude, // input
125  double longitude, // input
126  double& gHeight ); // output
127 
128  protected:
129 
130  // geoidHeight: A function that interpolates
131  // local geoid height (meters) from
132  // a reformatted EGM 2008 geoid height grid;
133  // this function uses bilinear interpolation.
134 
135  virtual int
136  geoidHeight(
137  double latitude, // input
138  double longitude, // input
139  double& gHeight ); // output
140 
141  // loadAoiParms: A function that loads an AOI grid's
142  // parameters relative to an input worldwide grid.
143 
144  int
145  loadAoiParms(
146  int i0, int j0 );
147 
148  // loadGrid: A function that loads an AOI grid from
149  // a reformatted EGM 2008 worldwide geoid height grid.
150 
151  int
152  loadGrid( void );
153 
154  // loadGridMetadata: A function that loads worldwide EGM 2008
155  // grid metadata from a reformatted worldwide grid file.
156 
157  int
158  loadGridMetadata( void );
159 
160  }; // End of Egm2008AoiGrid class declaration
161 
162 } // End of namespace block
163 
164 #endif
165 
166 // CLASSIFICATION: UNCLASSIFIED
167