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

#include <ossimPointBlock.h>

Inheritance diagram for ossimPointBlock:
ossimDataObject ossimObject ossimReferenced

Public Types

typedef std::vector< ossimRefPtr< ossimPointRecord > > PointList
 

Public Member Functions

 ossimPointBlock (ossimSource *owner=0, ossim_uint32 fields=0)
 
 ~ossimPointBlock ()
 
virtual ossim_uint32 size () const
 Returns allocated size. More...
 
bool empty () const
 
ossim_uint32 getFieldCode () const
 Returns OR'd mash-up of ossimPointRecord field codes being stored (or desired to be stored) More...
 
vector< ossimPointRecord::FIELD_CODESgetFieldCodesAsList () const
 
void setFieldCode (ossim_uint32 code)
 Initializes the desired fields to be stored. More...
 
virtual void addPoint (ossimPointRecord *point)
 Adds single point to the tail of the list. More...
 
virtual const ossimPointRecordgetPoint (ossim_uint32 point_offset) const
 
virtual ossimPointRecordgetPoint (ossim_uint32 point_offset)
 
const ossimPointRecordoperator[] (ossim_uint32 i) const
 
ossimPointRecordoperator[] (ossim_uint32 i)
 
virtual const PointListgetPoints () const
 
virtual PointListgetPoints ()
 
void getFieldMin (ossimPointRecord::FIELD_CODES field, ossim_float32 &value) const
 
void getFieldMax (ossimPointRecord::FIELD_CODES field, ossim_float32 &value) const
 
void getBounds (ossimGrect &block_bounds) const
 
virtual const ossimPointBlockoperator= (const ossimPointBlock &rhs)
 
virtual ossimObjectdup () const
 
virtual void clear ()
 Resets any storage to empty. More...
 
virtual bool isEqualTo (const ossimDataObject &, bool) const
 Fulfills base class pure virtual. More...
 
virtual ossim_uint32 getHashId () const
 
virtual ossim_uint32 getDataSizeInBytes () const
 
virtual void initialize ()
 Will allow derived classes to initialize their buffers. More...
 
- Public Member Functions inherited from ossimDataObject
 ossimDataObject (ossimSource *source=0, ossimDataObjectStatus status=OSSIM_STATUS_UNKNOWN)
 
 ossimDataObject (const ossimDataObject &rhs)
 
virtual ~ossimDataObject ()
 
virtual void setOwner (ossimSource *aSource)
 Sets the owner of this Data object. More...
 
virtual ossimSourcegetOwner ()
 
virtual const ossimSourcegetOwner () const
 
virtual void setDataObjectStatus (ossimDataObjectStatus status) const
 Full list found in ossimConstants.h. More...
 
virtual ossimDataObjectStatus getDataObjectStatus () const
 
virtual ossimString getDataObjectStatusString () const
 
virtual ossim_uint32 getObjectSizeInBytes () const
 
virtual bool isInitialize () const
 This is to be overriden in the derived classes so they can check If their data is null. More...
 
virtual void assign (const ossimDataObject *rhs)
 
virtual const ossimDataObjectoperator= (const ossimDataObject *rhs)
 
virtual const ossimDataObjectoperator= (const ossimDataObject &rhs)
 
virtual bool operator== (const ossimDataObject &rhs) const
 
virtual bool operator!= (const ossimDataObject &rhs) const
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () 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
 
virtual void accept (ossimVisitor &visitor)
 
- 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
 

Protected Member Functions

 ossimPointBlock (const ossimPointBlock &)
 
void scanForMinMax () const
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

ossimPointRecord m_nullPCR
 
ossimPointRecord m_minRecord
 
ossimPointRecord m_maxRecord
 
bool m_minMaxValid
 
PointList m_pointList
 
ossim_uint32 m_fieldCode
 
bool m_isNormalized
 
- Protected Attributes inherited from ossimDataObject
ossimSourcetheOwner
 
ossimDataObjectStatus theDataObjectStatus
 

Detailed Description

Definition at line 24 of file ossimPointBlock.h.

Member Typedef Documentation

◆ PointList

Definition at line 27 of file ossimPointBlock.h.

Constructor & Destructor Documentation

◆ ossimPointBlock() [1/2]

ossimPointBlock::ossimPointBlock ( ossimSource owner = 0,
ossim_uint32  fields = 0 
)
explicit

Definition at line 12 of file ossimPointBlock.cpp.

Referenced by dup().

13 : ossimDataObject(owner),
14  m_nullPCR(fields),
15  m_minMaxValid(false),
16  m_fieldCode(0),
17  m_isNormalized(false)
18 {
19 }
ossimPointRecord m_nullPCR
ossimDataObject(ossimSource *source=0, ossimDataObjectStatus status=OSSIM_STATUS_UNKNOWN)
ossim_uint32 m_fieldCode

◆ ~ossimPointBlock()

ossimPointBlock::~ossimPointBlock ( )

Definition at line 21 of file ossimPointBlock.cpp.

22 {
23 
24 }

◆ ossimPointBlock() [2/2]

ossimPointBlock::ossimPointBlock ( const ossimPointBlock )
inlineprotected

Definition at line 83 of file ossimPointBlock.h.

83 {}

Member Function Documentation

◆ addPoint()

void ossimPointBlock::addPoint ( ossimPointRecord point)
virtual

Adds single point to the tail of the list.

Definition at line 133 of file ossimPointBlock.cpp.

References ossimPointRecord::getFieldCode(), m_fieldCode, m_minMaxValid, and m_pointList.

Referenced by ossimPointCloudHandler::getBlock(), ossimGenericPointCloudHandler::getFileBlock(), ossimGenericPointCloudHandler::ossimGenericPointCloudHandler(), and ossimPdalReader::parsePointView().

134 {
135  // First check that the fields match the expected. If not, sync up to this point:
136  if ((opr->getFieldCode() & m_fieldCode) != m_fieldCode)
137  m_fieldCode = opr->getFieldCode();
138 
140  m_minMaxValid = false;
141 }
PointList m_pointList
ossim_uint32 m_fieldCode

◆ clear()

virtual void ossimPointBlock::clear ( )
inlinevirtual

◆ dup()

ossimObject * ossimPointBlock::dup ( ) const
virtual

Reimplemented from ossimObject.

Definition at line 88 of file ossimPointBlock.cpp.

References m_fieldCode, and ossimPointBlock().

89 {
91  *copy = *this;
92  return copy;
93 }
ossim_uint32 m_fieldCode
ossimPointBlock(ossimSource *owner=0, ossim_uint32 fields=0)

◆ empty()

bool ossimPointBlock::empty ( ) const
inline

Definition at line 36 of file ossimPointBlock.h.

References size.

Referenced by getFieldMax(), getFieldMin(), and ossimHlzTool::PatchProcessorJob::level2Test().

36 { return (size() == 0); }
virtual ossim_uint32 size() const
Returns allocated size.

◆ getBounds()

void ossimPointBlock::getBounds ( ossimGrect block_bounds) const

Definition at line 47 of file ossimPointBlock.cpp.

References ossimPointRecord::getPosition(), m_maxRecord, m_minMaxValid, m_minRecord, and scanForMinMax().

Referenced by ossimGenericPointCloudHandler::ossimGenericPointCloudHandler().

48 {
49  if (!m_minMaxValid)
50  scanForMinMax();
51 
53 }
void scanForMinMax() const
ossimPointRecord m_minRecord
const ossimGpt & getPosition() const
Returns the 3D position vector in the dataset&#39;s coodinate reference system (available from the ossimP...
ossimPointRecord m_maxRecord

◆ getDataSizeInBytes()

virtual ossim_uint32 ossimPointBlock::getDataSizeInBytes ( ) const
inlinevirtual

Implements ossimDataObject.

Definition at line 79 of file ossimPointBlock.h.

79 { return 0; };

◆ getFieldCode()

ossim_uint32 ossimPointBlock::getFieldCode ( ) const

Returns OR'd mash-up of ossimPointRecord field codes being stored (or desired to be stored)

Definition at line 95 of file ossimPointBlock.cpp.

References m_fieldCode, and m_pointList.

Referenced by ossimPdalReader::parsePointView(), and setFieldCode().

96 {
97  if (!m_pointList.empty())
99 
100  return m_fieldCode;
101 }
ossim_uint32 getFieldCode() const
Returns OR&#39;d mash-up of ossimPointRecord field codes being stored (or desired to be stored) ...
PointList m_pointList
ossim_uint32 m_fieldCode

◆ getFieldCodesAsList()

vector< ossimPointRecord::FIELD_CODES > ossimPointBlock::getFieldCodesAsList ( ) const

Definition at line 103 of file ossimPointBlock.cpp.

References ossimPointRecord::Blue, ossimPointRecord::GpsTime, ossimPointRecord::Green, ossimPointRecord::Infrared, ossimPointRecord::Intensity, m_fieldCode, ossimPointRecord::NumberOfReturns, ossimPointRecord::Red, and ossimPointRecord::ReturnNumber.

Referenced by ossimPointCloudHandler::normalizeBlock().

104 {
105  vector<ossimPointRecord::FIELD_CODES> code_list;
107  code_list.push_back(ossimPointRecord::Intensity);
109  code_list.push_back(ossimPointRecord::ReturnNumber);
111  code_list.push_back(ossimPointRecord::NumberOfReturns);
113  code_list.push_back(ossimPointRecord::Red);
115  code_list.push_back(ossimPointRecord::Green);
117  code_list.push_back(ossimPointRecord::Blue);
119  code_list.push_back(ossimPointRecord::GpsTime);
121  code_list.push_back(ossimPointRecord::Infrared);
122  return code_list;
123 }
ossim_uint32 m_fieldCode

◆ getFieldMax()

void ossimPointBlock::getFieldMax ( ossimPointRecord::FIELD_CODES  field,
ossim_float32 value 
) const

Definition at line 36 of file ossimPointBlock.cpp.

References empty(), ossimPointRecord::getField(), m_maxRecord, m_minMaxValid, ossim::nan(), and scanForMinMax().

37 {
38  if (empty())
39  value = ossim::nan();
40  else if (!m_minMaxValid)
41  scanForMinMax();
42 
43  value = m_maxRecord.getField(field);
44 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
ossim_float32 getField(FIELD_CODES fc) const
Return the float value of the requested field.
bool empty() const
void scanForMinMax() const
ossimPointRecord m_maxRecord

◆ getFieldMin()

void ossimPointBlock::getFieldMin ( ossimPointRecord::FIELD_CODES  field,
ossim_float32 value 
) const

Definition at line 26 of file ossimPointBlock.cpp.

References empty(), ossimPointRecord::getField(), m_minMaxValid, m_minRecord, ossim::nan(), and scanForMinMax().

27 {
28  if (empty())
29  value = ossim::nan();
30  else if (!m_minMaxValid)
31  scanForMinMax();
32 
33  value = m_minRecord.getField(field);
34 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
ossim_float32 getField(FIELD_CODES fc) const
Return the float value of the requested field.
bool empty() const
void scanForMinMax() const
ossimPointRecord m_minRecord

◆ getHashId()

virtual ossim_uint32 ossimPointBlock::getHashId ( ) const
inlinevirtual

Implements ossimDataObject.

Definition at line 78 of file ossimPointBlock.h.

78 { return 0; }

◆ getPoint() [1/2]

const ossimPointRecord * ossimPointBlock::getPoint ( ossim_uint32  point_offset) const
virtual

Definition at line 55 of file ossimPointBlock.cpp.

References m_pointList.

56 {
57  if (point_offset < m_pointList.size())
58  return m_pointList[point_offset].get();
59  return 0;
60 }
PointList m_pointList

◆ getPoint() [2/2]

ossimPointRecord * ossimPointBlock::getPoint ( ossim_uint32  point_offset)
virtual

Definition at line 62 of file ossimPointBlock.cpp.

References m_pointList.

63 {
64  if (point_offset < m_pointList.size())
65  return m_pointList[point_offset].get();
66  return 0;
67 }
PointList m_pointList

◆ getPoints() [1/2]

virtual const PointList& ossimPointBlock::getPoints ( ) const
inlinevirtual

Definition at line 60 of file ossimPointBlock.h.

Referenced by ossimPointCloudHandler::getBlock().

60 { return m_pointList; }
PointList m_pointList

◆ getPoints() [2/2]

virtual PointList& ossimPointBlock::getPoints ( )
inlinevirtual

Definition at line 61 of file ossimPointBlock.h.

61 { return m_pointList; }
PointList m_pointList

◆ initialize()

virtual void ossimPointBlock::initialize ( )
inlinevirtual

Will allow derived classes to initialize their buffers.

This class does nothing with this and reset any internal attributes.

Implements ossimDataObject.

Definition at line 80 of file ossimPointBlock.h.

80 {};

◆ isEqualTo()

virtual bool ossimPointBlock::isEqualTo ( const ossimDataObject ,
bool   
) const
inlinevirtual

Fulfills base class pure virtual.

TODO: Needs to be correctly implemented

Definition at line 77 of file ossimPointBlock.h.

77 { return false; }

◆ operator=()

const ossimPointBlock & ossimPointBlock::operator= ( const ossimPointBlock rhs)
virtual

Definition at line 69 of file ossimPointBlock.cpp.

References m_fieldCode, m_isNormalized, m_maxRecord, m_minMaxValid, m_minRecord, m_nullPCR, m_pointList, and size().

70 {
71  ossim_uint32 numPoints = block.size();
72  if (numPoints == 0)
73  return *this;
74 
75  for (ossim_uint32 i=0; i<numPoints; ++i)
76  m_pointList.push_back(new ossimPointRecord(*(block[i])));
77 
78  m_nullPCR = block.m_nullPCR;
79  m_minRecord = block.m_minRecord;
80  m_maxRecord = block.m_maxRecord;
81  m_minMaxValid = block.m_minMaxValid;
82  m_fieldCode = block.m_fieldCode;
83  m_isNormalized = block.m_isNormalized;
84 
85  return *this;
86 }
ossimPointRecord m_nullPCR
PointList m_pointList
unsigned int ossim_uint32
ossimPointRecord m_minRecord
ossim_uint32 m_fieldCode
ossimPointRecord m_maxRecord

◆ operator[]() [1/2]

const ossimPointRecord* ossimPointBlock::operator[] ( ossim_uint32  i) const
inline

Definition at line 57 of file ossimPointBlock.h.

57 { return getPoint(i); }
virtual const ossimPointRecord * getPoint(ossim_uint32 point_offset) const

◆ operator[]() [2/2]

ossimPointRecord* ossimPointBlock::operator[] ( ossim_uint32  i)
inline

Definition at line 58 of file ossimPointBlock.h.

58 { return getPoint(i); }
virtual const ossimPointRecord * getPoint(ossim_uint32 point_offset) const

◆ scanForMinMax()

void ossimPointBlock::scanForMinMax ( ) const
protected

Definition at line 143 of file ossimPointBlock.cpp.

References ossimPointRecord::getPosition(), ossimPointRecord::Green, ossimPointRecord::Intensity, m_maxRecord, m_minRecord, m_pointList, ossimPointRecord::Red, and size().

Referenced by getBounds(), getFieldMax(), and getFieldMin().

144 {
145  ossim_uint32 numPoints = size();
146  if (numPoints == 0)
147  return;
148 
149  // Latch first point:
150  m_minRecord = *(m_pointList[0].get());
152  ossimGpt minPos (m_minRecord.getPosition());
153  ossimGpt maxPos (minPos);
154 
155  // For shorthand later:
162 
163  // If color available, latch the min for all bands as one to minimize color distortion:
164  bool hasRGB = false;
165  if (m_minRecord.hasFields(R|G|B))
166  {
167  hasRGB = true;
168  ossim_float32 r = m_pointList[0]->getField(R);
169  ossim_float32 g = m_pointList[0]->getField(G);
170  ossim_float32 b = m_pointList[0]->getField(B);
171  float minC = std::min(r, std::min(g, b));
172  float maxC = std::max(r, std::max(g, b));
173  m_minRecord.setField(R, minC);
174  m_minRecord.setField(G, minC);
175  m_minRecord.setField(B, minC);
176  m_maxRecord.setField(R, maxC);
177  m_maxRecord.setField(G, maxC);
178  m_maxRecord.setField(B, maxC);
179  }
180 
181  // Now loop over all points in file to latch min/max:
182  for (ossim_uint32 i=0; i<numPoints; ++i)
183  {
184  if (m_pointList[i]->getPosition().lat < minPos.lat)
185  minPos.lat = m_pointList[i]->getPosition().lat;
186  if (m_pointList[i]->getPosition().lon < minPos.lon)
187  minPos.lon = m_pointList[i]->getPosition().lon;
188  if (m_pointList[i]->getPosition().hgt < minPos.hgt)
189  minPos.hgt = m_pointList[i]->getPosition().hgt;
190 
191  if (m_pointList[i]->getPosition().lat > maxPos.lat)
192  maxPos.lat = m_pointList[i]->getPosition().lat;
193  if (m_pointList[i]->getPosition().lon > maxPos.lon)
194  maxPos.lon = m_pointList[i]->getPosition().lon;
195  if (m_pointList[i]->getPosition().hgt > maxPos.hgt)
196  maxPos.hgt = m_pointList[i]->getPosition().hgt;
197 
198  if (m_minRecord.hasFields(I) && (m_minRecord.getField(I) > m_pointList[i]->getField(I)))
199  m_minRecord.setField(I, m_pointList[i]->getField(I));
200 
201  if (m_minRecord.hasFields(S) && (m_minRecord.getField(S) > m_pointList[i]->getField(S)))
202  m_minRecord.setField(S, m_pointList[i]->getField(S));
203 
204  if (m_minRecord.hasFields(N) && (m_minRecord.getField(N) > m_pointList[i]->getField(N)))
205  m_minRecord.setField(N, m_pointList[i]->getField(N));
206 
207  if (hasRGB)
208  {
209  ossim_float32 r = m_pointList[i]->getField(R);
210  ossim_float32 g = m_pointList[i]->getField(G);
211  ossim_float32 b = m_pointList[i]->getField(B);
212 
213  float minC = std::min(r, std::min(g, b));
214  if (m_minRecord.getField(R) > minC)
215  {
216  m_minRecord.setField(R, minC);
217  m_minRecord.setField(G, minC);
218  m_minRecord.setField(B, minC);
219  }
220 
221  float maxC = std::max(r, std::max(g, b));
222  if (m_maxRecord.getField(R) < maxC)
223  {
224  m_maxRecord.setField(R, maxC);
225  m_maxRecord.setField(G, maxC);
226  m_maxRecord.setField(B, maxC);
227  }
228  }
229  } // end loop over all points
230 
231  m_minRecord.setPosition(minPos);
232  m_maxRecord.setPosition(maxPos);
233  m_minMaxValid = true;
234 }
float ossim_float32
ossim_float32 getField(FIELD_CODES fc) const
Return the float value of the requested field.
PointList m_pointList
unsigned int ossim_uint32
virtual bool hasFields(ossim_uint32 code_mashup) const
Argument can be mash-up of OR&#39;d codes for check of multiple fields.
virtual ossim_uint32 size() const
Returns allocated size.
ossimPointRecord m_minRecord
#define max(a, b)
Definition: auxiliary.h:76
const ossimGpt & getPosition() const
Returns the 3D position vector in the dataset&#39;s coodinate reference system (available from the ossimP...
void setField(FIELD_CODES fc, ossim_float32 value)
void setPosition(const ossimGpt &p)
ossimPointRecord m_maxRecord
#define min(a, b)
Definition: auxiliary.h:75

◆ setFieldCode()

void ossimPointBlock::setFieldCode ( ossim_uint32  code)

Initializes the desired fields to be stored.

This will affect future getBlock() calls. If the point list contains points from prior read, they will be deleted unless the points field code matches the code argument.

Definition at line 125 of file ossimPointBlock.cpp.

References clear(), getFieldCode(), and m_fieldCode.

Referenced by ossimPointCloudImageHandler::getTile().

126 {
127  if (getFieldCode() != code)
128  clear();
129 
130  m_fieldCode = code;
131 }
ossim_uint32 getFieldCode() const
Returns OR&#39;d mash-up of ossimPointRecord field codes being stored (or desired to be stored) ...
virtual void clear()
Resets any storage to empty.
ossim_uint32 m_fieldCode

◆ size()

virtual ossim_uint32 ossimPointBlock::size ( ) const
inlinevirtual

Member Data Documentation

◆ m_fieldCode

ossim_uint32 ossimPointBlock::m_fieldCode
mutableprotected

◆ m_isNormalized

bool ossimPointBlock::m_isNormalized
protected

Definition at line 92 of file ossimPointBlock.h.

Referenced by operator=().

◆ m_maxRecord

ossimPointRecord ossimPointBlock::m_maxRecord
mutableprotected

Definition at line 88 of file ossimPointBlock.h.

Referenced by getBounds(), getFieldMax(), operator=(), and scanForMinMax().

◆ m_minMaxValid

bool ossimPointBlock::m_minMaxValid
mutableprotected

Definition at line 89 of file ossimPointBlock.h.

Referenced by addPoint(), getBounds(), getFieldMax(), getFieldMin(), and operator=().

◆ m_minRecord

ossimPointRecord ossimPointBlock::m_minRecord
mutableprotected

Definition at line 87 of file ossimPointBlock.h.

Referenced by getBounds(), getFieldMin(), operator=(), and scanForMinMax().

◆ m_nullPCR

ossimPointRecord ossimPointBlock::m_nullPCR
protected

Definition at line 86 of file ossimPointBlock.h.

Referenced by operator=().

◆ m_pointList

PointList ossimPointBlock::m_pointList
protected

Definition at line 90 of file ossimPointBlock.h.

Referenced by addPoint(), getFieldCode(), getPoint(), operator=(), and scanForMinMax().


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