OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimElevationDatabaseFactory.cpp
Go to the documentation of this file.
8 
11 {
12  if(!m_instance)
13  {
15  }
16 
17  return m_instance;
18 }
19 
21 {
22  if((typeName == STATIC_TYPE_NAME(ossimDtedElevationDatabase)) ||
23  (typeName == "dted")||
24  (typeName == "dted_directory"))
25 
26  {
27  return new ossimDtedElevationDatabase();
28  }
29  else if((typeName == STATIC_TYPE_NAME(ossimSrtmElevationDatabase)) ||
30  (typeName == "srtm")||
31  (typeName == "srtm_directory"))
32 
33  {
34  return new ossimSrtmElevationDatabase();
35  }
37  (typeName == "general_raster")||
38  (typeName == "general_raster_directory"))
39 
40  {
42  }
43  else if( (typeName == "ossimImageElevationDatabase") ||
44  (typeName == "image_directory"))
45 
46  {
47  return new ossimImageElevationDatabase();
48  }
49 
50  return 0;
51 }
52 
54  const char* prefix)const
55 {
57  ossimString type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
58  if(!type.empty())
59  {
60  result = createDatabase(type);
61  if(result.valid())
62  {
63  if(!result->loadState(kwl, prefix))
64  {
65  result = 0;
66  }
67  }
68  }
69 
70  return result.release();
71 }
72 
74 {
76  do
77  {
78  result = new ossimDtedElevationDatabase();
79  if (result->open(connectionString))
80  break;
81 
82  result = new ossimSrtmElevationDatabase;
83  if (result->open(connectionString))
84  break;
85 
87  if (result->open(connectionString))
88  break;
89 
90  // This method will only open individual image files for use as dems. It will not utilize the
91  // file walker to search over directories:
92  ossimFilename filename (connectionString);
93  if (filename.isFile())
94  {
95  result = new ossimImageElevationDatabase;
96  if (result->open(connectionString))
97  break;
98  }
99 
100  result = 0;
101  } while (0);
102 
103  return result.release();
104 }
105 
106 void ossimElevationDatabaseFactory::getTypeNameList(std::vector<ossimString>& typeList)const
107 {
108  typeList.push_back(STATIC_TYPE_NAME(ossimDtedElevationDatabase));
109  typeList.push_back(STATIC_TYPE_NAME(ossimSrtmElevationDatabase));
111  typeList.push_back(STATIC_TYPE_NAME(ossimImageElevationDatabase));
112 }
static ossimElevationDatabaseFactory * m_instance
Represents serializable keyword/value map.
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
static ossimElevationDatabaseFactory * instance()
static const char * TYPE_KW
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325
This is our default elevation factory in the ossim core.
bool isFile() const
T * release()
Definition: ossimRefPtr.h:93
The DTED elevation data base is also an elevation source but allows one to point to an file based ele...
ossimElevationDatabase * createDatabase(const ossimString &typeName) const
bool empty() const
Definition: ossimString.h:411
virtual ossimElevationDatabase * open(const ossimString &connectionString) const
virtual bool open(const ossimString &connectionString)=0
Open a connection to a database.