OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDtedElevationDatabase.h
Go to the documentation of this file.
1 #ifndef ossimDtedElevationDatabase_HEADER
2 #define ossimDtedElevationDatabase_HEADER 1
3 
7 #include <mutex>
8 
23 {
24 public:
25  typedef std::vector<ossimRefPtr<CellInfo> > DirectMap; // 360x180 cell grid
26 
28 
30 
31  virtual ~ossimDtedElevationDatabase();
32 
33  virtual ossimObject* dup() const;
34 
35  virtual bool open(const ossimString& connectionString);
36  virtual bool pointHasCoverage(const ossimGpt& gpt) const
37  {
38  ossimFilename filename;
39  createFullPath(filename, gpt);
40 
41  return filename.exists();
42  }
43 
44  virtual bool getAccuracyInfo(ossimElevationAccuracyInfo& info, const ossimGpt& gpt) const;
45  virtual double getHeightAboveMSL(const ossimGpt&);
46  virtual double getHeightAboveEllipsoid(const ossimGpt& gpt);
47  virtual ossim_uint64 createId(const ossimGpt& pt)const
48  {
49  ossim_uint64 y = static_cast<ossim_uint64>(ossim::wrap(pt.latd(), -90.0, 90.0)+90.0);
50  ossim_uint64 x = static_cast<ossim_uint64>(ossim::wrap(pt.lond(),-180.0,180.0)+180.0);
51  // map the extreme edge to the same ID ax the 179 west cell and the same for the 89
52  // degree north cell.
53  //
54  x = x==360?359:x;
55  y = y==180?179:y;
56  // dted databases are 1x1 degree cells and we will use a world
57  // grid for id generation.
58  //
59  return (y*360+x);
60  }
61  virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix = 0);
62  virtual bool saveState(ossimKeywordlist& kwl, const char* prefix = 0)const;
63 
64  virtual std::ostream& print(std::ostream& out) const;
65 
66 protected:
67  bool openDtedDirectory(const ossimFilename& dir);
68 
69  void createRelativePath(ossimFilename& file, const ossimGpt& gpt)const;
70 
71  void createFullPath(ossimFilename& file, const ossimGpt& gpt)const
72  {
73  ossimFilename relativeFile;
74  createRelativePath(relativeFile, gpt);
75  file = ossimFilename(m_connectionString).dirCat(relativeFile);
76  }
77 
79 
86  bool inititializeExtension( const ossimFilename& dir );
87 
88  // DTED extension. E.g. ".dt2", ".dt1", ".dt0"
90 
91  // Upcase or not when scanning for file. E.g. E045/N34.DT2 or e045/n34.dt2
92  bool m_upcase;
93 
95  mutable std::mutex m_mutex;
96 
97 
99 };
100 #endif
ossim_uint32 x
virtual double getHeightAboveMSL(const ossimGpt &)=0
Height access methods:
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
virtual ossimRefPtr< ossimElevCellHandler > createCell(const ossimGpt &)
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
Represents serializable keyword/value map.
ossim_uint32 y
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
T wrap(T x, T a, T b)
Definition: ossimCommon.h:180
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
virtual bool getAccuracyInfo(ossimElevationAccuracyInfo &, const ossimGpt &) const
bool exists() const
#define TYPE_DATA
Definition: ossimRtti.h:339
unsigned long long ossim_uint64
ossimRefPtr< ossimElevCellHandler > m_lastHandler
virtual bool pointHasCoverage(const ossimGpt &gpt) const
METHOD: pointHasCoverage(gpt) Returns TRUE if coverage exists over gpt:
std::vector< ossimRefPtr< CellInfo > > DirectMap
virtual ossim_uint64 createId(const ossimGpt &pt) const
The DTED elevation data base is also an elevation source but allows one to point to an file based ele...
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
#define OSSIM_DLL
ossimFilename dirCat(const ossimFilename &file) const
virtual ossimObject * dup() const =0
virtual double getHeightAboveEllipsoid(const ossimGpt &)
void createFullPath(ossimFilename &file, const ossimGpt &gpt) const
virtual bool open(const ossimString &connectionString)=0
Open a connection to a database.
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23