OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Private Attributes | List of all members
ossimHdfInfo Class Reference

HDF info class. More...

#include <ossimHdfInfo.h>

Inheritance diagram for ossimHdfInfo:
ossimInfoBase ossimReferenced

Public Member Functions

 ossimHdfInfo ()
 default constructor More...
 
virtual ~ossimHdfInfo ()
 virtual destructor More...
 
virtual bool open (const ossimFilename &file)
 open method. More...
 
virtual std::ostream & print (std::ostream &out) const
 Print method. More...
 
- Public Member Functions inherited from ossimInfoBase
 ossimInfoBase ()
 default constructor More...
 
virtual bool open (std::shared_ptr< ossim::istream > &str, const std::string &connectionString)
 open method. More...
 
void setProcessOverviewFlag (bool flag)
 Sets the overview flag. More...
 
bool getProcessOverviewFlag () const
 Method to get the overview flag. More...
 
virtual bool getKeywordlist (ossimKeywordlist &kwl) const
 Method to dump info to a keyword list. More...
 
virtual bool getKeywordlist (ossimKeywordlist &kwl, ossim_uint32 entryIndex) const
 Method to dump info to a keyword list. More...
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Private Attributes

ossimFilename theFile
 
ossimRefPtr< ossimHdfReaderm_hdfReader
 
ossimString m_driverName
 
std::map< ossimString, ossimString, ossimStringLtstrm_globalMeta
 
std::vector< ossimStringm_globalMetaVector
 

Additional Inherited Members

- Protected Member Functions inherited from ossimInfoBase
virtual ~ossimInfoBase ()
 virtual destructor More...
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Attributes inherited from ossimInfoBase
bool theOverviewFlag
 

Detailed Description

HDF info class.

Encapsulates the HDF functionality.

Definition at line 27 of file ossimHdfInfo.h.

Constructor & Destructor Documentation

◆ ossimHdfInfo()

ossimHdfInfo::ossimHdfInfo ( )

default constructor

Definition at line 27 of file ossimHdfInfo.cpp.

28  : ossimInfoBase(),
29  theFile(),
30  m_hdfReader(0),
31  m_driverName()
32 {
33 }
ossimString m_driverName
Definition: ossimHdfInfo.h:58
ossimRefPtr< ossimHdfReader > m_hdfReader
Definition: ossimHdfInfo.h:57
ossimFilename theFile
Definition: ossimHdfInfo.h:56
ossimInfoBase()
default constructor

◆ ~ossimHdfInfo()

ossimHdfInfo::~ossimHdfInfo ( )
virtual

virtual destructor

Definition at line 35 of file ossimHdfInfo.cpp.

References m_globalMeta, m_globalMetaVector, and m_hdfReader.

36 {
37  m_hdfReader = 0;
38  m_globalMeta.clear();
39  m_globalMetaVector.clear();
40 }
std::vector< ossimString > m_globalMetaVector
Definition: ossimHdfInfo.h:60
ossimRefPtr< ossimHdfReader > m_hdfReader
Definition: ossimHdfInfo.h:57
std::map< ossimString, ossimString, ossimStringLtstr > m_globalMeta
Definition: ossimHdfInfo.h:59

Member Function Documentation

◆ open()

bool ossimHdfInfo::open ( const ossimFilename file)
virtual

open method.

Parameters
fileFile name to open.
Returns
true on success false on error.

Reimplemented from ossimInfoBase.

Definition at line 42 of file ossimHdfInfo.cpp.

43 {
44  static const char MODULE[] = "ossimHdfInfo::open";
45  if (traceDebug())
46  {
48  << MODULE << " entered...\n"
49  << "file: " << file << "\n";
50  }
51 
52  bool result = false;
53 
54  ossimString ext = file.ext();
55  ext.downcase();
56 
57  if ( ext == "hdf" || ext == "h4" || ext == "hdf4" ||
58  ext == "he4" || ext == "hdf5" || ext == "he5" || ext == "h5" ||
59  ext == "l1r")
60  {
62  m_hdfReader->setFilename(file);
63 
64  if ( m_hdfReader->open() )
65  {
67  if (m_driverName.contains("HDF4"))
68  {
69  m_driverName = "hdf4";
70  }
71  else if (m_driverName.contains("HDF5"))
72  {
73  m_driverName = "hdf5";
74  }
75 
76  theFile = file;
77  m_globalMeta.clear();
78  m_globalMetaVector.clear();
79  GDALDatasetH dataset = GDALOpen(theFile.c_str(), GA_ReadOnly);
80  if (dataset != 0)
81  {
82  char** papszMetadata = GDALGetMetadata(dataset, NULL);
83  if( CSLCount(papszMetadata) > 0 )
84  {
85  for(ossim_uint32 metaIndex = 0; papszMetadata[metaIndex] != 0; ++metaIndex)
86  {
87  ossimString metaInfo = papszMetadata[metaIndex];
88  if (metaInfo.contains("="))
89  {
90  std::vector<ossimString> metaInfos = metaInfo.split("=");
91  if (metaInfos.size() > 1)
92  {
93  ossimString key = metaInfos[0];
94  ossimString keyStr = key.substitute(":", ".", true);
95  keyStr = keyStr + ": ";
96  ossimString valueStr = metaInfos[1];
97  m_globalMeta[keyStr] = valueStr;
98  m_globalMetaVector.push_back(ossimString(keyStr + valueStr));
99  }
100  }
101  }
102  }
103  }
104  GDALClose(dataset);
105 
106  result = true;
107  }
108  }
109 
110  if (traceDebug())
111  {
113  << MODULE << " exit status = " << (result?"true\n":"false\n");
114  }
115 
116  return result;
117 }
ossimString substitute(const ossimString &searchKey, const ossimString &replacementValue, bool replaceAll=false) const
Substitutes searchKey string with replacementValue and returns a string.
bool contains(char aChar) const
Definition: ossimString.h:58
virtual bool open()
Open method.
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
ossimString m_driverName
Definition: ossimHdfInfo.h:58
virtual void setFilename(const ossimFilename &filename)
Sets the filename.
unsigned int ossim_uint32
std::vector< ossimString > m_globalMetaVector
Definition: ossimHdfInfo.h:60
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
ossimString getDriverName()
ossimRefPtr< ossimHdfReader > m_hdfReader
Definition: ossimHdfInfo.h:57
ossimFilename theFile
Definition: ossimHdfInfo.h:56
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
ossimString ext() const
std::map< ossimString, ossimString, ossimStringLtstr > m_globalMeta
Definition: ossimHdfInfo.h:59
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ print()

std::ostream & ossimHdfInfo::print ( std::ostream &  out) const
virtual

Print method.

Parameters
outStream to print to.
Returns
std::ostream&

Implements ossimInfoBase.

Definition at line 119 of file ossimHdfInfo.cpp.

120 {
121  static const char MODULE[] = "ossimHdfInfo::print";
122  if (traceDebug())
123  {
124  ossimNotify(ossimNotifyLevel_DEBUG) << MODULE << " entered...\n";
125  }
126 
127  ossimString prefix = ossimString(m_driverName + ".").downcase();
128 
129  //print out global meta first
130  for (ossim_uint32 i = 0; i < m_globalMetaVector.size(); i++)
131  {
132  out << prefix << m_globalMetaVector[i] << "\n";
133  }
134 
136  for (ossim_uint32 i = 0; i < entryNum; i++)
137  {
138  ossimString imagePrefix = "image" + ossimString::toString(i) + ".";
139  ossimString fileName = m_hdfReader->getEntryString(i);
140  if (!fileName.empty())
141  {
142  GDALDatasetH dataset = GDALOpen(fileName.c_str(), GA_ReadOnly);
143  if (dataset != 0)
144  {
145  ossim_uint32 numOfBands = GDALGetRasterCount(dataset);
146  for (ossim_uint32 j = 0; j < numOfBands; j++)
147  {
148  ossimString bandPrefix = "band" + ossimString::toString(j) + ".";
149  ossimString prefixStr = prefix + imagePrefix + bandPrefix;
150  ossimString nameStr = "name: ";
151  ossimString subDatasetName = fileName;
152  std::vector<ossimString> subFileList = fileName.split(":");
153  if (subFileList.size() > 2)
154  {
155  if (m_driverName == "hdf4")
156  {
157  subDatasetName = subFileList[1] + ":" + subFileList[subFileList.size() - 2] + ":" + subFileList[subFileList.size() - 1];
158  }
159  else if (m_driverName == "hdf5")
160  {
161  subDatasetName = subFileList[subFileList.size() - 1];
162  }
163  }
164  out << prefixStr << nameStr << subDatasetName << "\n";
165 
166  char** papszMetadata = GDALGetMetadata(dataset, NULL);
167  if( CSLCount(papszMetadata) > 0 )
168  {
169  for(ossim_uint32 metaIndex = 0; papszMetadata[metaIndex] != 0; ++metaIndex)
170  {
171  ossimString metaInfo = papszMetadata[metaIndex];
172  if (metaInfo.contains("="))
173  {
174  std::vector<ossimString> metaInfos = metaInfo.split("=");
175  if (metaInfos.size() > 1)
176  {
177  ossimString key = metaInfos[0];
178  ossimString keyStr = key.substitute(":", ".", true);
179  keyStr = keyStr + ": ";
180  ossimString valueStr = metaInfos[1];
181  std::map<ossimString, ossimString, ossimStringLtstr>::const_iterator itSub = m_globalMeta.find(keyStr);
182  if (itSub == m_globalMeta.end())//avoid to print global again
183  {
184  out << prefixStr << keyStr << valueStr << "\n";
185  }
186  }
187  }
188  }
189  }
190  }
191  GDALClose(dataset);
192  }//end if (dataset != 0)
193  }//end if (!fileName.empty())
194  }//end for
195 
196  if (traceDebug())
197  {
198  ossimNotify(ossimNotifyLevel_DEBUG) << MODULE << " exited...\n";
199  }
200 
201  return out;
202 }
ossimString substitute(const ossimString &searchKey, const ossimString &replacementValue, bool replaceAll=false) const
Substitutes searchKey string with replacementValue and returns a string.
virtual ossim_uint32 getNumberOfEntries() const
bool contains(char aChar) const
Definition: ossimString.h:58
static ossimString toString(bool aValue)
Numeric to string methods.
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
ossimString m_driverName
Definition: ossimHdfInfo.h:58
unsigned int ossim_uint32
std::vector< ossimString > m_globalMetaVector
Definition: ossimHdfInfo.h:60
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
ossimRefPtr< ossimHdfReader > m_hdfReader
Definition: ossimHdfInfo.h:57
ossimString getEntryString(ossim_uint32 entryId) const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
bool empty() const
Definition: ossimString.h:411
std::map< ossimString, ossimString, ossimStringLtstr > m_globalMeta
Definition: ossimHdfInfo.h:59
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

Member Data Documentation

◆ m_driverName

ossimString ossimHdfInfo::m_driverName
private

Definition at line 58 of file ossimHdfInfo.h.

◆ m_globalMeta

std::map<ossimString, ossimString, ossimStringLtstr> ossimHdfInfo::m_globalMeta
private

Definition at line 59 of file ossimHdfInfo.h.

Referenced by ~ossimHdfInfo().

◆ m_globalMetaVector

std::vector<ossimString> ossimHdfInfo::m_globalMetaVector
private

Definition at line 60 of file ossimHdfInfo.h.

Referenced by ~ossimHdfInfo().

◆ m_hdfReader

ossimRefPtr<ossimHdfReader> ossimHdfInfo::m_hdfReader
private

Definition at line 57 of file ossimHdfInfo.h.

Referenced by ~ossimHdfInfo().

◆ theFile

ossimFilename ossimHdfInfo::theFile
private

Definition at line 56 of file ossimHdfInfo.h.


The documentation for this class was generated from the following files: