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

OSSIM LAS LIDAR reader. More...

#include <ossimLasReader.h>

Inheritance diagram for ossimLasReader:
ossimImageHandler ossimImageSource ossimSource ossimConnectableObject ossimErrorStatusInterface ossimObject ossimListenerManager ossimPropertyInterface ossimReferenced

Classes

class  Bucket
 Container class to hold accumulated point data. More...
 

Public Member Functions

 ossimLasReader ()
 default constructor More...
 
virtual ~ossimLasReader ()
 virtual destructor More...
 
virtual bool open ()
 open method. More...
 
virtual bool isOpen () const
 is open method. More...
 
virtual void close ()
 Close method. More...
 
virtual ossimRefPtr< ossimImageDatagetTile (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 from the image. More...
 
virtual bool getTile (ossimImageData *result, ossim_uint32 resLevel=0)
 Method to get a tile. More...
 
virtual ossim_uint32 getNumberOfInputBands () const
 Gets bands. More...
 
virtual ossim_uint32 getNumberOfLines (ossim_uint32 resLevel=0) const
 Gets lines. More...
 
virtual ossim_uint32 getNumberOfSamples (ossim_uint32 resLevel=0) const
 Gets samples. More...
 
virtual ossim_uint32 getImageTileWidth () const
 Gets tile width. More...
 
virtual ossim_uint32 getImageTileHeight () const
 Gets tile height. More...
 
virtual ossim_uint32 getTileWidth () const
 
virtual ossim_uint32 getTileHeight () const
 
ossimScalarType getOutputScalarType () const
 
virtual void getEntryList (std::vector< ossim_uint32 > &entryList) const
 Gets entry list. More...
 
virtual ossim_uint32 getCurrentEntry () const
 
virtual bool setCurrentEntry (ossim_uint32 entryIdx)
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimRefPtr< ossimImageGeometrygetImageGeometry ()
 Returns the image geometry object associated with this tile source or NULL if non defined. More...
 
virtual double getMinPixelValue (ossim_uint32 band=0) const
 
virtual double getMaxPixelValue (ossim_uint32 band=0) const
 
virtual double getNullPixelValue (ossim_uint32 band=0) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Method to save the state of an object to a keyword list. More...
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Method to the load (recreate) the state of an object from a keyword list. More...
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 Set propterty method. More...
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 Get propterty method. More...
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 Get propterty names. More...
 
virtual ossim_uint32 getNumberOfDecimationLevels () const
 
virtual ossim_uint32 getNumberOfOutputBands () const
 Returns the number of bands in a tile returned from this TileSource. More...
 
- Public Member Functions inherited from ossimImageHandler
 ossimImageHandler ()
 Constructor (default): More...
 
virtual ~ossimImageHandler ()
 Destructor: Derived classes should implement. More...
 
virtual void initialize ()
 initialize Does nothing in this class. More...
 
virtual bool openOverview ()
 Searches for an overview. More...
 
virtual bool openOverview (const ossimFilename &overview_file)
 Calls closeOverview(), then attempts to open the overview_file. More...
 
virtual void closeOverview ()
 If theOverview is initialized it will be deleted and set to NULL. More...
 
virtual const ossimImageHandlergetOverview () const
 
virtual bool hasOverviews () const
 
virtual ossimFilename createDefaultOverviewFilename () const
 
virtual ossimFilename createDefaultGeometryFilename () const
 
virtual ossimFilename createDefaultMetadataFilename () const
 
virtual ossimFilename createDefaultHistogramFilename () const
 
virtual ossimFilename createDefaultValidVerticesFilename () const
 
virtual bool writeValidImageVertices (const std::vector< ossimIpt > &vertices, const ossimFilename &file=ossimFilename(""))
 Outputs vertices to file and updates the internal vertex array variable "theValidImageVertices". More...
 
virtual bool openValidVertices (const ossimFilename &vertices_file)
 Opens the valid image vertices file and sets theValidImageVerticesFile variable. More...
 
virtual bool openValidVertices ()
 Creates vertices file name based on image, then tries to open. More...
 
virtual bool open (const ossimFilename &imageFile, ossim_uint32 entryIndex)
 Opens the image file. More...
 
virtual bool open (const ossimFilename &imageFile)
 
virtual bool open (std::shared_ptr< ossim::ImageHandlerState > state)
 
virtual bool buildHistogram (int numberOfRLevels=0, ossimHistogramMode mode=OSSIM_HISTO_MODE_NORMAL)
 Build a histogram for image file. More...
 
virtual bool buildAllHistograms (int numberOfRLevels=0, ossimHistogramMode mode=OSSIM_HISTO_MODE_NORMAL)
 Build a histograms for all image entries. More...
 
virtual bool buildOverview (ossimImageHandlerOverviewCompressionType compressionType=OSSIM_OVERVIEW_COMPRESSION_NONE, ossim_uint32 quality=75, ossimFilterResampler::ossimFilterResamplerType resampleType=ossimFilterResampler::ossimFilterResampler_BOX, bool includeFullResFlag=false)
 Will build over file for theImageFile. More...
 
virtual bool buildAllOverviews (ossimImageHandlerOverviewCompressionType compressionType=OSSIM_OVERVIEW_COMPRESSION_NONE, ossim_uint32 quality=75, ossimFilterResampler::ossimFilterResamplerType resampleType=ossimFilterResampler::ossimFilterResampler_BOX, bool includeFullResFlag=false)
 Will build over file for all image entries. More...
 
virtual bool buildOverview (const ossimFilename &filename, ossimImageHandlerOverviewCompressionType compressionType=OSSIM_OVERVIEW_COMPRESSION_NONE, ossim_uint32 quality=75, ossimFilterResampler::ossimFilterResamplerType resampleType=ossimFilterResampler::ossimFilterResampler_BOX, bool includeFullResFlag=false)
 Will build an over file for filename. More...
 
ossimRefPtr< ossimMultiResLevelHistogramgetImageHistogram () const
 Fetches the current entry image's histogram. More...
 
virtual void setImageGeometry (ossimImageGeometry *geom)
 Sets the image geometry object. More...
 
virtual void saveImageGeometry () const
 Saves the image geometry to a file that will be made based on the image file name. More...
 
virtual void saveImageGeometry (const ossimFilename &geometry_file) const
 Saves the image geometry to a file that will be made based on the image file name. More...
 
virtual ossimIrect getImageRectangle (ossim_uint32 resLevel=0) const
 Returns zero-based bounding rectangle of the image. More...
 
virtual ossimIrect getBoundingRect (ossim_uint32 resLevel=0) const
 Returns zero-based bounding rectangle of the image. More...
 
virtual void getDecimationFactor (ossim_uint32 resLevel, ossimDpt &result) const
 
virtual void getDecimationFactors (vector< ossimDpt > &decimations) const
 This returns all decimation for all levels. More...
 
virtual ossim_uint32 getNumberOfReducedResSets () const
 This method is obsolete. More...
 
virtual void setFilename (const ossimFilename &filename)
 Sets the filename. More...
 
virtual const ossimFilenamegetFilename () const
 Returns the filename. More...
 
virtual bool isValidRLevel (ossim_uint32 resLevel) const
 Determines if the passed in reslution level is valid. More...
 
bool canConnectMyInputTo (ossim_int32 inputIndex, const ossimConnectableObject *object) const
 Connection rule. More...
 
virtual void getValidImageVertices (vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
 ordering specifies how the vertices should be arranged. More...
 
virtual bool isBandSelector () const
 Indicates whether or not the image handler can control output band selection via the setOutputBandList method. More...
 
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. More...
 
virtual bool setOutputToInputBandList ()
 If the image handler "isBandSeletor()" then the band selection of the output are set to input or identity. More...
 
virtual bool isIdentityBandList (const std::vector< ossim_uint32 > &bandList) const
 Convenience method to see if band list is identity. More...
 
virtual bool isImageTiled () const
 Indicates whether or not the image is tiled internally. More...
 
virtual bool hasMetaData () const
 
virtual ossimRefPtr< ossimNBandLutDataObjectgetLut () const
 
virtual bool hasLut () const
 
virtual void loadMetaData ()
 There is an external file with an omd extension. More...
 
virtual void setMinPixelValue (ossim_uint32 band, const ossim_float64 &pix)
 convenience method to set min pixel value. More...
 
virtual void setMaxPixelValue (ossim_uint32 band, const ossim_float64 &pix)
 convenience method to set max pixel value. More...
 
virtual void setNullPixelValue (ossim_uint32 band, const ossim_float64 &pix)
 convenience method to set null pixel value. More...
 
virtual ossim_uint32 getNumberOfEntries () const
 
virtual void getEntryName (ossim_uint32 entryIdx, std::string &name) const
 Get the name of entry as a string. More...
 
virtual void getEntryNames (std::vector< ossimString > &entryNames) const
 
bool useEntryIndex () const
 Convenience method to determine if entry index should be used for support files, e.g. More...
 
ossimFilename getOverviewFile () const
 
ossimFilename getFilenameWithThisExtension (const ossimString &ext, bool set_e0_prefix=false) const
 Returns the image file with extension set using supplentary directory for dirname if set. More...
 
void getFilenameWithThisExt (const ossimString &ext, ossimFilename &f) const
 Returns the image file with extension set using supplentary directory for dirname if set. More...
 
ossim_uint32 getStartingResLevel () const
 
void setStartingResLevel (ossim_uint32 level)
 
bool getOpenOverviewFlag () const
 
void setOpenOverviewFlag (bool flag)
 Sets theOpenOverviewFlag. More...
 
virtual void setSupplementaryDirectory (const ossimFilename &dir)
 Sets the supplementary directory. More...
 
virtual const ossimFilenamegetSupplementaryDirectory () const
 Returns the supplementary directory. More...
 
const ossimStringgetImageID () const
 Fetches the image ID. More...
 
void setImageID (const ossimString &id)
 Sets the image ID in case it is externally generated. More...
 
ossimPixelType getPixelType () const
 Returns the raster pixel alignment type. More...
 
virtual bool getRgbBandList (std::vector< ossim_uint32 > &bandList) const
 Convenience method to get the zero based rgb output band list. More...
 
template<class T >
std::shared_ptr< T > getStateAs ()
 
template<class T >
std::shared_ptr< const T > getStateAs () const
 
std::shared_ptr< ossim::ImageHandlerState > getState ()
 
std::shared_ptr< const ossim::ImageHandlerState > getState () const
 
void setState (std::shared_ptr< ossim::ImageHandlerState > state)
 
- Public Member Functions inherited from ossimImageSource
 ossimImageSource (ossimObject *owner=0)
 
 ossimImageSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimImageSource ()
 
virtual ossimRefPtr< ossimImageDatagetTile (const ossimIpt &origin, ossim_uint32 resLevel=0)
 
virtual ossimObjectgetObject ()
 For RTTI support. More...
 
virtual const ossimObjectgetObject () const
 For RTTI support. More...
 
virtual void getDecimationFactors (std::vector< ossimDpt > &decimations) const
 Will return an array of all decimations for each resolution level. More...
 
virtual void getOutputBandList (std::vector< ossim_uint32 > &bandList) const
 Initializes bandList. More...
 
virtual void getBoundingRect (ossimIrect &rect, ossim_uint32 resLevel=0) const
 Gets the bounding rectangle of the source. More...
 
virtual void getValidImageVertices (std::vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
 ordering specifies how the vertices should be arranged. More...
 
virtual void setImageGeometry (const ossimImageGeometry *geom)
 Default implementation sets geometry of the first input to the geometry specified. More...
 
virtual bool isIndexedData () const
 
- Public Member Functions inherited from ossimSource
 ossimSource (ossimObject *owner=0)
 
 ossimSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimSource ()
 
virtual bool isSourceEnabled () const
 
virtual void enableSource ()
 
virtual void disableSource ()
 
virtual bool getEnableFlag () const
 
virtual void setEnableFlag (bool flag)
 
virtual bool isInitialized () const
 
virtual void setInitializedFlag (bool flag)
 
virtual std::ostream & print (std::ostream &out) const
 Outputs theErrorStatus as an ossimErrorCode and an ossimString. More...
 
- Public Member Functions inherited from ossimConnectableObject
 ossimConnectableObject (ossimObject *owner=0)
 Base constructor of this object. More...
 
 ossimConnectableObject (ossimObject *owner, ossim_int32 inputListSize, ossim_int32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimConnectableObject ()
 
void setId (const ossimId &id)
 All connectable objects will have id's. More...
 
const ossimIdgetId () const
 Will allow us to get this object's id. More...
 
const ossimObjectgetOwner () const
 Fetches the current owner, most likely a container but not limited to one. More...
 
virtual void changeOwner (ossimObject *owner)
 Permits changing the object's owner. More...
 
virtual void setDescription (const ossimString &description)
 
virtual ossimString getDescription () const
 
virtual bool isConnected (ossimConnectableObjectDirectionType direction=CONNECTABLE_DIRECTION_INPUT) const
 will check the direction specified to see if all slots are full. More...
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findConnectableObject(const ossimId &id))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(RTTItypeid typeId, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(const ossimString &obj, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findInputObjectOfType(const ossimString &className))
 
virtual ossim_int32 findInputIndex (const ossimConnectableObject *object)
 Return a valid index of the input list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findInputIndex (const ossimId &id)
 Return a valid index of the input list if the passed id is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimConnectableObject *object)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimId &id)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 getMyInputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual ossim_int32 getMyOutputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual bool canConnectMyOutputTo (ossim_int32 myOutputIndex, const ossimConnectableObject *object) const
 default implementation is to allow anyone to connect to us. More...
 
virtual void disconnect (ossimConnectableObject *object=0)
 Will disconnect the object passed in. More...
 
virtual void disconnect (const ossimId &id)
 Will disconnect the object passed in. More...
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyInput (ossim_int32 inputIndex, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given input index and generate a connection event. More...
 
virtual void disconnectMyInput (ossimConnectableObject *input, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Finds the index of the passed in input and calls disconnectMyInput(inputIndex, disconnectOutputFlag, createEventFlag);. More...
 
virtual void disconnectMyInputs (ConnectableObjectList &inputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyOutput (ossim_int32 outputIndex, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given output index and generate a connection event. More...
 
virtual void disconnectMyOutput (ossimConnectableObject *output, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the output object. More...
 
virtual void disconnectMyOutputs (ConnectableObjectList &outputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual void disconnectAllInputs ()
 Will disconnect all of the input objects. More...
 
virtual void disconnectAllOutputs ()
 Will disconnect all of the output objects. More...
 
virtual ossim_int32 connectMyInputTo (ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will try to connect this objects input to the passed in object. More...
 
virtual ossim_int32 connectMyInputTo (ossim_int32 inputIndex, ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will connect the specified input to the passed in object. More...
 
virtual bool connectMyInputTo (ConnectableObjectList &inputList, bool makeOutputConnection=true, bool createEventFlag=true)
 
virtual ossim_int32 connectMyOutputTo (ossimConnectableObject *outputObject, bool makeInputConnection=true, bool createEventFlag=true)
 Will try to connect this objects output to the passed in object. More...
 
virtual bool connectMyOutputTo (ConnectableObjectList &outputList, bool makeInputConnection=true, bool createEventFlag=true)
 
virtual bool connectInputList (ConnectableObjectList &inputList)
 Will disconnect itself from all inputs and reset to the passed in input list. More...
 
virtual bool connectOutputList (ConnectableObjectList &outputList)
 Will disconnect itself from all outputs and reset to the passed in output list. More...
 
virtual ossim_uint32 getNumberOfInputs () const
 Returns the number of input objects. More...
 
virtual ossim_uint32 getNumberOfOutputs () const
 Return the number of output objects. More...
 
ossimConnectableObjectgetInput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetInput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
ossimConnectableObjectgetOutput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetOutput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
virtual void setNumberOfInputs (ossim_int32 numberOfInputs)
 Will set the number of inputs. More...
 
virtual bool getInputListIsFixedFlag () const
 
virtual bool getOutputListIsFixedFlag () const
 
virtual void setNumberOfOutputs (ossim_int32 numberOfInputs)
 Will set the number of outputs. More...
 
const ConnectableObjectListgetInputList () const
 
const ConnectableObjectListgetOutputList () const
 
ConnectableObjectListgetInputList ()
 
ConnectableObjectListgetOutputList ()
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const RTTItypeid &typeInfo, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const ossimString &className, bool recurse=true))
 
virtual void propagateEventToOutputs (ossimEvent &event)
 
virtual void propagateEventToInputs (ossimEvent &event)
 
virtual void setProperty (const ossimString &name, const ossimString &value)
 
virtual ossim_uint32 saveStateOfAllInputs (ossimKeywordlist &kwl, bool saveThisStateFlag=true, ossim_uint32 objectIndex=1, const char *prefix=0) const
 Save the state of all inputs to a keyword list. More...
 
virtual bool fillContainer (ossimConnectableContainer &container)
 Inserts this object and all of its children and inputs into the container provided. More...
 
bool moveInputUp (const ossimId &id)
 Moves the input connection matching id up one in the connection list. More...
 
bool moveInputDown (const ossimId &id)
 Moves the input connection matching id down one in the connection list. More...
 
bool moveInputToTop (const ossimId &id)
 Moves the input connection matching id to the top of the connection list. More...
 
bool moveInputToBottom (const ossimId &id)
 Moves the input connection matching id to the bottom of the connection list. More...
 
virtual void accept (ossimVisitor &visitor)
 We will add a visitor interface for all connectable objects. More...
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
- 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
 
- Public Member Functions inherited from ossimListenerManager
 ossimListenerManager ()
 
virtual ~ossimListenerManager ()
 
virtual void fireEvent (ossimEvent &event)
 
virtual bool addListener (ossimListener *listener)
 
virtual bool removeListener (ossimListener *listener)
 
virtual bool findListener (ossimListener *listener)
 
- Public Member Functions inherited from ossimPropertyInterface
 ossimPropertyInterface ()
 
virtual ~ossimPropertyInterface ()
 
virtual ossimString getPropertyValueAsString (const ossimString &name) const
 
void getPropertyList (std::vector< ossimRefPtr< ossimProperty > > &propertyList) const
 
void setProperties (std::vector< ossimRefPtr< ossimProperty > > &propertyList)
 
- Public Member Functions inherited from ossimErrorStatusInterface
 ossimErrorStatusInterface ()
 
virtual ~ossimErrorStatusInterface ()
 
virtual ossimErrorCode getErrorStatus () const
 
virtual ossimString getErrorStatusString () const
 
virtual void setErrorStatus (ossimErrorCode error_status) const
 
virtual void setErrorStatus () const
 
virtual void clearErrorStatus () const
 
bool hasError () const
 

Protected Member Functions

virtual void completeOpen ()
 Will complete the opening process. More...
 
- Protected Member Functions inherited from ossimImageHandler
virtual ossimRefPtr< ossimImageGeometrygetExternalImageGeometry () const
 Returns the image geometry object associated with this tile source or NULL if non defined. More...
 
virtual ossimRefPtr< ossimImageGeometrygetInternalImageGeometry () const
 
virtual bool getOverviewTile (ossim_uint32 resLevel, ossimImageData *result)
 Method to get an overview tile. More...
 
bool initVertices (const char *file)
 Opens file and attempts to initialize the valid image vertices. More...
 
void initImageParameters (ossimImageGeometry *geom) const
 Convenience method to set things needed in the image geometry from the image handler. More...
 
virtual void establishDecimationFactors ()
 Virtual method determines the decimation factors at each resolution level. More...
 
virtual bool setOutputBandList (const std::vector< ossim_uint32 > &inBandList, std::vector< ossim_uint32 > &outBandList)
 Convenience method to set output band list. More...
 
void getFilenameWithNoExtension (ossimFilename &f) const
 Get filename with no extension, using supplentary directory for dirname if set. More...
 
- Protected Member Functions inherited from ossimImageSource
 ossimImageSource (const ossimImageSource &rhs)
 
const ossimImageSourceoperator= (const ossimImageSource &)
 
- Protected Member Functions inherited from ossimSource
 ossimSource (const ossimSource &rhs)
 
const ossimSourceoperator= (const ossimSource &rhs)
 
- Protected Member Functions inherited from ossimConnectableObject
ossimConnectableObjectfindObjectOfType (ConnectableObjectList *connectableList, ossimVisitor &visitor)
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimListenerManager
 ossimListenerManager (const ossimListenerManager &rhs)
 

Private Member Functions

bool init ()
 
void initValues ()
 
bool initProjection ()
 
void initTile ()
 
void initUnits (const ossimKeywordlist &geomKwl)
 
bool parseVarRecords ()
 
bool initFromExternalMetadata ()
 Looks for external FGDC text file to initialize projection from. More...
 
void getScale (ossimDpt &scale, ossim_uint32 resLevel) const
 Get the scale for resLevel. More...
 
void setGsd (const ossim_float64 &gsd)
 Sets m_gsd data member and projection if projection is set. More...
 
void convertToMeters (ossim_float64 &value) const
 
ossimLasPointRecordInterfacegetNewPointRecord () const
 Returns a point of type. More...
 

Private Attributes

std::ifstream m_str
 
ossimLasHdrm_hdr
 
ossimRefPtr< ossimProjectionm_proj
 
ossimDpt m_ul
 
ossimDpt m_lr
 
ossim_float64 m_maxZ
 
ossim_float64 m_minZ
 
ossimDpt m_gsd
 
ossimRefPtr< ossimImageDatam_tile
 
ossim_uint8 m_entry
 
std::mutex m_mutex
 
bool m_scan
 
ossimUnitType m_units
 
ossimUnitConversionToolm_unitConverter
 

Additional Inherited Members

- Public Types inherited from ossimImageHandler
enum  ossimImageHandlerOverviewCompressionType {
  OSSIM_OVERVIEW_COMPRESSION_NONE = 0, OSSIM_OVERVIEW_COMPRESSION_JPEG, OSSIM_OVERVIEW_COMPRESSION_LZW, OSSIM_OVERVIEW_COMPRESSION_DEFLATE,
  OSSIM_OVERVIEW_COMPRESSION_PACKBITS
}
 
- Public Types inherited from ossimConnectableObject
enum  ossimConnectableObjectDirectionType { CONNECTABLE_DIRECTION_NONE = 0, CONNECTABLE_DIRECTION_INPUT = 1, CONNECTABLE_DIRECTION_OUTPUT = 2 }
 
typedef std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
 
- Protected Attributes inherited from ossimImageHandler
ossimFilename theImageFile
 
ossimFilename theOverviewFile
 
ossimFilename theSupplementaryDirectory
 
ossimRefPtr< ossimImageHandlertheOverview
 
vector< ossimIpttheValidImageVertices
 
ossimImageMetaData theMetaData
 
ossimRefPtr< ossimImageGeometrytheGeometry
 
ossimRefPtr< ossimNBandLutDataObjecttheLut
 
std::vector< ossimDpttheDecimationFactors
 
ossimString theImageID
 
ossim_uint32 theStartingResLevel
 theStartingResLevel If set to something other than zero(default) this is indicative that the reader is an overview. More...
 
bool theOpenOverviewFlag
 If true opening of overviews will be attempted. More...
 
ossimPixelType thePixelType
 
std::shared_ptr< ossim::ImageHandlerState > m_state
 
- Protected Attributes inherited from ossimSource
bool theEnableFlag
 
bool theInitializedFlag
 
- Protected Attributes inherited from ossimConnectableObject
ossimId theId
 
ossimString theDescription
 
ossimObjecttheOwner
 
bool theInputListIsFixedFlag
 Indicates whether the theInputObjectList is fixed. More...
 
bool theOutputListIsFixedFlag
 Indicates whether the theOutputObjectList is fixed. More...
 
ConnectableObjectList theInputObjectList
 Holds a list of input objects. More...
 
ConnectableObjectList theOutputObjectList
 Holds a list of output objects. More...
 
- Protected Attributes inherited from ossimListenerManager
std::list< ossimListener * > theListenerList
 
bool theEnabledFlag
 
std::list< ossimListener * > theDelayedAdd
 
std::list< ossimListener * > theDelayedRemove
 
bool theFireEventFlag
 
- Protected Attributes inherited from ossimErrorStatusInterface
ossimErrorCode theErrorStatus
 

Detailed Description

OSSIM LAS LIDAR reader.

Definition at line 33 of file ossimLasReader.h.

Constructor & Destructor Documentation

◆ ossimLasReader()

ossimLasReader::ossimLasReader ( )

default constructor

Definition at line 54 of file ossimLasReader.cpp.

References m_gsd, and ossimDpt::makeNan().

56  m_str(),
57  m_hdr(0),
58  m_proj(0),
59  m_ul(),
60  m_lr(),
61  m_maxZ(0.0),
62  m_minZ(0.0),
63  m_gsd(),
64  m_tile(0),
65  m_entry(0),
66  m_mutex(),
67  m_scan(false), // ???
69  m_unitConverter(0)
70 {
71  //---
72  // Nan out as can be set in several places, i.e. setProperty,
73  // loadState and initProjection.
74  //---
75  m_gsd.makeNan();
76 }
ossim_float64 m_minZ
ossimRefPtr< ossimImageData > m_tile
ossimUnitConversionTool * m_unitConverter
std::ifstream m_str
ossim_float64 m_maxZ
ossim_uint8 m_entry
ossimUnitType m_units
ossimImageHandler()
Constructor (default):
ossimLasHdr * m_hdr
std::mutex m_mutex
void makeNan()
Definition: ossimDpt.h:65
ossimRefPtr< ossimProjection > m_proj

◆ ~ossimLasReader()

ossimLasReader::~ossimLasReader ( )
virtual

virtual destructor

Definition at line 78 of file ossimLasReader.cpp.

References close().

79 {
80  close();
81 }
virtual void close()
Close method.

Member Function Documentation

◆ close()

void ossimLasReader::close ( )
virtual

Close method.

Reimplemented from ossimImageHandler.

Definition at line 154 of file ossimLasReader.cpp.

References ossimImageHandler::close(), isOpen(), m_entry, m_hdr, m_proj, m_str, and m_tile.

Referenced by ~ossimLasReader().

155 {
156  if ( isOpen() )
157  {
158  m_str.close();
159  delete m_hdr;
160  m_hdr = 0;
161  m_entry = 0;
162  m_tile = 0;
163  m_proj = 0;
165  }
166 }
ossimRefPtr< ossimImageData > m_tile
std::ifstream m_str
virtual bool isOpen() const
is open method.
ossim_uint8 m_entry
virtual void close()
Deletes the overview and clears the valid image vertices.
ossimLasHdr * m_hdr
ossimRefPtr< ossimProjection > m_proj

◆ completeOpen()

void ossimLasReader::completeOpen ( )
protectedvirtual

Will complete the opening process.

Overrides ossimImageHandler::completeOpen() as we do not ever have overviews.

Reimplemented from ossimImageHandler.

Definition at line 149 of file ossimLasReader.cpp.

References ossimImageHandler::establishDecimationFactors().

150 {
152 }
virtual void establishDecimationFactors()
Virtual method determines the decimation factors at each resolution level.

◆ convertToMeters()

void ossimLasReader::convertToMeters ( ossim_float64 value) const
inlineprivate

Definition at line 322 of file ossimLasReader.h.

References ossimUnitConversionTool::getMeters(), m_unitConverter, m_units, and ossimUnitConversionTool::setValue().

Referenced by getTile(), and initValues().

323 {
324  if ( value )
325  {
327  value = m_unitConverter->getMeters();
328  }
329 }
ossimUnitConversionTool * m_unitConverter
void setValue(double value, ossimUnitType unitType=OSSIM_METERS)
ossimUnitType m_units

◆ getCurrentEntry()

ossim_uint32 ossimLasReader::getCurrentEntry ( ) const
virtual
Returns
The current entry number.

Reimplemented from ossimImageHandler.

Definition at line 432 of file ossimLasReader.cpp.

References m_entry.

433 {
434  return static_cast<ossim_uint32>(m_entry);
435 }
ossim_uint8 m_entry
unsigned int ossim_uint32

◆ getEntryList()

void ossimLasReader::getEntryList ( std::vector< ossim_uint32 > &  entryList) const
virtual

Gets entry list.

Parameters
entryListThis is the list to initialize with entry indexes.

Reimplemented from ossimImageHandler.

Definition at line 414 of file ossimLasReader.cpp.

References isOpen().

Referenced by setCurrentEntry().

415 {
416  if ( isOpen() )
417  {
418  entryList.push_back(0);
419  entryList.push_back(1);
420  entryList.push_back(2);
421  //for ( ossim_uint32 entry = 0; entry < 15; ++entry )
422  //{
423  // if ( m_hdr->getNumberOfPoints(entry) ) entryList.push_back(entry);
424  //}
425  }
426  else
427  {
428  entryList.clear();
429  }
430 }
virtual bool isOpen() const
is open method.

◆ getImageGeometry()

ossimRefPtr< ossimImageGeometry > ossimLasReader::getImageGeometry ( )
virtual

Returns the image geometry object associated with this tile source or NULL if non defined.

The geometry contains full-to-local image transform as well as projection (image-to-world).

Reimplemented from ossimImageHandler.

Definition at line 469 of file ossimLasReader.cpp.

References ossimImageGeometryRegistry::extendGeometry(), ossimRefPtr< T >::get(), ossimMapProjection::getDatum(), ossimImageGeometry::getDegreesPerPixel(), ossimImageHandler::getExternalImageGeometry(), ossimImageGeometry::getMetersPerPixel(), getNumberOfLines(), getNumberOfSamples(), ossimImageGeometry::getProjection(), ossimImageHandler::initImageParameters(), initValues(), ossimImageGeometryRegistry::instance(), ossimMapProjection::isGeographic(), m_gsd, m_proj, m_ul, m_units, OSSIM_DEGREES, OSSIM_METERS, ossimImageGeometry::setImageSize(), ossimImageGeometry::setProjection(), ossimMapProjection::setUlTiePoints(), ossimImageHandler::theGeometry, true, ossimRefPtr< T >::valid(), ossimIpt::x, ossimDpt::x, ossimIpt::y, and ossimDpt::y.

Referenced by init().

470 {
471  if ( !theGeometry )
472  {
473  // Check for external geom:
475  if ( theGeometry.valid() == true )
476  {
477  // Picked up an external geometry file(dot.geom).
479 
481  if ( proj.valid() == true )
482  {
483  // Set the units:
484  if ( proj->isGeographic() )
485  {
487  }
488  else
489  {
490  // Currently hard coding to meters. May need to add property to override this.
492  }
493 
494  // Call initValues to set the tie point / bounds:
495  initValues();
496 
497  // Set the tie and gsd:
498  if ( proj->isGeographic() )
499  {
501  ossimGpt gpt(m_ul.y, m_ul.x, 0.0, proj->getDatum() );
502  proj->setUlTiePoints( gpt );
504  }
505  else
506  {
507  // Currently hard coding to meters. May need to add property to override this.
509  proj->setUlTiePoints(m_ul);
511  }
512 
513  ossimIpt imgSize;
514  imgSize.x = (ossim_int32)getNumberOfSamples(0);
515  imgSize.y = (ossim_int32)getNumberOfLines(0);
516 
517  theGeometry->setImageSize( imgSize );
518  }
519  }
520 
521  if ( !theGeometry )
522  {
524  if ( m_proj.valid() )
525  {
527  }
528  else
529  {
530  //---
531  // WARNING:
532  // Must create/set theGeometry at this point or the next call to
533  // ossimImageGeometryRegistry::extendGeometry will put us in an infinite loop
534  // as it does a recursive call back to ossimImageHandler::getImageGeometry().
535  //---
536 
537  // Try factories for projection.
539  }
540  }
541 
542  // Set image things the geometry object should know about.
544  }
545 
546  return theGeometry;
547 }
static ossimImageGeometryRegistry * instance()
ossimRefPtr< ossimImageGeometry > theGeometry
void setProjection(ossimProjection *projection)
Sets the projection to be used for local-to-world coordinate transformation.
bool valid() const
Definition: ossimRefPtr.h:75
double y
Definition: ossimDpt.h:165
virtual bool isGeographic() const
ossimDpt getDegreesPerPixel() const
Returns the resolution of this image in degrees/pixel.
void setImageSize(const ossimIpt &size)
virtual bool extendGeometry(ossimImageHandler *handler) const
virtual const ossimDatum * getDatum() const
ossimDpt getMetersPerPixel() const
Returns the GSD associated with this image in the active projection.
ossimUnitType m_units
void initImageParameters(ossimImageGeometry *geom) const
Convenience method to set things needed in the image geometry from the image handler.
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Gets lines.
virtual ossimRefPtr< ossimImageGeometry > getExternalImageGeometry() const
Returns the image geometry object associated with this tile source or NULL if non defined...
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
ossim_int32 y
Definition: ossimIpt.h:142
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Gets samples.
double x
Definition: ossimDpt.h:164
virtual void setUlTiePoints(const ossimGpt &gpt)
ossim_int32 x
Definition: ossimIpt.h:141
int ossim_int32
ossimRefPtr< ossimProjection > m_proj

◆ getImageTileHeight()

ossim_uint32 ossimLasReader::getImageTileHeight ( ) const
virtual

Gets tile height.

Satisfies ossimImageHandler::getImageTileHeight pure virtual.

Returns
The tile width of the image or 0 if the image is not tiled. Note: this is not the same as the ossimImageSource::getTileWidth which returns the output tile width which can be different than the internal image tile width on disk.

Implements ossimImageHandler.

Definition at line 387 of file ossimLasReader.cpp.

388 {
389  return 0;
390 }

◆ getImageTileWidth()

ossim_uint32 ossimLasReader::getImageTileWidth ( ) const
virtual

Gets tile width.

Satisfies ossimImageHandler::getImageTileWidth pure virtual.

Returns
The tile width of the image or 0 if the image is not tiled. Note: this is not the same as the ossimImageSource::getTileWidth which returns the output tile width which can be different than the internal image tile width on disk.

Implements ossimImageHandler.

Definition at line 382 of file ossimLasReader.cpp.

383 {
384  return 0;
385 }

◆ getLongName()

ossimString ossimLasReader::getLongName ( ) const
virtual
Returns
"ossim las (liblas) reader"

Reimplemented from ossimObject.

Definition at line 464 of file ossimLasReader.cpp.

465 {
466  return ossimString("ossim las reader");
467 }

◆ getMaxPixelValue()

double ossimLasReader::getMaxPixelValue ( ossim_uint32  band = 0) const
virtual
Returns
Min pixel value.

Reimplemented from ossimImageHandler.

Definition at line 554 of file ossimLasReader.cpp.

References m_maxZ.

Referenced by initTile().

555 {
556  return m_maxZ;
557 }
ossim_float64 m_maxZ

◆ getMinPixelValue()

double ossimLasReader::getMinPixelValue ( ossim_uint32  band = 0) const
virtual
Returns
Min pixel value.

Reimplemented from ossimImageHandler.

Definition at line 549 of file ossimLasReader.cpp.

References m_minZ.

Referenced by initTile().

550 {
551  return m_minZ;
552 }
ossim_float64 m_minZ

◆ getNewPointRecord()

ossimLasPointRecordInterface * ossimLasReader::getNewPointRecord ( ) const
private

Returns a point of type.

Definition at line 1224 of file ossimLasReader.cpp.

References ossimLasHdr::getPointDataFormatId(), and m_hdr.

Referenced by getTile(), and initValues().

1225 {
1226  ossimLasPointRecordInterface* result = 0;
1227 
1228  switch(m_hdr->getPointDataFormatId())
1229  {
1230  case 0:
1231  {
1232  result = new ossimLasPointRecord0();
1233  break;
1234  }
1235  case 1:
1236  {
1237  result = new ossimLasPointRecord1();
1238  break;
1239  }
1240  case 2:
1241  {
1242  result = new ossimLasPointRecord2();
1243  break;
1244  }
1245  case 3:
1246  {
1247  result = new ossimLasPointRecord3();
1248  break;
1249  }
1250  case 4:
1251  {
1252  result = new ossimLasPointRecord4();
1253  break;
1254  }
1255  default:
1256  {
1257  break;
1258  }
1259  }
1260 
1261  return result;
1262 }
Container class for LAS point record type 1.
Container class for LAS point record type 1.
Container class for LAS point record type 4.
ossim_uint8 getPointDataFormatId() const
Container class for LAS point record type 3.
OSSIM Interface for LAS point record types.
ossimLasHdr * m_hdr
Container class for LAS point record type 2.

◆ getNullPixelValue()

double ossimLasReader::getNullPixelValue ( ossim_uint32  band = 0) const
virtual
Returns
Min pixel value.

Reimplemented from ossimImageHandler.

Definition at line 559 of file ossimLasReader.cpp.

Referenced by initTile().

560 {
561  return -99999.0;
562 }

◆ getNumberOfDecimationLevels()

ossim_uint32 ossimLasReader::getNumberOfDecimationLevels ( ) const
virtual
Returns
The total number of decimation levels.

Reimplemented from ossimImageHandler.

Definition at line 564 of file ossimLasReader.cpp.

References getNumberOfLines(), and getNumberOfSamples().

565 {
566  // Can support any number of rlevels.
567  ossim_uint32 result = 1;
568  const ossim_uint32 STOP_DIMENSION = 16;
569  ossim_uint32 largestImageDimension = getNumberOfSamples(0) > getNumberOfLines(0) ?
571  while(largestImageDimension > STOP_DIMENSION)
572  {
573  largestImageDimension /= 2;
574  ++result;
575  }
576  return result;
577 }
unsigned int ossim_uint32
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Gets lines.
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Gets samples.

◆ getNumberOfInputBands()

ossim_uint32 ossimLasReader::getNumberOfInputBands ( ) const
virtual

Gets bands.

Satisfies ossimImageSource::getNumberOfInputBands pure virtual.

Number of bands.

Implements ossimImageSource.

Definition at line 349 of file ossimLasReader.cpp.

350 {
351  return 1; // tmp
352 }

◆ getNumberOfLines()

ossim_uint32 ossimLasReader::getNumberOfLines ( ossim_uint32  resLevel = 0) const
virtual

Gets lines.

Satisfies ossimImageHandler::getNumberOfLines pure virtual.

Parameters
resLevelReduced resolution level to return lines of. Default = 0
Returns
The number of lines for specified reduced resolution level.

Implements ossimImageHandler.

Definition at line 360 of file ossimLasReader.cpp.

References isOpen(), m_gsd, m_lr, m_ul, and ossimDpt::y.

Referenced by getImageGeometry(), and getNumberOfDecimationLevels().

361 {
362  ossim_uint32 result = 0;
363  if ( isOpen() )
364  {
365  result = static_cast<ossim_uint32>(ceil((m_ul.y - m_lr.y) / m_gsd.y));
366  if (resLevel) result = (result>>resLevel);
367  }
368  return result;
369 }
double y
Definition: ossimDpt.h:165
virtual bool isOpen() const
is open method.
unsigned int ossim_uint32

◆ getNumberOfOutputBands()

ossim_uint32 ossimLasReader::getNumberOfOutputBands ( ) const
virtual

Returns the number of bands in a tile returned from this TileSource.

Reimplemented from ossimImageSource.

Definition at line 354 of file ossimLasReader.cpp.

References m_entry.

Referenced by getTile(), and initTile().

355 {
356  if(m_entry == 1) return 3;
357  return 1;
358 }
ossim_uint8 m_entry

◆ getNumberOfSamples()

ossim_uint32 ossimLasReader::getNumberOfSamples ( ossim_uint32  resLevel = 0) const
virtual

Gets samples.

Satisfies ossimImageHandler::getNumberOfSamples

Parameters
resLevelReduced resolution level to return samples of. Default = 0
Returns
The number of samples for specified reduced resolution level.

Implements ossimImageHandler.

Definition at line 371 of file ossimLasReader.cpp.

References isOpen(), m_gsd, m_lr, m_ul, and ossimDpt::x.

Referenced by getImageGeometry(), and getNumberOfDecimationLevels().

372 {
373  ossim_uint32 result = 0;
374  if ( isOpen() )
375  {
376  result = static_cast<ossim_uint32>(ceil((m_lr.x - m_ul.x) / m_gsd.x));
377  if (resLevel) result = (result>>resLevel);
378  }
379  return result;
380 }
virtual bool isOpen() const
is open method.
unsigned int ossim_uint32
double x
Definition: ossimDpt.h:164

◆ getOutputScalarType()

ossimScalarType ossimLasReader::getOutputScalarType ( ) const
virtual
Returns
The output pixel type of the tile source.

Reimplemented from ossimImageSource.

Definition at line 406 of file ossimLasReader.cpp.

References m_entry, OSSIM_FLOAT32, and OSSIM_UINT16.

Referenced by initTile().

407 {
408  //return OSSIM_FLOAT32;
410  if(m_entry == 1 || m_entry == 2) stype = OSSIM_UINT16;
411  return stype;
412 }
16 bit unsigned integer
32 bit floating point
ossim_uint8 m_entry
ossimScalarType

◆ getProperty()

ossimRefPtr< ossimProperty > ossimLasReader::getProperty ( const ossimString name) const
virtual

Get propterty method.

Overrides ossimImageHandler::getProperty.

Parameters
nameProperty name to get.

Reimplemented from ossimImageHandler.

Definition at line 638 of file ossimLasReader.cpp.

639 {
641  if ( name == GSD_KW )
642  {
644  prop = new ossimStringProperty(name, value);
645  }
646  else if ( name == SCAN_KW )
647  {
648  prop = new ossimBooleanProperty(name, m_scan);
649  }
650  else
651  {
652  prop = ossimImageHandler::getProperty(name);
653  }
654  return prop;
655 }
static ossimString toString(bool aValue)
Numeric to string methods.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
double x
Definition: ossimDpt.h:164

◆ getPropertyNames()

void ossimLasReader::getPropertyNames ( std::vector< ossimString > &  propertyNames) const
virtual

Get propterty names.

Overrides ossimImageHandler::getPropertyNames.

Parameters
propertyNamesArray to initialize.

Reimplemented from ossimImageHandler.

Definition at line 657 of file ossimLasReader.cpp.

658 {
659  propertyNames.push_back( ossimString(GSD_KW) );
660  propertyNames.push_back( ossimString(SCAN_KW) );
662 }
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const

◆ getScale()

void ossimLasReader::getScale ( ossimDpt scale,
ossim_uint32  resLevel 
) const
private

Get the scale for resLevel.

Definition at line 1264 of file ossimLasReader.cpp.

References m_gsd, ossimDpt::x, and ossimDpt::y.

Referenced by getTile().

1265 {
1266  // std::pow(2.0, 0) returns 1.
1267  ossim_float64 d = std::pow(2.0, static_cast<double>(resLevel));
1268  scale.x = m_gsd.x * d;
1269  scale.y = m_gsd.y * d;
1270 }
double y
Definition: ossimDpt.h:165
double ossim_float64
double x
Definition: ossimDpt.h:164

◆ getShortName()

ossimString ossimLasReader::getShortName ( ) const
virtual
Returns
"las"

Reimplemented from ossimObject.

Definition at line 459 of file ossimLasReader.cpp.

460 {
461  return ossimString("las");
462 }

◆ getTile() [1/2]

ossimRefPtr< ossimImageData > ossimLasReader::getTile ( const ossimIrect rect,
ossim_uint32  resLevel = 0 
)
virtual

Returns a pointer to a tile given an origin representing the upper left corner of the tile to grab from the image.

Satisfies pure virtual from TileSource class.

Reimplemented from ossimImageSource.

Definition at line 168 of file ossimLasReader.cpp.

References ossimRefPtr< T >::get(), ossimDataObject::getDataObjectStatus(), initTile(), m_tile, ossimImageData::makeBlank(), OSSIM_NULL, ossimImageData::setImageRectangle(), and ossimRefPtr< T >::valid().

170 {
171  if ( m_tile.valid() == false )
172  {
173  initTile(); // First time through.
174  }
175 
176  if ( m_tile.valid() )
177  {
178  // Image rectangle must be set prior to calling getTile.
179  m_tile->setImageRectangle(tile_rect);
180 
181  if ( getTile( m_tile.get(), resLevel ) == false )
182  {
184  {
185  m_tile->makeBlank();
186  }
187  }
188  }
189 
190  return m_tile;
191 }
ossimRefPtr< ossimImageData > m_tile
virtual void setImageRectangle(const ossimIrect &rect)
bool valid() const
Definition: ossimRefPtr.h:75
virtual ossimDataObjectStatus getDataObjectStatus() const
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 void makeBlank()
Initializes data to null pixel values.

◆ getTile() [2/2]

bool ossimLasReader::getTile ( ossimImageData result,
ossim_uint32  resLevel = 0 
)
virtual

Method to get a tile.

Parameters
resultThe tile to stuff. Note The requested rectangle in full image space and bands should be set in the result tile prior to passing. It will be an error if: result.getNumberOfBands() != this->getNumberOfOutputBands()
Returns
true on success false on error. If return is false, result is undefined so caller should handle appropriately with makeBlank or whatever.

Reimplemented from ossimImageSource.

Definition at line 193 of file ossimLasReader.cpp.

References ossimIrect::area(), convertToMeters(), ossimLasPointRecordInterface::getBlue(), ossimDataObject::getDataObjectStatus(), ossimImageData::getFloatBuf(), ossimLasPointRecordInterface::getGreen(), ossimImageData::getImageRectangle(), ossimLasPointRecordInterface::getIntensity(), getNewPointRecord(), getNumberOfOutputBands(), ossimLasHdr::getOffsetToPointData(), ossimLasHdr::getOffsetX(), ossimLasHdr::getOffsetY(), ossimLasHdr::getOffsetZ(), ossimLasPointRecordInterface::getRed(), ossimRectilinearDataObject::getScalarType(), getScale(), ossimLasHdr::getScaleFactorX(), ossimLasHdr::getScaleFactorY(), ossimLasHdr::getScaleFactorZ(), ossimImageData::getUshortBuf(), ossimLasPointRecordInterface::getX(), ossimLasPointRecordInterface::getY(), ossimLasPointRecordInterface::getZ(), ossimDpt::hasNans(), ossimIrect::height(), ossimImageData::loadTile(), m_entry, m_gsd, m_hdr, m_str, m_ul, m_unitConverter, ossimImageData::makeBlank(), OSSIM_BIP, OSSIM_FLOAT32, OSSIM_NULL, OSSIM_RIGHT_HANDED, OSSIM_UINT16, ossimDrect::pointWithin(), ossimLasPointRecordInterface::readStream(), status, ossimIrect::ul(), ossimImageData::validate(), ossimIrect::width(), ossimIpt::x, ossimDpt::x, ossimIpt::y, and ossimDpt::y.

194 {
195  // static const char MODULE[] = "ossimLibLasReader::getTile(ossimImageData*, level)";
196 
197  bool status = false;
198 
199 
200  if ( m_hdr && result && (result->getScalarType() == OSSIM_FLOAT32||result->getScalarType() == OSSIM_UINT16) &&
201  (result->getDataObjectStatus() != OSSIM_NULL) &&
202  !m_ul.hasNans() && !m_gsd.hasNans() )
203  {
204  status = true;
205 
206  const ossimIrect TILE_RECT = result->getImageRectangle();
207  const ossim_int32 TILE_HEIGHT = static_cast<ossim_int32>(TILE_RECT.height());
208  const ossim_int32 TILE_WIDTH = static_cast<ossim_int32>(TILE_RECT.width());
209  const ossim_int32 TILE_SIZE = static_cast<ossim_int32>(TILE_RECT.area());
210 
211  // Get the scale for this resLevel:
212  ossimDpt scale;
213  getScale(scale, resLevel);
214 
215  // Set the starting upper left of upper left pixel for this tile.
216  const ossimDpt UL_PROG_PT( m_ul.x - scale.x / 2.0 + TILE_RECT.ul().x * scale.x,
217  m_ul.y + scale.y / 2.0 - TILE_RECT.ul().y * scale.y);
218  //const ossimDpt UL_PROG_PT( m_ul.x + TILE_RECT.ul().x * scale.x,
219  // m_ul.y + scale.y / 2.0 - TILE_RECT.ul().y * scale.y);
220 
221  //---
222  // Set the lower right to the edge of the tile boundary. This looks like an
223  // "off by one" error but it's not. We want the ossimDrect::pointWithin to
224  // catch any points in the last line sample.
225  //---
226  const ossimDpt LR_PROG_PT( UL_PROG_PT.x + TILE_WIDTH * scale.x,
227  UL_PROG_PT.y - TILE_HEIGHT * scale.y);
228 
229  const ossimDrect PROJ_RECT(UL_PROG_PT, LR_PROG_PT, OSSIM_RIGHT_HANDED);
230 
231 #if 0 /* Please leave for debug. (drb) */
232  cout << "m_ul: " << m_ul
233  << "\nm_gsd: " << m_gsd
234  << "\nscale: " << scale
235  << "\nresult->getScalarType(): " << result->getScalarType()
236  << "\nresult->getDataObjectStatus(): " << result->getDataObjectStatus()
237  << "\nPROJ_RECT: " << PROJ_RECT
238  << "\nTILE_RECT: " << TILE_RECT
239  << "\nUL_PROG_PT: " << UL_PROG_PT << endl;
240 #endif
241 
242  const ossim_float64 SCALE_X = m_hdr->getScaleFactorX();
243  const ossim_float64 SCALE_Y = m_hdr->getScaleFactorY();
244  const ossim_float64 SCALE_Z = m_hdr->getScaleFactorZ();
245  const ossim_float64 OFFSET_X = m_hdr->getOffsetX();
246  const ossim_float64 OFFSET_Y = m_hdr->getOffsetY();
247  const ossim_float64 OFFSET_Z = m_hdr->getOffsetZ();
248 
249  // Create array of buckets.
250  std::vector<ossimLasReader::Bucket> bucket( TILE_SIZE );
251 
252  // Loop through the point data.
254  ossimDpt lasPt;
255 
256  m_str.clear();
257  m_str.seekg(m_hdr->getOffsetToPointData());
258 
259  while ( m_str.good() )
260  {
261  // m_str.read((char*)lasPtRec, 28);
262  lasPtRec->readStream( m_str );
263 
264  //if ( lasPtRec->getReturnNumber() == ENTRY )
265  //{
266  lasPt.x = lasPtRec->getX() * SCALE_X + OFFSET_X;
267  lasPt.y = lasPtRec->getY() * SCALE_Y + OFFSET_Y;
268  if ( m_unitConverter )
269  {
270  convertToMeters(lasPt.x);
271  convertToMeters(lasPt.y);
272  }
273  if ( PROJ_RECT.pointWithin( lasPt ) )
274  {
275  // Compute the bucket index:
276  ossim_int32 line = static_cast<ossim_int32>((UL_PROG_PT.y - lasPt.y) / scale.y);
277  ossim_int32 samp = static_cast<ossim_int32>((lasPt.x - UL_PROG_PT.x) / scale.x );
278  ossim_int32 bucketIndex = line * TILE_WIDTH + samp;
279 
280  // Range check and add if in there.
281  if ( ( bucketIndex >= 0 ) && ( bucketIndex < TILE_SIZE ) )
282  {
283  ossim_float64 z = lasPtRec->getZ() * SCALE_Z + OFFSET_Z;
285  bucket[bucketIndex].add( z );
286  bucket[bucketIndex].setRed(lasPtRec->getRed());
287  bucket[bucketIndex].setGreen(lasPtRec->getGreen());
288  bucket[bucketIndex].setBlue(lasPtRec->getBlue());
289  bucket[bucketIndex].setIntensity(lasPtRec->getIntensity());
290 
291  }
292  }
293  //}
294  if ( m_str.eof() ) break;
295  }
296  delete lasPtRec;
297  lasPtRec = 0;
298 
299  //---
300  // We must always blank out the tile as we may not have a point for every
301  // point.
302  //---
303  result->makeBlank();
304 
305  //ossim_float32* buf = result->getFloatBuf(); // Tile buffer to fill.
306  if(m_entry == 1)
307  {
308  const ossim_uint32 BANDS = getNumberOfOutputBands();
309  std::vector<ossim_uint16> tempBuf(TILE_SIZE * BANDS);
310  ossim_uint16* buffer = &tempBuf.front();
311  for (ossim_uint32 band = 0; band < BANDS; ++band)
312  {
313  for (ossim_int32 i = 0; i < TILE_SIZE; ++i)
314  {
315  if(band == 0) buffer[i] = bucket[i].getRed();
316  if(band == 1) buffer[i] = bucket[i].getGreen();
317  if(band == 2) buffer[i] = bucket[i].getBlue();
318  }
319  }
320  result->loadTile(buffer, TILE_RECT, TILE_RECT, OSSIM_BIP);
321  }
322  else if (m_entry == 2)
323  {
324  ossim_uint16* buf = result->getUshortBuf();
325  for (ossim_int32 i = 0; i < TILE_SIZE; ++i)
326  {
327  buf[i] = bucket[i].getIntensity();
328  }
329  }
330  else
331  {
332  ossim_float32* buf = result->getFloatBuf();
333 
334  // Fill the tile. Currently no band loop:
335  for (ossim_int32 i = 0; i < TILE_SIZE; ++i)
336  {
337  buf[i] = bucket[i].getValue();
338  }
339  }
340 
341  // Revalidate.
342  result->validate();
343  }
344 
345  return status;
346 
347 } // End: bool ossimLibLasReader::getTile(ossimImageData* result, ossim_uint32 resLevel)
virtual ossim_uint16 getRed() const =0
ossimUnitConversionTool * m_unitConverter
std::ifstream m_str
virtual const ossim_uint16 * getUshortBuf() const
16 bit unsigned integer
virtual ossim_int32 getY() const =0
void convertToMeters(ossim_float64 &value) const
float ossim_float32
double y
Definition: ossimDpt.h:165
ossim_uint32 height() const
Definition: ossimIrect.h:487
const ossimIpt & ul() const
Definition: ossimIrect.h:274
const ossim_float64 & getScaleFactorY() const
void getScale(ossimDpt &scale, ossim_uint32 resLevel) const
Get the scale for resLevel.
virtual ossimDataObjectStatus getDataObjectStatus() const
const ossim_float64 & getScaleFactorZ() const
ossim_uint32 getOffsetToPointData() const
32 bit floating point
unsigned short ossim_uint16
virtual ossim_int32 getZ() const =0
const ossim_float64 & getOffsetX() const
ossim_uint8 m_entry
double ossim_float64
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
const ossim_float64 & getOffsetZ() const
virtual ossim_uint16 getIntensity() const =0
virtual ossimDataObjectStatus validate() const
ossimLasPointRecordInterface * getNewPointRecord() const
Returns a point of type.
const ossim_float64 & getScaleFactorX() const
unsigned int ossim_uint32
virtual ossim_int32 getX() const =0
const ossim_float64 & getOffsetY() const
virtual ossimIrect getImageRectangle() const
ossim_uint32 width() const
Definition: ossimIrect.h:500
bool hasNans() const
Definition: ossimDpt.h:67
virtual const ossim_float32 * getFloatBuf() const
virtual void readStream(std::istream &in)=0
return status
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
virtual ossim_uint16 getBlue() const =0
ossim_int32 y
Definition: ossimIpt.h:142
ossim_uint32 area() const
Definition: ossimIrect.h:396
double x
Definition: ossimDpt.h:164
OSSIM Interface for LAS point record types.
ossim_int32 x
Definition: ossimIpt.h:141
ossimLasHdr * m_hdr
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
virtual ossim_uint16 getGreen() const =0
int ossim_int32

◆ getTileHeight()

ossim_uint32 ossimLasReader::getTileHeight ( ) const
virtual
Returns
The height of the output tile.

Reimplemented from ossimImageSource.

Definition at line 399 of file ossimLasReader.cpp.

References ossim::defaultTileSize(), and ossimIpt::y.

Referenced by initTile().

400 {
401  ossimIpt ipt;
403  return ipt.y;
404 }
OSSIM_DLL void defaultTileSize(ossimIpt &tileSize)
ossim_int32 y
Definition: ossimIpt.h:142

◆ getTileWidth()

ossim_uint32 ossimLasReader::getTileWidth ( ) const
virtual
Returns
The width of the output tile.

Reimplemented from ossimImageSource.

Definition at line 392 of file ossimLasReader.cpp.

References ossim::defaultTileSize(), and ossimIpt::x.

Referenced by initTile().

393 {
394  ossimIpt ipt;
396  return ipt.x;
397 }
OSSIM_DLL void defaultTileSize(ossimIpt &tileSize)
ossim_int32 x
Definition: ossimIpt.h:141

◆ init()

bool ossimLasReader::init ( )
private

Definition at line 664 of file ossimLasReader.cpp.

References ossimFilename::exists(), ossimRefPtr< T >::get(), ossimImageHandler::getFilenameWithThisExt(), getImageGeometry(), ossimImageGeometry::getProjection(), initFromExternalMetadata(), isOpen(), parseVarRecords(), true, and ossimRefPtr< T >::valid().

665 {
666  bool result = false;
667 
668  if ( isOpen() )
669  {
670  // Check for external geometry file for projection stuff.
671  ossimFilename geomFile;
672  getFilenameWithThisExt( ossimString(".geom" ), geomFile );
673  if ( geomFile.exists() == true )
674  {
675  // Call get image geometry to initialize ourself.
677  if ( geom.valid() == true )
678  {
679  // Check for map projection.
681  if ( proj.valid() == true )
682  {
683  if ( dynamic_cast<ossimMapProjection*>( proj.get() ) )
684  {
685  result = true;
686  }
687  }
688  }
689  }
690 
691  if ( !result )
692  {
693  // Check for option var record.
694  result = parseVarRecords();
695 
696  if ( !result )
697  {
698  // Checks for external FGDC text file.
699  result = initFromExternalMetadata();
700  }
701  }
702  }
703 
704  return result;
705 }
bool valid() const
Definition: ossimRefPtr.h:75
virtual bool isOpen() const
is open method.
bool initFromExternalMetadata()
Looks for external FGDC text file to initialize projection from.
bool exists() const
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
void getFilenameWithThisExt(const ossimString &ext, ossimFilename &f) const
Returns the image file with extension set using supplentary directory for dirname if set...
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...

◆ initFromExternalMetadata()

bool ossimLasReader::initFromExternalMetadata ( )
private

Looks for external FGDC text file to initialize projection from.

Definition at line 1166 of file ossimLasReader.cpp.

Referenced by init().

1167 {
1168  static const char M[] = "ossimLasReader::initFromExternalMetadata";
1169  if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << M << " entered...\n";
1170 
1171  bool result = false;
1172 
1173  ossimFilename fgdcFile = theImageFile;
1174  fgdcFile.setExtension("txt");
1175  if ( fgdcFile.exists() == false )
1176  {
1177  fgdcFile.setExtension("TXT");
1178  }
1179 
1180  if ( fgdcFile.exists() )
1181  {
1183  if ( fgdcDoc->open( fgdcFile ) )
1184  {
1185  fgdcDoc->getProjection( m_proj );
1186  if ( m_proj.valid() )
1187  {
1188  // Units must be set before initValues and initProjection.
1189  std::string units;
1190  fgdcDoc->getAltitudeDistanceUnits(units);
1191  if ( ( units == "feet" ) || ( units == "international feet" ) )
1192  {
1193  m_units = OSSIM_FEET;
1194  }
1195  else if ( units == "survey feet" )
1196  {
1198  }
1199  else
1200  {
1202  }
1203 
1204  // Must be called before initProjection.
1205  initValues();
1206 
1207  result = initProjection(); // Sets the ties and scale...
1208 
1209  if (traceDebug())
1210  {
1212  }
1213  }
1214  }
1215  }
1216 
1217  if (traceDebug())
1218  {
1219  ossimNotify(ossimNotifyLevel_DEBUG) << M << " exit status = " << (result?"true\n":"false\n");
1220  }
1221  return result;
1222 }
bool open(const ossimFilename &file)
open method.
ossimFilename theImageFile
bool valid() const
Definition: ossimRefPtr.h:75
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
bool exists() const
Support data container for FGDC in text format.
ossimUnitType m_units
void getProjection(ossimRefPtr< ossimProjection > &proj)
Gets projection from Spatial_Reference_Information block.
ossimFilename & setExtension(const ossimString &e)
Sets the extension of a file name.
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void getAltitudeDistanceUnits(std::string &units) const
Gets units from Altitude_Distance_Units.
ossimRefPtr< ossimProjection > m_proj

◆ initProjection()

bool ossimLasReader::initProjection ( )
private

Definition at line 707 of file ossimLasReader.cpp.

References ossimRefPtr< T >::get(), ossimMapProjection::getDatum(), ossimMapProjection::getDecimalDegreesPerPixel(), ossimMapProjection::getMetersPerPixel(), ossimDpt::hasNans(), ossimMapProjection::isGeographic(), m_gsd, m_lr, m_proj, m_ul, ossimDpt::makeNan(), ossimNotify(), ossimNotifyLevel_WARN, ossimMapProjection::setDecimalDegreesPerPixel(), ossimMapProjection::setMetersPerPixel(), ossimMapProjection::setUlTiePoints(), ossimDpt::x, and ossimDpt::y.

708 {
709  bool result = true;
710 
711  ossimMapProjection* proj = dynamic_cast<ossimMapProjection*>( m_proj.get() );
712  if ( proj )
713  {
714  //---
715  // Set the tie and scale:
716  // Note the scale can be set in other places so only set here if it
717  // has nans.
718  //---
719  if ( proj->isGeographic() )
720  {
721  ossimGpt gpt(m_ul.y, m_ul.x, 0.0, proj->getDatum() );
722  proj->setUlTiePoints( gpt );
723 
724  if ( m_gsd.hasNans() )
725  {
727  if ( m_gsd.hasNans() || !m_gsd.x || !m_gsd.y )
728  {
729  // Set to some default:
730  m_gsd.x = 0.000008983; // About 1 meter at the Equator.
731  m_gsd.y = m_gsd.x;
733  }
734 
735  }
736  }
737  else
738  {
739  proj->setUlTiePoints(m_ul);
740 
741  if ( m_gsd.hasNans() )
742  {
743  m_gsd = proj->getMetersPerPixel();
744  if ( m_gsd.hasNans() || !m_gsd.x || !m_gsd.y )
745  {
746  // Set to some default:
747  m_gsd.x = 1.0;
748  m_gsd.y = 1.0;
749  proj->setMetersPerPixel( m_gsd );
750  }
751  }
752  }
753  }
754  else
755  {
756  result = false;
757  m_ul.makeNan();
758  m_lr.makeNan();
759  m_gsd.makeNan();
760 
762  << "ossimLasReader::initProjection WARN Could not cast to map projection!"
763  << std::endl;
764  }
765 
766  return result;
767 
768 } // bool ossimLasReader::initProjection()
virtual const ossimDpt & getDecimalDegreesPerPixel() const
Returns decimal degrees per pixel as an ossimDpt with "x" representing longitude and "y" representing...
double y
Definition: ossimDpt.h:165
virtual bool isGeographic() const
virtual void setDecimalDegreesPerPixel(const ossimDpt &gsd)
virtual void setMetersPerPixel(const ossimDpt &gsd)
virtual const ossimDatum * getDatum() const
bool hasNans() const
Definition: ossimDpt.h:67
double x
Definition: ossimDpt.h:164
virtual void setUlTiePoints(const ossimGpt &gpt)
virtual ossimDpt getMetersPerPixel() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void makeNan()
Definition: ossimDpt.h:65
ossimRefPtr< ossimProjection > m_proj

◆ initTile()

void ossimLasReader::initTile ( )
private

Definition at line 770 of file ossimLasReader.cpp.

References getMaxPixelValue(), getMinPixelValue(), getNullPixelValue(), getNumberOfOutputBands(), getOutputScalarType(), getTileHeight(), getTileWidth(), ossimImageData::initialize(), m_entry, m_tile, ossimImageData::setMaxPix(), ossimImageData::setMinPix(), and ossimImageData::setNullPix().

Referenced by getTile(), and setCurrentEntry().

771 {
773 
774  m_tile = new ossimImageData(this,
776  BANDS,
777  getTileWidth(),
778  getTileHeight());
779 
780  for(ossim_uint32 band = 0; band < BANDS; ++band)
781  {
782  if (m_entry == 0 || m_entry == 1)
783  {
784  m_tile->setMinPix(getMinPixelValue(band), band);
785  m_tile->setMaxPix(getMaxPixelValue(band), band);
786  m_tile->setNullPix(getNullPixelValue(band), band);
787  }
788  }
789 
790  m_tile->initialize();
791 }
ossimRefPtr< ossimImageData > m_tile
virtual double getMinPixelValue(ossim_uint32 band=0) const
virtual ossim_uint32 getTileWidth() const
virtual void initialize()
Initialize the data buffer.
ossim_uint8 m_entry
ossimScalarType getOutputScalarType() const
virtual void setNullPix(ossim_float64 null_pix)
virtual ossim_uint32 getTileHeight() const
unsigned int ossim_uint32
virtual void setMaxPix(ossim_float64 max_pix)
virtual double getNullPixelValue(ossim_uint32 band=0) const
virtual double getMaxPixelValue(ossim_uint32 band=0) const
virtual void setMinPix(ossim_float64 min_pix)
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.

◆ initUnits()

void ossimLasReader::initUnits ( const ossimKeywordlist geomKwl)
private

Definition at line 793 of file ossimLasReader.cpp.

References ossimKeywordlist::find(), ossimRefPtr< T >::get(), ossimMapProjection::isGeographic(), m_proj, m_unitConverter, m_units, OSSIM_DEGREES, OSSIM_FEET, OSSIM_METERS, OSSIM_US_SURVEY_FEET, ossimNotify(), and ossimNotifyLevel_DEBUG.

794 {
795  ossimMapProjection* proj = dynamic_cast<ossimMapProjection*>( m_proj.get() );
796  if ( proj )
797  {
798  if ( proj->isGeographic() )
799  {
801  }
802  else
803  {
804  const char* lookup = geomKwl.find("image0.linear_units");
805  if ( lookup )
806  {
807  std::string units = lookup;
808  if ( units == "meters" )
809  {
811  }
812  else if ( units == "feet" )
813  {
815  }
816  else if ( units == "us_survey_feet" )
817  {
819  }
820  else
821  {
823  << "ossimLibLasReader::initUnits WARN:\n"
824  << "Unhandled linear units code: " << units << std::endl;
825  }
826  }
827  }
828  }
829 
830  // Don't make a unit converter for decimal degrees...
832  {
834  }
835 }
ossimUnitConversionTool * m_unitConverter
const char * find(const char *key) const
virtual bool isGeographic() const
ossimUnitType m_units
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossimRefPtr< ossimProjection > m_proj

◆ initValues()

void ossimLasReader::initValues ( )
private

Definition at line 837 of file ossimLasReader.cpp.

References convertToMeters(), ossimLasHdr::getMaxX(), ossimLasHdr::getMaxY(), ossimLasHdr::getMaxZ(), ossimLasHdr::getMinX(), ossimLasHdr::getMinY(), ossimLasHdr::getMinZ(), getNewPointRecord(), ossimLasHdr::getOffsetToPointData(), ossimLasHdr::getOffsetX(), ossimLasHdr::getOffsetY(), ossimLasHdr::getOffsetZ(), ossimLasHdr::getScaleFactorX(), ossimLasHdr::getScaleFactorY(), ossimLasHdr::getScaleFactorZ(), ossimLasPointRecordInterface::getX(), ossimLasPointRecordInterface::getY(), ossimLasPointRecordInterface::getZ(), m_hdr, m_lr, m_maxZ, m_minZ, m_scan, m_str, m_ul, m_unitConverter, max, min, ossimNotify(), ossimNotifyLevel_DEBUG, ossimLasPointRecordInterface::print(), ossimLasPointRecordInterface::readStream(), ossimDpt::x, x, ossimDpt::y, and y.

Referenced by getImageGeometry().

838 {
839  static const char M[] = "ossimLasReader::initValues";
840 
841  if ( m_scan )
842  {
843  // Set to bogus values to start.
850 
851  const ossim_float64 SCALE_X = m_hdr->getScaleFactorX();
852  const ossim_float64 SCALE_Y = m_hdr->getScaleFactorY();
853  const ossim_float64 SCALE_Z = m_hdr->getScaleFactorZ();
854  const ossim_float64 OFFSET_X = m_hdr->getOffsetX();
855  const ossim_float64 OFFSET_Y = m_hdr->getOffsetY();
856  const ossim_float64 OFFSET_Z = m_hdr->getOffsetZ();
857 
859 
860  m_str.clear();
861  m_str.seekg(m_hdr->getOffsetToPointData());
862 
865  ossim_float64 z;
866 
867  while ( m_str.good() )
868  {
869  lasPtRec->readStream( m_str );
870 
871 #if 0 /* Please leave for debug. (drb) */
873 #endif
874 
875  x = lasPtRec->getX() * SCALE_X + OFFSET_X;
876  y = lasPtRec->getY() * SCALE_Y + OFFSET_Y;
877  z = lasPtRec->getZ() * SCALE_Z + OFFSET_Z;
878 
879  //std::cout << "X: " << lasPtRec->getX() << " SCALE: " << SCALE_X << " OFFSET: " << OFFSET_X << " XNORM: " << x << std::endl;
880  //std::cout << "Y: " << lasPtRec->getY() << " SCALE: " << SCALE_Y << " OFFSET: " << OFFSET_Y << " YNORM: " << y << std::endl;
881  //std::cout << "Z: " << lasPtRec->getZ() << " SCALE: " << SCALE_Z << " OFFSET: " << OFFSET_Z << " ZNORM: " << z << std::endl;
882 
883  if ( x < m_ul.x ) m_ul.x = x;
884  if ( x > m_lr.x ) m_lr.x = x;
885  if ( y > m_ul.y ) m_ul.y = y;
886  if ( y < m_lr.y ) m_lr.y = y;
887  if ( z > m_maxZ ) m_maxZ = z;
888  if ( z < m_minZ ) m_minZ = z;
889 
890  if ( m_str.eof() ) break;
891  }
892  delete lasPtRec;
893  lasPtRec = 0;
894  }
895  else
896  {
897  // Set the upper left (tie).
898  m_ul.x = m_hdr->getMinX();
899  m_ul.y = m_hdr->getMaxY();
900 
901  // Set the lower right.
902  m_lr.x = m_hdr->getMaxX();
903  m_lr.y = m_hdr->getMinY();
904 
905  // Set the min/max:
906  m_minZ = m_hdr->getMinZ();
907  m_maxZ = m_hdr->getMaxZ();
908  }
909 
910  if ( m_unitConverter ) // Need to convert to meters.
911  {
914 
917 
920  }
921 
922  if ( traceDebug() )
923  {
924  ossimNotify(ossimNotifyLevel_DEBUG) << M << " DEBUG:\nBounds from header:";
925  ossimDpt pt;
926  pt.x = m_hdr->getMinX();
927  pt.y = m_hdr->getMaxY();
928  if ( m_unitConverter )
929  {
930  convertToMeters(pt.x);
931  convertToMeters(pt.y);
932  }
933  ossimNotify(ossimNotifyLevel_DEBUG) << "\nul: " << pt;
934  pt.x = m_hdr->getMaxX();
935  pt.y = m_hdr->getMinY();
936 
937  if ( m_unitConverter )
938  {
939  convertToMeters(pt.x);
940  convertToMeters(pt.y);
941  }
942  ossimNotify(ossimNotifyLevel_DEBUG) << "\nlr: " << pt;
943  pt.x = m_hdr->getMinZ();
944  pt.y = m_hdr->getMaxZ();
945  if ( m_unitConverter )
946  {
947  convertToMeters(pt.x);
948  convertToMeters(pt.y);
949  }
951  << "\nminZ: " << pt.x
952  << "\nmaxZ: " << pt.y << "\n";
953  if ( m_scan )
954  {
956  << "Bounds from scan:"
957  << "\nul: " << m_ul
958  << "\nlr: " << m_lr
959  << "\nminZ: " << m_minZ
960  << "\nmaxZ: " << m_maxZ << "\n";
961  }
962  }
963 }
ossim_float64 m_minZ
virtual std::ostream & print(std::ostream &out) const =0
ossim_uint32 x
ossimUnitConversionTool * m_unitConverter
std::ifstream m_str
virtual ossim_int32 getY() const =0
void convertToMeters(ossim_float64 &value) const
ossim_uint32 y
double y
Definition: ossimDpt.h:165
const ossim_float64 & getMaxX() const
const ossim_float64 & getScaleFactorY() const
const ossim_float64 & getScaleFactorZ() const
ossim_uint32 getOffsetToPointData() const
const ossim_float64 & getMinX() const
virtual ossim_int32 getZ() const =0
const ossim_float64 & getOffsetX() const
ossim_float64 m_maxZ
double ossim_float64
const ossim_float64 & getOffsetZ() const
ossimLasPointRecordInterface * getNewPointRecord() const
Returns a point of type.
const ossim_float64 & getScaleFactorX() const
virtual ossim_int32 getX() const =0
const ossim_float64 & getMaxY() const
const ossim_float64 & getOffsetY() const
const ossim_float64 & getMinZ() const
virtual void readStream(std::istream &in)=0
const ossim_float64 & getMaxZ() const
#define max(a, b)
Definition: auxiliary.h:76
double x
Definition: ossimDpt.h:164
OSSIM Interface for LAS point record types.
ossimLasHdr * m_hdr
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
const ossim_float64 & getMinY() const
#define min(a, b)
Definition: auxiliary.h:75

◆ isOpen()

bool ossimLasReader::isOpen ( ) const
inlinevirtual

is open method.

Satisfies ossimImageHandler::isOpen pure virtual.

Returns
true if open, false if not.

Implements ossimImageHandler.

Definition at line 317 of file ossimLasReader.h.

References m_hdr, and m_str.

Referenced by close(), getEntryList(), getNumberOfLines(), getNumberOfSamples(), init(), and setCurrentEntry().

318 {
319  return ( m_str.is_open() && m_hdr );
320 }
std::ifstream m_str
ossimLasHdr * m_hdr

◆ loadState()

bool ossimLasReader::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Method to the load (recreate) the state of an object from a keyword list.

Returns
true if ok or false on error.

Reimplemented from ossimImageHandler.

Definition at line 586 of file ossimLasReader.cpp.

References ossimKeywordlist::find(), ossimImageHandler::loadState(), and open().

587 {
588  bool result = false;
589  if ( ossimImageHandler::loadState(kwl, prefix) )
590  {
591  result = open();
592  if ( result )
593  {
594  // Get our keywords:
595  const char* lookup = kwl.find(prefix, GSD_KW);
596  if ( lookup )
597  {
598  m_gsd.toPoint( ossimString(lookup) );
599  }
600  lookup = kwl.find(prefix, SCAN_KW);
601  if ( lookup )
602  {
603  ossimString s = lookup;
604  m_scan = s.toBool();
605  }
606  }
607  }
608  return result;
609 }
const char * find(const char *key) 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 bool open()
open method.
bool toBool() const
String to numeric methods.
void toPoint(const std::string &s)
Initializes this point from string.
Definition: ossimDpt.cpp:192

◆ open()

bool ossimLasReader::open ( )
virtual

open method.

Satisfies ossimImageHandler::open pure virtual.

Returns
Returns true on success, false on error.
Note
This method relies on the data member ossimImageData::theImageFile being set. Callers should do a "setFilename" prior to calling this method or use the ossimImageHandler::open that takes a file name and an entry index.

Implements ossimImageHandler.

Definition at line 83 of file ossimLasReader.cpp.

Referenced by loadState().

84 {
85  static const char M[] = "ossimLasReader::open";
86  if (traceDebug())
87  {
89  << M << " entered...\nfile: " << theImageFile << "\n";
90  }
91 
92  bool result = false;
93 
94  close();
95 
96  m_str.open(theImageFile.c_str(), std::ios_base::in | std::ios_base::binary);
97  if ( m_str.good() )
98  {
99  m_hdr = new ossimLasHdr();
100  if ( m_hdr->checkSignature( m_str ) )
101  {
102  m_str.seekg(0, std::ios_base::beg);
104  ossim_uint32 dataFormatId = m_hdr->getPointDataFormatId();
105 
106  if ( (dataFormatId == 0) || (dataFormatId == 1) || (dataFormatId == 2) ||
107  (dataFormatId == 3) || (dataFormatId == 4) )
108  {
109  result = init();
110 
111  if ( result )
112  {
114 
115  if ( traceDebug() )
116  {
118  }
119  }
120  }
121  else
122  {
123  if ( traceDebug() )
124  {
126  << "Unhandled point type: " << int(m_hdr->getPointDataFormatId()) << "\n";
127  }
128  }
129 
130  if ( traceDebug() && result )
131  {
133  }
134 
135  } // if ( m_hdr->checkSignature( m_str ) )
136 
137  } // if ( m_str.good() )
138 
139  if ( !result ) close();
140 
141  if (traceDebug())
142  {
143  ossimNotify(ossimNotifyLevel_DEBUG) << M << " exit status = " << (result?"true\n":"false\n");
144  }
145 
146  return result;
147 }
virtual void close()
Close method.
std::ifstream m_str
ossimFilename theImageFile
bool checkSignature(std::istream &in) const
Checks for LASF in first four bytes.
void readStream(std::istream &in)
Method to initialize from input stream.
unsigned int ossim_uint32
ossim_uint8 getPointDataFormatId() const
virtual void establishDecimationFactors()
Virtual method determines the decimation factors at each resolution level.
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
ossimLasHdr * m_hdr
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ parseVarRecords()

bool ossimLasReader::parseVarRecords ( )
private

Definition at line 965 of file ossimLasReader.cpp.

Referenced by init().

966 {
967  static const char M[] = "ossimLasReader::parseVarRecords";
968  if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << M << " entered...\n";
969 
970  bool result = false;
971 
972  if ( isOpen() )
973  {
974  std::streampos origPos = m_str.tellg();
975  std::streamoff pos = static_cast<std::streamoff>(m_hdr->getHeaderSize());
976 
977  m_str.clear();
978  m_str.seekg(pos, std::ios_base::beg);
979 
980  ossim_uint32 vlrCount = m_hdr->getNumberOfVlrs();
981  ossim_uint16 reserved;
982  char uid[17];
983  uid[16]='\n';
984  ossim_uint16 recordId;
985  ossim_uint16 length;
986  char des[33];
987  des[32] = '\n';
988 
989  //---
990  // Things we need to save for printGeoKeys:
991  //---
992  ossim_uint16* geoKeyBlock = 0;
993  ossim_uint64 geoKeyLength = 0;
994  ossim_float64* geoDoubleBlock = 0;
995  ossim_uint64 geoDoubleLength = 0;
996  ossim_int8* geoAsciiBlock = 0;
997  ossim_uint64 geoAsciiLength = 0;
998 
999  ossimEndian* endian = 0;
1000  // LAS LITTLE ENDIAN:
1002  {
1003  endian = new ossimEndian;
1004  }
1005 
1006  for ( ossim_uint32 i = 0; i < vlrCount; ++i )
1007  {
1008  m_str.read((char*)&reserved, 2);
1009  m_str.read(uid, 16);
1010  m_str.read((char*)&recordId, 2);
1011  m_str.read((char*)&length, 2);
1012  m_str.read(des, 32);
1013 
1014  // LAS LITTLE ENDIAN:
1015  if ( endian )
1016  {
1017  endian->swap(recordId);
1018  endian->swap(length);
1019  }
1020 
1021  if ( traceDebug() )
1022  {
1024  << "uid: " << uid
1025  << "\nrecordId: " << recordId
1026  << "\nlength: " << length
1027  << "\ndes: " << des
1028  << std::endl;
1029  }
1030 
1031  if (recordId == 34735) // GeoTiff projection keys.
1032  {
1033  geoKeyLength = length/2;
1034  if ( geoKeyBlock )
1035  {
1036  delete [] geoKeyBlock;
1037  }
1038  geoKeyBlock = new ossim_uint16[geoKeyLength];
1039  m_str.read((char*)geoKeyBlock, length);
1040  if ( endian )
1041  {
1042  endian->swap(geoKeyBlock, geoKeyLength);
1043  }
1044  }
1045  else if (recordId == 34736) // GeoTiff double parameters.
1046  {
1047  geoDoubleLength = length/8;
1048  if ( geoDoubleBlock )
1049  {
1050  delete [] geoDoubleBlock;
1051  }
1052  geoDoubleBlock = new ossim_float64[geoDoubleLength];
1053  m_str.read((char*)geoDoubleBlock, length);
1054  if ( endian )
1055  {
1056  endian->swap(geoDoubleBlock, geoDoubleLength);
1057  }
1058  }
1059  else if (recordId == 34737) // GeoTiff ascii block.
1060  {
1061  geoAsciiLength = length;
1062  if (geoAsciiBlock)
1063  {
1064  delete [] geoAsciiBlock;
1065  }
1066  geoAsciiBlock = new ossim_int8[length];
1067  m_str.read((char*)geoAsciiBlock, length);
1068  }
1069  else
1070  {
1071  m_str.seekg(length, ios_base::cur);
1072  }
1073  }
1074 
1075  //---
1076  // Must have at mimimum the geoKeyBlock for a projection.
1077  // Note the geoDoubleBlock is needed for some.
1078  // Note the geoAsciiBlock is not needed, i.e. only informational.
1079  //---
1080  if ( geoKeyBlock )
1081  {
1082  //---
1083  // Give the geokeys to ossimTiffInfo to get back a keyword list that can be fed to
1084  // ossimProjectionFactoryRegistry::createProjection
1085  //---
1086  ossimTiffInfo info;
1087  ossimKeywordlist geomKwl;
1088  info.getImageGeometry(geoKeyLength, geoKeyBlock,
1089  geoDoubleLength,geoDoubleBlock,
1090  geoAsciiLength,geoAsciiBlock,
1091  geomKwl);
1092 
1093  // Create the projection.
1095  if (m_proj.valid())
1096  {
1097  // Units must be set before initValues and initProjection.
1098  initUnits(geomKwl);
1099 
1100  // Must be called before initProjection.
1101  initValues();
1102 
1103  result = initProjection(); // Sets the ties and scale...
1104 
1105  if (traceDebug())
1106  {
1108  }
1109  }
1110  }
1111  else
1112  {
1113  /* Current data samples appear to be UTM but not sure where to find the zone
1114  const char* prefix = "image0.";
1115  // Build a default projection
1116  ossimKeywordlist geomKwl;
1117  geomKwl.add(prefix, "datum", "WGE", true);
1118  geomKwl.add(prefix, "pixel_type", "pixel_is_area", true);
1119  geomKwl.add(prefix, "type", "ossimEquDistCylProjection", true);
1120  m_proj = ossimProjectionFactoryRegistry::instance()->createProjection(geomKwl);
1121  if(m_proj.valid())
1122  {
1123  initUnits(geomKwl);
1124  initValues();
1125  result = initProjection(); // Sets the ties and scale...
1126  if (traceDebug())
1127  {
1128  m_proj->print(ossimNotify(ossimNotifyLevel_DEBUG));
1129  }
1130  }
1131  */
1132  }
1133 
1134  if ( geoKeyBlock )
1135  {
1136  delete [] geoKeyBlock;
1137  geoKeyBlock = 0;
1138  }
1139  if (geoDoubleBlock)
1140  {
1141  delete [] geoDoubleBlock;
1142  geoDoubleBlock = 0;
1143  }
1144  if (geoAsciiBlock)
1145  {
1146  delete [] geoAsciiBlock;
1147  geoAsciiBlock = 0;
1148  }
1149 
1150  m_str.seekg(origPos);
1151 
1152  if ( endian )
1153  {
1154  delete endian;
1155  endian = 0;
1156  }
1157  }
1158 
1159  if (traceDebug())
1160  {
1161  ossimNotify(ossimNotifyLevel_DEBUG) << M << " exit status = " << (result?"true\n":"false\n");
1162  }
1163  return result;
1164 }
ossim_uint32 getNumberOfVlrs() const
char ossim_int8
Previous DLL import export section.
std::ifstream m_str
Represents serializable keyword/value map.
bool valid() const
Definition: ossimRefPtr.h:75
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
bool getImageGeometry(ossimKeywordlist &geomKwl, ossim_uint32 entryIndex) const
Extracts geometry info to keyword list.
virtual bool isOpen() const
is open method.
OSSIM_DLL ossimByteOrder byteOrder()
Definition: ossimCommon.cpp:54
TIFF info class.
Definition: ossimTiffInfo.h:36
unsigned short ossim_uint16
double ossim_float64
ossimProjection * createProjection(const ossimFilename &filename, ossim_uint32 entryIdx) const
void initUnits(const ossimKeywordlist &geomKwl)
unsigned long long ossim_uint64
unsigned int ossim_uint32
static ossimProjectionFactoryRegistry * instance()
ossim_uint16 getHeaderSize() const
ossimLasHdr * m_hdr
void swap(ossim_sint8 &)
Definition: ossimEndian.h:26
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossimRefPtr< ossimProjection > m_proj

◆ saveState()

bool ossimLasReader::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Method to save the state of an object to a keyword list.

Returns
true if ok or false on error.

Reimplemented from ossimImageHandler.

Definition at line 579 of file ossimLasReader.cpp.

References ossimKeywordlist::add().

580 {
581  kwl.add( prefix, GSD_KW, m_gsd.toString().c_str(), true );
582  kwl.add( prefix, SCAN_KW, ossimString::toString(m_scan).c_str(), true );
583  return ossimImageHandler::saveState(kwl, prefix);
584 }
static ossimString toString(bool aValue)
Numeric to string methods.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
ossimString toString(ossim_uint32 precision=15) const
Definition: ossimDpt.cpp:160
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
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.

◆ setCurrentEntry()

bool ossimLasReader::setCurrentEntry ( ossim_uint32  entryIdx)
virtual
Parameters
entryIdxEntry number to select.
Returns
true if it was able to set the current entry and false otherwise.

Reimplemented from ossimImageHandler.

Definition at line 437 of file ossimLasReader.cpp.

References getEntryList(), initTile(), isOpen(), and m_entry.

438 {
439  bool result = false;
440  if ( isOpen() )
441  {
442  std::vector<ossim_uint32> entryList;
443  getEntryList( entryList );
444  std::vector<ossim_uint32>::const_iterator i = entryList.begin();
445  while ( i != entryList.end() )
446  {
447  if ( (*i) == entryIdx )
448  {
449  m_entry = entryIdx;
450  result = true;
451  }
452  ++i;
453  }
454  }
455  if(result) initTile();
456  return result;
457 }
virtual bool isOpen() const
is open method.
ossim_uint8 m_entry
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
Gets entry list.

◆ setGsd()

void ossimLasReader::setGsd ( const ossim_float64 gsd)
private

Sets m_gsd data member and projection if projection is set.

Definition at line 1272 of file ossimLasReader.cpp.

References ossimRefPtr< T >::get(), ossimDpt::hasNans(), ossimMapProjection::isGeographic(), m_gsd, m_proj, ossimMapProjection::setDecimalDegreesPerPixel(), ossimMapProjection::setMetersPerPixel(), ossimRefPtr< T >::valid(), ossimDpt::x, and ossimDpt::y.

1273 {
1274  m_gsd.x = gsd;
1275  m_gsd.y = m_gsd.x;
1276 
1277  if ( m_proj.valid() && ( m_gsd.hasNans() == false ) )
1278  {
1279  ossimMapProjection* proj = dynamic_cast<ossimMapProjection*>( m_proj.get() );
1280  if ( proj && ( m_gsd.hasNans() == false ) )
1281  {
1282  if ( proj->isGeographic() )
1283  {
1285  }
1286  else
1287  {
1288  proj->setMetersPerPixel( m_gsd );
1289  }
1290  }
1291  }
1292 }
bool valid() const
Definition: ossimRefPtr.h:75
double y
Definition: ossimDpt.h:165
virtual bool isGeographic() const
virtual void setDecimalDegreesPerPixel(const ossimDpt &gsd)
virtual void setMetersPerPixel(const ossimDpt &gsd)
bool hasNans() const
Definition: ossimDpt.h:67
double x
Definition: ossimDpt.h:164
ossimRefPtr< ossimProjection > m_proj

◆ setProperty()

void ossimLasReader::setProperty ( ossimRefPtr< ossimProperty property)
virtual

Set propterty method.

Overrides ossimImageHandler::setProperty.

Current property name handled: "scale" One double value representing the scale in meters per pixel. It is assumed the scale is same for x and y direction.

Parameters
propertyto set.

Reimplemented from ossimImageHandler.

Definition at line 611 of file ossimLasReader.cpp.

References ossimProperty::getName(), and ossimRefPtr< T >::valid().

612 {
613  if ( property.valid() )
614  {
615  if ( property->getName() == GSD_KW )
616  {
617  ossimString s;
618  property->valueToString(s);
619  ossim_float64 d = s.toFloat64();
620  if ( ossim::isnan(d) == false )
621  {
622  setGsd( d );
623  }
624  }
625  else if ( property->getName() == SCAN_KW )
626  {
627  ossimString s;
628  property->valueToString(s);
629  m_scan = s.toBool();
630  }
631  else
632  {
634  }
635  }
636 }
bool valid() const
Definition: ossimRefPtr.h:75
void setGsd(const ossim_float64 &gsd)
Sets m_gsd data member and projection if projection is set.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
double ossim_float64
bool toBool() const
String to numeric methods.
ossim_float64 toFloat64() const
const ossimString & getName() const
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

Member Data Documentation

◆ m_entry

ossim_uint8 ossimLasReader::m_entry
private

◆ m_gsd

ossimDpt ossimLasReader::m_gsd
private

◆ m_hdr

ossimLasHdr* ossimLasReader::m_hdr
private

Definition at line 301 of file ossimLasReader.h.

Referenced by close(), getNewPointRecord(), getTile(), initValues(), and isOpen().

◆ m_lr

ossimDpt ossimLasReader::m_lr
private

Definition at line 304 of file ossimLasReader.h.

Referenced by getNumberOfLines(), getNumberOfSamples(), initProjection(), and initValues().

◆ m_maxZ

ossim_float64 ossimLasReader::m_maxZ
private

Definition at line 305 of file ossimLasReader.h.

Referenced by getMaxPixelValue(), and initValues().

◆ m_minZ

ossim_float64 ossimLasReader::m_minZ
private

Definition at line 306 of file ossimLasReader.h.

Referenced by getMinPixelValue(), and initValues().

◆ m_mutex

std::mutex ossimLasReader::m_mutex
private

Definition at line 310 of file ossimLasReader.h.

◆ m_proj

ossimRefPtr<ossimProjection> ossimLasReader::m_proj
private

Definition at line 302 of file ossimLasReader.h.

Referenced by close(), getImageGeometry(), initProjection(), initUnits(), and setGsd().

◆ m_scan

bool ossimLasReader::m_scan
private

Definition at line 311 of file ossimLasReader.h.

Referenced by initValues().

◆ m_str

std::ifstream ossimLasReader::m_str
private

Definition at line 300 of file ossimLasReader.h.

Referenced by close(), getTile(), initValues(), and isOpen().

◆ m_tile

ossimRefPtr<ossimImageData> ossimLasReader::m_tile
private

Definition at line 308 of file ossimLasReader.h.

Referenced by close(), getTile(), and initTile().

◆ m_ul

ossimDpt ossimLasReader::m_ul
private

◆ m_unitConverter

ossimUnitConversionTool* ossimLasReader::m_unitConverter
private

Definition at line 313 of file ossimLasReader.h.

Referenced by convertToMeters(), getTile(), initUnits(), and initValues().

◆ m_units

ossimUnitType ossimLasReader::m_units
private

Definition at line 312 of file ossimLasReader.h.

Referenced by convertToMeters(), getImageGeometry(), and initUnits().


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