OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimLasReader.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // File: ossimLasReader.h
4 //
5 // License: MIT
6 //
7 // See LICENSE.txt file in the top level directory for more details.
8 //
9 // Author: David Burken
10 //
11 //----------------------------------------------------------------------------
12 // $Id$
13 #ifndef ossimLasReader_HEADER
14 #define ossimLasReader_HEADER 1
15 
17 #include <ossim/base/ossimDpt.h>
18 #include <ossim/base/ossimRefPtr.h>
23 #include <mutex>
24 
25 class ossimLasHdr;
27 
34 {
35 public:
36 
39 
41  virtual ~ossimLasReader();
42 
55  virtual bool open();
56 
64  virtual bool isOpen()const;
65 
69  virtual void close();
70 
77  ossim_uint32 resLevel=0);
78 
91  virtual bool getTile(ossimImageData* result, ossim_uint32 resLevel=0);
92 
100  virtual ossim_uint32 getNumberOfInputBands() const;
101 
112  virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel = 0) const;
113 
124  virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel = 0) const;
125 
136  virtual ossim_uint32 getImageTileWidth() const;
137 
148  virtual ossim_uint32 getImageTileHeight() const;
149 
151  virtual ossim_uint32 getTileWidth() const;
152 
154  virtual ossim_uint32 getTileHeight() const;
155 
158 
163  virtual void getEntryList(std::vector<ossim_uint32>& entryList) const;
164 
166  virtual ossim_uint32 getCurrentEntry() const;
167 
172  virtual bool setCurrentEntry(ossim_uint32 entryIdx);
173 
175  virtual ossimString getShortName() const;
176 
178  virtual ossimString getLongName() const;
179 
186 
188  virtual double getMinPixelValue(ossim_uint32 band=0) const;
189 
191  virtual double getMaxPixelValue(ossim_uint32 band=0) const;
192 
194  virtual double getNullPixelValue(ossim_uint32 band=0) const;
195 
200  virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=0)const;
201 
206  virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=0);
207 
217  virtual void setProperty(ossimRefPtr<ossimProperty> property);
218 
223  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const;
224 
229  virtual void getPropertyNames(std::vector<ossimString>& propertyNames) const;
230 
233 
234  virtual ossim_uint32 getNumberOfOutputBands() const;
235 
236 protected:
242  virtual void completeOpen();
243 
244 private:
245 
250  class Bucket
251  {
252  public:
253  Bucket(): a(0.0), c(0), red(0), green(0), blue(0) {}
254 
255  void add(const ossim_float64& point) { a += point; ++c; }
256  ossim_float64 getValue() const { return ( c ? a/c : -99999.0 ); }
257  void setRed(const ossim_uint16& value) { red = value; }
258  void setGreen(const ossim_uint16& value) { green = value; }
259  void setBlue(const ossim_uint16& value) { blue = value; }
260  void setIntensity(const ossim_uint16& value) { intensity = value; }
261  ossim_uint16 getRed() const { return red; }
262  ossim_uint16 getGreen() const { return green; }
263  ossim_uint16 getBlue() const { return blue; }
264  ossim_uint16 getIntensity() const { return intensity; }
265 
266  ossim_float64 a; // accumulation
267  ossim_uint32 c; // count
272  };
273 
274  bool init();
275 
276  void initValues(); // m_ul, m_lr, m_minZ
277  bool initProjection();
278  void initTile();
279  void initUnits(const ossimKeywordlist& geomKwl);
280  bool parseVarRecords();
281 
286 
288  void getScale(ossimDpt& scale, ossim_uint32 resLevel) const;
289 
291  void setGsd( const ossim_float64& gsd );
292 
293  void convertToMeters(ossim_float64& value) const;
294 
299 
310  std::mutex m_mutex;
311  bool m_scan; // Scan for bounds at open.
314 TYPE_DATA
315 };
316 
317 inline bool ossimLasReader::isOpen()const
318 {
319  return ( m_str.is_open() && m_hdr );
320 }
321 
323 {
324  if ( value )
325  {
327  value = m_unitConverter->getMeters();
328  }
329 }
330 
331 #endif /* #ifndef ossimLasReader_HEADER */
ossim_float64 m_minZ
virtual ossim_uint32 getNumberOfInputBands() const
Gets bands.
virtual void close()
Close method.
ossimRefPtr< ossimImageData > m_tile
ossimUnitConversionTool * m_unitConverter
ossimLasReader()
default constructor
std::ifstream m_str
ossimUnitType
Represents serializable keyword/value map.
void convertToMeters(ossim_float64 &value) const
std::basic_ifstream< char > ifstream
Class for char input file streams.
Definition: ossimIosFwd.h:44
virtual double getMinPixelValue(ossim_uint32 band=0) const
void setGsd(const ossim_float64 &gsd)
Sets m_gsd data member and projection if projection is set.
Container class to hold accumulated point data.
virtual ossimString getShortName() const
void setValue(double value, ossimUnitType unitType=OSSIM_METERS)
virtual ossim_uint32 getCurrentEntry() const
void setBlue(const ossim_uint16 &value)
virtual ossimString getLongName() const
void getScale(ossimDpt &scale, ossim_uint32 resLevel) const
Get the scale for resLevel.
virtual bool open()
open method.
virtual bool isOpen() const
is open method.
bool initFromExternalMetadata()
Looks for external FGDC text file to initialize projection from.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
Set propterty method.
void setRed(const ossim_uint16 &value)
virtual ossim_uint32 getTileWidth() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
Get propterty method.
void setIntensity(const ossim_uint16 &value)
ossim_uint16 getRed() const
unsigned short ossim_uint16
ossim_float64 m_maxZ
ossim_uint8 m_entry
ossimScalarType getOutputScalarType() const
double ossim_float64
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
Returns a pointer to a tile given an origin representing the upper left corner of the tile to grab fr...
virtual ossim_uint32 getImageTileWidth() const
Gets tile width.
virtual ossim_uint32 getTileHeight() const
ossimLasPointRecordInterface * getNewPointRecord() const
Returns a point of type.
#define TYPE_DATA
Definition: ossimRtti.h:339
ossim_uint16 getIntensity() const
virtual ossim_uint32 getImageTileHeight() const
Gets tile height.
void initUnits(const ossimKeywordlist &geomKwl)
unsigned int ossim_uint32
void setGreen(const ossim_uint16 &value)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual bool setCurrentEntry(ossim_uint32 entryIdx)
ossimUnitType m_units
ossim_uint16 getGreen() const
ossimScalarType
void add(const ossim_float64 &point)
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Gets lines.
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 void getPropertyNames(std::vector< ossimString > &propertyNames) const
Get propterty names.
ossim_uint16 getBlue() const
virtual ossim_uint32 getNumberOfDecimationLevels() const
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual void completeOpen()
Will complete the opening process.
virtual double getNullPixelValue(ossim_uint32 band=0) const
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Gets samples.
virtual double getMaxPixelValue(ossim_uint32 band=0) const
OSSIM Interface for LAS point record types.
ossim_float64 getValue() const
ossimLasHdr * m_hdr
virtual ~ossimLasReader()
virtual destructor
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
std::mutex m_mutex
unsigned char ossim_uint8
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
Gets entry list.
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
ossimRefPtr< ossimProjection > m_proj
OSSIM LAS LIDAR reader.