OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimPointRecord.cpp
Go to the documentation of this file.
1 //**************************************************************************************************
2 //
3 // OSSIM (http://trac.osgeo.org/ossim/)
4 //
5 // License: LGPL -- See LICENSE.txt file in the top level directory for more details.
6 //
7 //**************************************************************************************************
8 // $Id: ossimPointRecord.cpp 23352 2015-05-29 17:38:12Z okramer $
9 
11 
13  : m_pointId(0)
14 {
15  if (field_code & Intensity)
17  if (field_code & ReturnNumber)
19  if (field_code & NumberOfReturns)
21  if (field_code & Red)
23  if (field_code & Green)
25  if (field_code & Blue)
27  if (field_code & GpsTime)
29  if (field_code & Infrared)
31 }
32 
34  : m_pointId(pcr.m_pointId),
35  m_position(pcr.m_position),
36  m_fieldMap (pcr.m_fieldMap)
37 {
38 }
39 
41  : m_pointId(0),
42  m_position(pos)
43 {
44 }
45 
47 {
48 }
49 
50 inline bool ossimPointRecord::hasFields(ossim_uint32 field_code) const
51 {
52  bool found = true;
53 
54  if (field_code & Intensity)
55  found &= m_fieldMap.find(Intensity) != m_fieldMap.end();
56  if (found && (field_code & ReturnNumber))
57  found = m_fieldMap.find(ReturnNumber) != m_fieldMap.end();
58  if (found && (field_code & NumberOfReturns))
59  found = m_fieldMap.find(NumberOfReturns) != m_fieldMap.end();
60  if (found && (field_code & Red))
61  found = m_fieldMap.find(Red) != m_fieldMap.end();
62  if (found && (field_code & Green))
63  found = m_fieldMap.find(Green) != m_fieldMap.end();
64  if (found && (field_code & Blue))
65  found = m_fieldMap.find(Blue) != m_fieldMap.end();
66  if (found && (field_code & GpsTime))
67  found = m_fieldMap.find(GpsTime) != m_fieldMap.end();
68  if (found && (field_code & Infrared))
69  found = m_fieldMap.find(Infrared) != m_fieldMap.end();
70 
71  return found;
72 }
73 
75 {
76  ossim_uint32 field_code = 0;
77 
78  if (m_fieldMap.find(Intensity) != m_fieldMap.end())
79  field_code |= Intensity;
80  if (m_fieldMap.find(ReturnNumber) != m_fieldMap.end())
81  field_code |= ReturnNumber;
82  if (m_fieldMap.find(NumberOfReturns) != m_fieldMap.end())
83  field_code |= NumberOfReturns;
84  if (m_fieldMap.find(Red) != m_fieldMap.end())
85  field_code |= Red;
86  if (m_fieldMap.find(Green) != m_fieldMap.end())
87  field_code |= Green;
88  if (m_fieldMap.find(Blue) != m_fieldMap.end())
89  field_code |= Blue;
90  if (m_fieldMap.find(GpsTime) != m_fieldMap.end())
91  field_code |= GpsTime;
92  if (m_fieldMap.find(Infrared) != m_fieldMap.end())
93  field_code |= Infrared;
94 
95  return field_code;
96 }
97 
99 {
100  std::map<FIELD_CODES, ossim_float32>::const_iterator v = m_fieldMap.find(fc);
101  if (v == m_fieldMap.end())
102  return ossim::nan();
103  return v->second;
104 }
105 
107 {
108  m_fieldMap[fc] = value;
109 }
110 
111 
113 {
114  if (this == &pcr)
115  return *this;
116 
117  m_pointId = pcr.m_pointId;
118  m_position = pcr.m_position;
119  m_fieldMap = pcr.m_fieldMap;
120 
121  return *this;
122 }
123 
125 {
126  out << "ossimPointCloudRecord for pointId: " << p.m_pointId
127  << "\n Position: " << p.m_position << ends;
128 
129  std::map<ossimPointRecord::FIELD_CODES, ossim_float32>::const_iterator iter = p.m_fieldMap.begin();
130  while (iter != p.m_fieldMap.end())
131  {
132  switch (iter->first)
133  {
135  out << "\n Intensity: ";
136  break;
138  out << "\n ReturnNumber: ";
139  break;
141  out << "\n NumberOfReturns: ";
142  break;
144  out << "\n Red: ";
145  break;
147  out << "\n Green: ";
148  break;
150  out << "\n Blue: ";
151  break;
153  out << "\n GpsTime: ";
154  break;
156  out << "\n Infrared: ";
157  break;
158  default:
159  out << "\n Unidentified: ";
160  }
161  out << iter->second;
162  ++iter;
163  }
164  return out;
165 }
166 
168 {
169  m_pointId = 0;
170 }
171 
173 {
174  if ((m_pointId == 0) || m_fieldMap.empty() || m_position.hasNans())
175  return false;
176  return true;
177 }
178 
179 
~ossimPointRecord()
Creates a point record with fields set to null values.
float ossim_float32
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.
ossimPointRecord & operator=(const ossimPointRecord &pcr)
ossim_uint32 m_pointId
std::ostream & operator<<(std::ostream &out, const ossimPointRecord &p)
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.
ossimPointRecord(ossim_uint32 fields_code=0)
bool hasNans() const
Definition: ossimGpt.h:135
virtual ossim_uint32 getFieldCode() const
Returns mash-up of OR&#39;d codes of multiple fields being stored.
void setField(FIELD_CODES fc, ossim_float32 value)
void clear()
Initializes point to undefined state:
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
std::map< FIELD_CODES, ossim_float32 > m_fieldMap