UNCLASSIFIED

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