OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimPointCloudImageHandler.h
Go to the documentation of this file.
1 //**************************************************************************************************
2 //
3 // OSSIM (http://trac.osgeo.org/ossim/)
4 //
5 // License: MIT -- See LICENSE.txt file in the top level directory for more details.
6 //
7 //**************************************************************************************************
8 // $Id$
9 
10 #ifndef ossimPointCloudImageSource_HEADER
11 #define ossimPointCloudImageSource_HEADER
12 
14 #include <ossim/base/ossimString.h>
16 #include <ossim/base/ossimIrect.h>
18 #include <vector>
19 #include <mutex>
20 
21 class ossimImageData;
22 class ossimTiffOverviewTileSource;
23 class ossimPoinCloudHandler;
24 
36 {
37 public:
38  enum Components { INTENSITY=0, HIGHEST, LOWEST, RETURNS, RGB, NUM_COMPONENTS /*not a component*/ };
39 
41  virtual ~ossimPointCloudImageHandler();
42 
52  virtual bool open();
53 
59  virtual bool isOpen() const { return m_pch.valid(); }
60 
61 
65  virtual void close();
66 
73  ossim_uint32 resLevel=0) override;
74 
85  bool getTile(ossimImageData* result, ossim_uint32 resLevel=0) override;
86 
92  ossim_uint32 getNumberOfInputBands() const override;
93 
101  ossim_uint32 getNumberOfLines(ossim_uint32 resLevel = 0) const override;
102 
110  ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel = 0) const override;
111 
120  ossim_uint32 getImageTileWidth() const override;
121 
130  ossim_uint32 getImageTileHeight() const override;
131 
133  ossim_uint32 getTileWidth() const override;
134 
136  ossim_uint32 getTileHeight() const override;
137 
139  ossimScalarType getOutputScalarType() const override;
140 
149  void getEntryList(std::vector<ossim_uint32>& entryList) const override;
150 
151  void getEntryNames(std::vector<ossimString>& entryNames) const override;
152 
154  ossim_uint32 getCurrentEntry() const override;
155 
160  bool setCurrentEntry(ossim_uint32 entryIdx) override;
161 
163  ossimString getShortName() const override;
164 
166  ossimString getLongName() const override;
167 
174 
176  double getMinPixelValue(ossim_uint32 band) const override;
177 
179  double getMaxPixelValue(ossim_uint32 band) const override;
180 
182  double getNullPixelValue(ossim_uint32 band) const override;
183 
185  ossim_uint32 getNumberOfDecimationLevels() const override;
186 
187  bool saveState(ossimKeywordlist& kwl, const char* prefix) const override;
188 
189  bool loadState(const ossimKeywordlist& kwl, const char* prefix) override;
190 
191  void getValidImageVertices(std::vector<ossimIpt>& validVertices,
192  ossimVertexOrdering ordering,
193  ossim_uint32 resLevel) const override;
194 
204  void setProperty(ossimRefPtr<ossimProperty> property) override;
205  ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const override;
206 
210  bool setPointCloudHandler(ossimPointCloudHandler* pch);
211 
213  void getGSD(ossimDpt& gsd, ossim_uint32 resLevel) const;
214 
216  void setGSD( const ossim_float64& gsd );
217 
218 
219 protected:
220  class PcrBucket
221  {
222  public:
223  PcrBucket() : m_bucket(0), m_numSamples(0) {}
224  PcrBucket(const ossim_float32* init_value, ossim_uint32 numBands);
225  PcrBucket(const ossim_float32& R, const ossim_float32& G, const ossim_float32& B);
226 
227  explicit PcrBucket(const ossim_float32& init_value);
228 
229  ~PcrBucket();
232  };
233 
234  void initTile();
235 
236  void addSample(std::map<ossim_int32, PcrBucket*>& accumulator,
237  ossim_int32 index,
238  const ossimPointRecord* sample);
239 
240  void normalize(std::map<ossim_int32, PcrBucket*>& accumulator);
241 
242  ossim_uint32 componentToFieldCode() const;
243 
250  std::mutex m_mutex;
252  std::vector<ossimString> m_componentNames;
253 
254  TYPE_DATA
255 };
256 
257 #endif /* ossimPointCloudRenderer_HEADER */
virtual bool open()=0
Pure virtual open.
#define OSSIMDLLEXPORT
ossimRefPtr< ossimPointCloudHandler > m_pch
Represents serializable keyword/value map.
ossimRefPtr< ossimImageData > m_tile
virtual void getEntryNames(std::vector< ossimString > &entryNames) const
float ossim_float32
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.
Class used for rendering point cloud data into a raster tile.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
std::vector< ossimString > m_componentNames
virtual bool isOpen() const
is open method.
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 double getMinPixelValue(ossim_uint32 band=0) const
Retuns the min pixel value.
double ossim_float64
ossimVertexOrdering
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 void getEntryList(std::vector< ossim_uint32 > &entryList) 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...
virtual void getValidImageVertices(vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
ordering specifies how the vertices should be arranged.
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.
Base class for all point-cloud file readers.
virtual ossim_uint32 getNumberOfInputBands() const =0
virtual bool setCurrentEntry(ossim_uint32 entryIdx)
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.
int ossim_int32
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)