OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimH5Reader.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: LGPL
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: David Burken
8 //
9 // Description: OSSIM HDF5 Reader.
10 //
11 //----------------------------------------------------------------------------
12 // $Id
13 
14 #ifndef ossimH5Reader_HEADER
15 #define ossimH5Reader_HEADER 1
16 
18 #include <ossim/base/ossimIrect.h>
19 #include <ossim/base/ossimRefPtr.h>
23 #include "ossimH5ImageDataset.h"
24 
25 #include <mutex>
26 #include <vector>
27 
28 // Forward class declarations:
29 namespace H5
30 {
31  class DataSet;
32  class H5File;
33 }
34 
36 {
37 public:
38 
41 
43  virtual ~ossimH5ImageHandler();
44 
46  virtual ossimString getShortName() const;
47 
49  virtual ossimString getLongName() const;
50 
52  virtual ossimString getClassName() const;
53 
60  ossim_uint32 resLevel=0);
73  virtual bool getTile(ossimImageData* result, ossim_uint32 resLevel=0);
74 
79  virtual ossim_uint32 getNumberOfInputBands() const;
80 
86  virtual ossim_uint32 getNumberOfOutputBands()const;
87 
92  virtual ossim_uint32 getNumberOfLines(ossim_uint32 reduced_res_level = 0) const;
93 
98  virtual ossim_uint32 getNumberOfSamples(ossim_uint32 reduced_res_level = 0) const;
99 
104  virtual ossimIrect getImageRectangle(ossim_uint32 reduced_res_level = 0) const;
105 
110  virtual bool saveState(ossimKeywordlist& kwl,
111  const char* prefix=0)const;
112 
117  virtual bool loadState(const ossimKeywordlist& kwl,
118  const char* prefix=0);
119 
123  virtual ossimScalarType getOutputScalarType() const;
124 
131  virtual ossim_uint32 getImageTileWidth() const;
132 
139  virtual ossim_uint32 getImageTileHeight() const;
140 
141  bool isOpen()const;
142 
144  virtual void close();
145 
149  virtual ossim_uint32 getNumberOfEntries()const;
150 
163  virtual void getEntryNames(std::vector<ossimString>& entryNames) const;
164 
170  virtual void getEntryList(std::vector<ossim_uint32>& entryList) const;
171 
172  virtual bool setCurrentEntry(ossim_uint32 entryIdx);
173 
177  virtual ossim_uint32 getCurrentEntry() const;
178 
185 
187  virtual double getNullPixelValue(ossim_uint32 band=0)const;
188 
198  virtual void setProperty(ossimRefPtr<ossimProperty> property);
199 
204  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const;
205 
210  virtual void getPropertyNames(std::vector<ossimString>& propertyNames) const;
211 
224  virtual void addMetadata( ossimKeywordlist* kwl,
225  const std::string& prefix ) const;
226 
227 protected:
228 
231 
241  ossimRefPtr<ossimProjection> processCoarseGridProjection(
242  H5::DataSet& latDataSet,
243  H5::DataSet& lonDataSet,
244  const ossimIrect& validRect ) const;
245 
253  bool getLatLonDatasetNames( H5::H5File* h5File,
254  std::string& latName,
255  std::string& lonName ) const;
262  bool getLatLonDatasets( H5::H5File* h5File,
263  H5::DataSet& latDataSet,
264  H5::DataSet& lonDataSet ) const;
265 
266  bool getDataSetRect( std::string& name, std::string& lonName ) const;
267 
272  virtual bool open();
273 
275  void allocate();
276 
281  void addImageDatasetEntries(const std::vector<std::string>& names);
282 
286  bool isNppMission( H5::H5File* h5File ) const;
287 
288  H5::H5File* m_h5File;
289  std::vector<ossimH5ImageDataset> m_entries;
293  std::mutex m_mutex;
294 
295 TYPE_DATA
296 };
297 
298 #endif /* #ifndef ossimH5Reader_HEADER */
virtual bool open()=0
Pure virtual open.
Represents serializable keyword/value map.
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
virtual void getEntryNames(std::vector< ossimString > &entryNames) 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 ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossimString getShortName() const
Definition: ossimObject.cpp:48
virtual bool isOpen() const =0
Derived classes must implement this method to be concrete.
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
#define TYPE_DATA
Definition: ossimRtti.h:339
virtual ossim_uint32 getImageTileHeight() const =0
Returns the tile width of the image or 0 if the image is not tiled.
unsigned int ossim_uint32
virtual ossimString getLongName() const
Definition: ossimObject.cpp:53
virtual void close()
Deletes the overview and clears the valid image vertices.
virtual ossim_uint32 getCurrentEntry() const
virtual ossimIrect getImageRectangle(ossim_uint32 resLevel=0) const
Returns zero-based bounding rectangle of the image.
virtual ossim_uint32 getNumberOfEntries() const
#define OSSIM_PLUGINS_DLL
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
virtual void addMetadata(ossimKeywordlist *kwl, const std::string &prefix) const =0
Pure virtual addMetadata method.
ossimRefPtr< ossimImageData > m_tile
ossim_uint32 m_currentEntry
virtual ossimRefPtr< ossimImageGeometry > getInternalImageGeometry() const
ossimScalarType
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual ossim_uint32 getImageTileWidth() const =0
Returns the tile width of the image or 0 if the image is not tiled.
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
This class defines an abstract Handler which all image handlers(loaders) should derive from...
H5::H5File * m_h5File
ossimRefPtr< ossimProjection > m_projection
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
virtual ossim_uint32 getNumberOfInputBands() const =0
virtual bool setCurrentEntry(ossim_uint32 entryIdx)
std::vector< ossimH5ImageDataset > m_entries
virtual double getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)