1 //*******************************************************************
2 //
3 // License:  See top level LICENSE.txt file.
4 //
5 // DESCRIPTION:
6 //   Contains declaration of class ossimGeoid. Maintains a grid of elevation
7 //   offsets for the geoid (mean sea level) relative to WGS-84 ellipsoid.
8 //
9 // SOFTWARE HISTORY:
10 //>
11 //   17Apr2001  Oscar Kramer
12 //              Initial coding.
13 //<
14 //*****************************************************************************
15 
16 #ifndef ossimGeoid_HEADER
17 #define ossimGeoid_HEADER
18 
19 #include <ossim/base/ossimObject.h>
20 #include <ossim/base/ossimErrorStatusInterface.h>
21 
22 class ossimGpt;
23 class ossimFilename;
24 
25 class OSSIMDLLEXPORT ossimGeoid : public ossimObject,
26 				  public ossimErrorStatusInterface
27 {
28 public:
29    ossimGeoid();
30 
31    virtual bool open(const ossimFilename& dir, ossimByteOrder byteOrder=OSSIM_BIG_ENDIAN) = 0;
32 
33    /**
34     *  @return The offset from the ellipsoid to the geoid.  Returns
35     *  ossim::nan() if grid does not contain the point.
36     */
37    virtual double offsetFromEllipsoid(const ossimGpt& gpt) = 0;
38 
39 protected:
40    virtual ~ossimGeoid();
41 
42    TYPE_DATA
43 };
44 
45 /**
46  * Identity geoid.
47  */
48 class OSSIM_DLL ossimIdentityGeoid : public ossimGeoid
49 {
50 public:
getShortName()51    virtual ossimString getShortName()const
52    {
53       return ossimString("identity");
54    }
open(const ossimFilename &,ossimByteOrder)55    virtual bool open(const ossimFilename& /*dir*/, ossimByteOrder)
56    {
57       return false; // can't be opened
58    }
offsetFromEllipsoid(const ossimGpt &)59    virtual double offsetFromEllipsoid(const ossimGpt& /*gpt*/)
60    {
61       return 0.0;
62    }
63 
64    TYPE_DATA
65 };
66 #endif
67