OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimPointCloudImageHandlerFactory.cpp
Go to the documentation of this file.
1 /*
2  * ossimPointCloudImageHandlerFactory.cpp
3  *
4  * Created on: Dec 8, 2014
5  * Author: okramer
6  */
7 
10 #include <ossim/base/ossimTrace.h>
12 
13 static const ossimTrace traceDebug("ossimPointCloudImageHandlerFactory:debug");
14 
15 RTTI_DEF1(ossimPointCloudImageHandlerFactory, "ossimPointCloudImageHandlerFactory", ossimImageHandlerFactoryBase);
16 
19 {
21 }
22 
24 {
25  if(!m_instance)
26  {
28  }
29 
30  return m_instance;
31 }
32 
34  bool openOverview) const
35 {
36  static const char* M = "ossimPointCloudImageHandlerFactory::open(filename) -- ";
37 
38  ossimFilename copyFilename = fileName;
40 
41  // Check for empty file.
42  copyFilename.trim();
43  if (copyFilename.empty() || !copyFilename.exists())
44  return 0;
45 
46  ossimString ext = copyFilename.ext().downcase();
47  if(ext == "gz")
48  copyFilename = copyFilename.setExtension("");
49 
50  if (traceDebug())
51  ossimNotify(ossimNotifyLevel_DEBUG)<<M<< "Trying Point Cloud...\n";
52 
53  result = new ossimPointCloudImageHandler();
54  result->setFilename(copyFilename);
55  if (!result->open())
56  result = 0;
58 
59  return result.release();
60 }
61 
63  const char* prefix)const
64 {
65  static const char* M = "ossimPointCloudImageHandlerFactory::open(kwl,prefix) -- ";
66  if(traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << M <<" entered..." << std::endl;
67 
69  if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG)<<M<< "Trying ossimPointCloudImageHandler...\n";
70  result = new ossimPointCloudImageHandler();
71  if (!result->loadState(kwl, prefix))
72  result = 0;
73 
74  return result.get();
75 }
76 
78  const ossimFilename& /* file */ ) const
79 {
81  return result;
82 }
83 
85 {
87  {
88  return new ossimPointCloudImageHandler();
89  }
90 
91  return (ossimObject*)0;
92 }
93 
95 {
96  extensionList.push_back("las");
97  extensionList.push_back("gpkg");
98 }
99 
101 {
102  if ((ext == "las") || (ext == "gpkg"))
103  {
104  result.push_back(new ossimPointCloudImageHandler);
105  return;
106  }
107 }
108 
110 {
111  ossimString test(mimeType.begin(), mimeType.begin()+6);
112  if(test == "image/")
113  {
114  ossimString mimeTypeTest(mimeType.begin() + 6, mimeType.end());
115  getImageHandlersBySuffix(result, mimeTypeTest);
116  if(mimeTypeTest == "las")
117  {
118  result.push_back(new ossimPointCloudImageHandler);
119  }
120  }
121 }
122 
124  const char* prefix)const
125 {
126  ossimObject* result = (ossimObject*)0;
127  const char* type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
128 
129  if(type)
130  {
131  if (ossimString(type).trim() == STATIC_TYPE_NAME(ossimImageHandler))
132  {
133  const char* lookup = kwl.find(prefix, ossimKeywordNames::FILENAME_KW);
134 
135  if (lookup)
136  {
137  if(traceDebug())
138  {
139  ossimNotify(ossimNotifyLevel_DEBUG) << "BEBUG: filename " << lookup << std::endl;
140  }
141  // Call the open that takes a filename...
142  result = this->open(kwl, prefix);//ossimFilename(lookup));
143  }
144  }
145  else
146  {
147  result = createObject(ossimString(type));
148  if(result)
149  {
150  result->loadState(kwl, prefix);
151  }
152  }
153  }
154  return result;
155 }
156 
157 void ossimPointCloudImageHandlerFactory::getTypeNameList(std::vector<ossimString>& typeList)const
158 {
159  typeList.push_back(STATIC_TYPE_NAME(ossimPointCloudImageHandler));
160 }
virtual bool open()=0
Pure virtual open.
virtual void getImageHandlersBySuffix(ossimImageHandlerFactoryBase::ImageHandlerList &result, const ossimString &ext) const
void setOpenOverviewFlag(bool flag)
Sets theOpenOverviewFlag.
virtual void getImageHandlersByMimeType(ossimImageHandlerFactoryBase::ImageHandlerList &result, const ossimString &mimeType) const
Represents serializable keyword/value map.
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Class used for rendering point cloud data into a raster tile.
RTTI_DEF1(ossimPointCloudImageHandlerFactory, "ossimPointCloudImageHandlerFactory", ossimImageHandlerFactoryBase)
static const char * TYPE_KW
std::string::iterator end()
Definition: ossimString.h:423
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325
virtual ossimImageHandler * open(const ossimFilename &fileName, bool openOverview=true) const
static ossimPointCloudImageHandlerFactory * m_instance
bool exists() const
std::string::iterator begin()
Definition: ossimString.h:420
virtual void setFilename(const ossimFilename &filename)
Sets the filename.
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
T * release()
Definition: ossimRefPtr.h:93
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
This class defines an abstract Handler which all image handlers(loaders) should derive from...
bool empty() const
Definition: ossimString.h:411
virtual ossimObject * createObject(const ossimString &typeName) const
ossimString ext() const
virtual void getSupportedExtensions(ossimImageHandlerFactoryBase::UniqueStringList &extensionList) const
std::vector< ossimRefPtr< ossimImageHandler > > ImageHandlerList
virtual ossimRefPtr< ossimImageHandler > openOverview(const ossimFilename &file) const
Open overview that takes a file name.
ossimFilename & setExtension(const ossimString &e)
Sets the extension of a file name.
static const char * FILENAME_KW
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
static ossimPointCloudImageHandlerFactory * instance()