OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimGdalTileSource.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: Garrett Potts
8 //
9 // Description:
10 //
11 // Contains class definition for the class "ossimGdalTileSource".
12 //
13 //*******************************************************************
14 // $Id: ossimGdalTileSource.h 22960 2014-11-06 15:42:13Z okramer $
15 
16 #ifndef ossimGdalTileSource_HEADER
17 #define ossimGdalTileSource_HEADER 1
18 
22 #include <ossim/base/ossimIrect.h>
23 #include <ossim/base/ossimString.h>
25 #include <gdal.h>
26 #include <vector>
28 
29 class ossimImageData;
30 
32 {
33 public:
35  virtual ~ossimGdalTileSource();
36 
41  virtual ossimString getShortName()const;
42 
43  virtual ossimString getLongName()const;
44  virtual ossimString getClassName()const;
45 
46  virtual void close();
47 
56  virtual bool open();
57 
63  virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& tileRect,
64  ossim_uint32 resLevel=0);
65 
70  virtual ossim_uint32 getNumberOfInputBands() const;
71 
77  virtual ossim_uint32 getNumberOfOutputBands() const;
78 
83  virtual ossim_uint32 getNumberOfLines(ossim_uint32 reduced_res_level = 0) const;
84 
89  virtual ossim_uint32 getNumberOfSamples(ossim_uint32 reduced_res_level = 0) const;
90 
97 
102  virtual ossimIrect getImageRectangle(ossim_uint32 reduced_res_level = 0) const;
103 
108  virtual bool saveState(ossimKeywordlist& kwl,
109  const char* prefix=0)const;
110 
115  virtual bool loadState(const ossimKeywordlist& kwl,
116  const char* prefix=0);
117 
124 
130 
134  virtual ossimScalarType getOutputScalarType() const;
135 
142  ossimScalarType getInputScalarType() const;
143 
147  virtual ossim_uint32 getTileWidth() const;
148 
152  virtual ossim_uint32 getTileHeight() const;
153 
160  virtual ossim_uint32 getImageTileWidth() const;
161 
168  virtual ossim_uint32 getImageTileHeight() const;
169 
173  virtual ossim_uint32 getCurrentEntry()const;
174 
179  virtual bool setCurrentEntry(ossim_uint32 entryIdx);
180 
184  virtual void getEntryList(std::vector<ossim_uint32>& entryList)const;
185 
190  virtual void getEntryNames(
191  std::vector<ossimString>& entryStringList) const;
192 
193  virtual bool isOpen()const;
194 
195  virtual double getNullPixelValue(ossim_uint32 band=0)const;
196  virtual double getMinPixelValue(ossim_uint32 band=0)const;
197  virtual double getMaxPixelValue(ossim_uint32 band=0)const;
198 
208  virtual void setProperty(ossimRefPtr<ossimProperty> property);
209 
214  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const;
215 
220  virtual void getPropertyNames(std::vector<ossimString>& propertyNames) const;
221 
239  virtual void getDecimationFactor(ossim_uint32 resLevel,
240  ossimDpt& result) const;
241 
242  GDALDriverH getDriver();
243 
244  virtual bool setOutputBandList(const std::vector<ossim_uint32>& band_list);
245 
254  void setPreservePaletteIndexesFlag(bool flag);
255 
257  bool getPreservePaletteIndexesFlag() const;
258 
267  virtual bool isIndexedData() const;
268 
269 private:
270 
277  ossimRefPtr<ossimImageData> getTileBlockRead(const ossimIrect& tileRect,
278  ossim_uint32 resLevel);
279 
285  ossimString filterSubDatasetsString(const ossimString& subString) const;
286 
287  void computeMinMax();
288  void loadIndexTo3BandTile(const ossimIrect& clipRect,
289  ossim_uint32 aGdalBandStart = 1,
290  ossim_uint32 anOssimBandStart = 0);
291  template<class InputType, class OutputType>
292  void loadIndexTo3BandTileTemplate(InputType in,
293  OutputType out,
294  const ossimIrect& clipRect,
295  ossim_uint32 aGdalBandStart = 1,
296  ossim_uint32 anOssimBandStart = 0);
297 
298  bool isIndexTo3Band(int bandNumber = 1)const;
299  bool isIndexTo1Band(int bandNumber = 1)const;
300  ossim_uint32 getIndexBandOutputNumber(int bandNumber)const;
301  bool isIndexed(int aGdalBandNumber = 1)const;
302  void getMaxSize(ossim_uint32 resLevel,
303  int& maxX,
304  int& maxY)const;
305  bool isBlocked(int band)const;
306  void populateLut();
307 
312  GDALRasterBandH resolveRasterBand( ossim_uint32 resLevel,
313  int gdalBandIndex ) const;
314 
315  ossimRefPtr<ossimImageGeometry> getExternalImageGeometryFromXml() const;
316  void deleteRlevelCache();
317  void setRlevelCache();
319  void getDefaults();
320 
321  GDALDatasetH theDataset;
322  GDALDriverH theDriver;
323 
326  std::vector<ossim_uint8> theGdalBuffer;
328  mutable GDALDataType theGdtType;
329  mutable GDALDataType theOutputGdtType;
334  std::vector<ossimString> theSubDatasets;
338  vector<ossim_uint32> m_outputBandList;
340 
341  std::vector<ossimAppFixedTileCache::ossimAppFixedCacheId> m_rlevelBlockCache;
342 
343 TYPE_DATA
344 };
345 
346 #endif
virtual bool open()=0
Pure virtual open.
bool isBlocked(bool *blocked, int x, int y)
virtual bool isIndexedData() const
ossimRefPtr< ossimImageData > theSingleBandTile
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 ossim_uint32 getTileHeight() const
Returns the default processing tile height.
std::vector< ossimString > theSubDatasets
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
virtual void getDecimationFactor(ossim_uint32 resLevel, ossimDpt &result) const
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossimString getShortName() const
Definition: ossimObject.cpp:48
virtual ossim_uint32 getTileWidth() const
Returns the default processing tile width.
virtual ossim_uint32 getNumberOfDecimationLevels() const
This returns the total number of decimation levels.
virtual bool isOpen() const =0
Derived classes must implement this method to be concrete.
virtual double getMinPixelValue(ossim_uint32 band=0) const
Retuns the min pixel value.
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
vector< ossim_uint32 > m_outputBandList
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.
#define OSSIM_PLUGINS_DLL
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
virtual ossimRefPtr< ossimImageGeometry > getInternalImageGeometry() const
std::vector< ossim_uint8 > theGdalBuffer
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.
ossim_uint32 theEntryNumberToRender
std::vector< ossimAppFixedTileCache::ossimAppFixedCacheId > m_rlevelBlockCache
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...
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
virtual double getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
ossimRefPtr< ossimImageData > theTile
virtual ossim_uint32 getNumberOfInputBands() const =0
virtual bool setCurrentEntry(ossim_uint32 entryIdx)
virtual bool setOutputBandList(const std::vector< ossim_uint32 > &band_list)
If the image handler "isBandSeletor()" then the band selection of the output chip can be controlled...
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)