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

#include <ossimPpjFrameSensorFile.h>

Inheritance diagram for ossimPpjFrameSensorFile:
ossimObject ossimReferenced

Classes

class  PointMap
 

Public Types

enum  PointType { UNKNOWN_POINT_TYPE = 0, BASIC_POINT_TYPE = 1 }
 
typedef std::vector< PointMapPointMapList
 
typedef std::vector< ossim_float64DoubleArrayType
 

Public Member Functions

 ossimPpjFrameSensorFile ()
 
virtual bool readFile (const ossimFilename &file)
 
virtual bool readStream (std::istream &is)
 
const ossimStringgetBaseName () const
 
ossim_int64 getImageNumber () const
 
const ossimDptgetPrincipalPoint () const
 
const ossimGptgetPlatformPosition () const
 
const NEWMAT::Matrix & getExtrinsic () const
 
const NEWMAT::Matrix & getIntrinsic () const
 
const ossimDptgetImageSize () const
 
const DoubleArrayTypegetRadialDistortion () const
 
const DoubleArrayTypegetTangentialDistortion () const
 
double getAverageProjectedHeight () const
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
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 saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
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

void reset ()
 
 ossimPpjFrameSensorFile (const ossimPpjFrameSensorFile &src)
 
ossimPpjFrameSensorFileoperator= (const ossimPpjFrameSensorFile &src)
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

ossimGpt m_platformPosition
 
ossimFilename m_filename
 
ossimString m_fileBaseName
 
ossim_int64 m_imageNumber
 
ossimRefPtr< ossimXmlDocumentm_ppjXml
 
ossimDpt m_imageSize
 
ossimDpt m_principalPoint
 
NEWMAT::Matrix m_extrinsicMatrix
 
NEWMAT::Matrix m_intrinsicMatrix
 
DoubleArrayType m_radialDistortion
 
DoubleArrayType m_tangentialDistortion
 
PointMapList m_pointMapList
 
double m_averageProjectedHeight
 

Detailed Description

Definition at line 14 of file ossimPpjFrameSensorFile.h.

Member Typedef Documentation

◆ DoubleArrayType

Definition at line 30 of file ossimPpjFrameSensorFile.h.

◆ PointMapList

Definition at line 29 of file ossimPpjFrameSensorFile.h.

Member Enumeration Documentation

◆ PointType

Enumerator
UNKNOWN_POINT_TYPE 
BASIC_POINT_TYPE 

Definition at line 17 of file ossimPpjFrameSensorFile.h.

Constructor & Destructor Documentation

◆ ossimPpjFrameSensorFile() [1/2]

ossimPpjFrameSensorFile::ossimPpjFrameSensorFile ( )

Definition at line 7 of file ossimPpjFrameSensorFile.cpp.

References reset().

◆ ossimPpjFrameSensorFile() [2/2]

ossimPpjFrameSensorFile::ossimPpjFrameSensorFile ( const ossimPpjFrameSensorFile src)
protected

Definition at line 284 of file ossimPpjFrameSensorFile.cpp.

285 {
286 }

Member Function Documentation

◆ getAverageProjectedHeight()

double ossimPpjFrameSensorFile::getAverageProjectedHeight ( ) const

Definition at line 59 of file ossimPpjFrameSensorFile.cpp.

References m_averageProjectedHeight.

60 {
62 }

◆ getBaseName()

const ossimString & ossimPpjFrameSensorFile::getBaseName ( ) const

Definition at line 15 of file ossimPpjFrameSensorFile.cpp.

References m_fileBaseName.

16 {
17  return m_fileBaseName;
18 }

◆ getExtrinsic()

const NEWMAT::Matrix & ossimPpjFrameSensorFile::getExtrinsic ( ) const

Definition at line 34 of file ossimPpjFrameSensorFile.cpp.

References m_extrinsicMatrix.

35 {
36  return m_extrinsicMatrix;
37 }

◆ getImageNumber()

ossim_int64 ossimPpjFrameSensorFile::getImageNumber ( ) const

Definition at line 20 of file ossimPpjFrameSensorFile.cpp.

References m_imageNumber.

21 {
22  return m_imageNumber;
23 }

◆ getImageSize()

const ossimDpt & ossimPpjFrameSensorFile::getImageSize ( ) const

Definition at line 44 of file ossimPpjFrameSensorFile.cpp.

References m_imageSize.

45 {
46  return m_imageSize;
47 }

◆ getIntrinsic()

const NEWMAT::Matrix & ossimPpjFrameSensorFile::getIntrinsic ( ) const

Definition at line 39 of file ossimPpjFrameSensorFile.cpp.

References m_intrinsicMatrix.

40 {
41  return m_intrinsicMatrix;
42 }

◆ getPlatformPosition()

const ossimGpt & ossimPpjFrameSensorFile::getPlatformPosition ( ) const

Definition at line 29 of file ossimPpjFrameSensorFile.cpp.

References m_platformPosition.

30 {
31  return m_platformPosition;
32 }

◆ getPrincipalPoint()

const ossimDpt & ossimPpjFrameSensorFile::getPrincipalPoint ( ) const

Definition at line 25 of file ossimPpjFrameSensorFile.cpp.

References m_principalPoint.

26 {
27  return m_principalPoint;
28 }

◆ getRadialDistortion()

const ossimPpjFrameSensorFile::DoubleArrayType & ossimPpjFrameSensorFile::getRadialDistortion ( ) const

Definition at line 49 of file ossimPpjFrameSensorFile.cpp.

References m_radialDistortion.

50 {
51  return m_radialDistortion;
52 }

◆ getTangentialDistortion()

const ossimPpjFrameSensorFile::DoubleArrayType & ossimPpjFrameSensorFile::getTangentialDistortion ( ) const

Definition at line 54 of file ossimPpjFrameSensorFile.cpp.

References m_tangentialDistortion.

55 {
57 }
DoubleArrayType m_tangentialDistortion

◆ operator=()

ossimPpjFrameSensorFile & ossimPpjFrameSensorFile::operator= ( const ossimPpjFrameSensorFile src)
protected

Definition at line 288 of file ossimPpjFrameSensorFile.cpp.

290 {
291  return *this;
292 }

◆ readFile()

bool ossimPpjFrameSensorFile::readFile ( const ossimFilename file)
virtual

Definition at line 88 of file ossimPpjFrameSensorFile.cpp.

References ossimString::c_str(), and readStream().

89 {
90  bool result = false;
91  std::ifstream in(file.c_str(), std::ios::in|std::ios::binary);
92  if(in.good()&&readStream(in))
93  {
94 
95  result = true;
96  }
97 
98  return result;
99 }
std::basic_ifstream< char > ifstream
Class for char input file streams.
Definition: ossimIosFwd.h:44
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 readStream(std::istream &is)

◆ readStream()

bool ossimPpjFrameSensorFile::readStream ( std::istream &  is)
virtual

Definition at line 101 of file ossimPpjFrameSensorFile.cpp.

References BASIC_POINT_TYPE, ossimXmlNode::findFirstNode(), ossimXmlNode::getChildNodes(), ossimXmlDocument::getRoot(), ossimXmlNode::getTag(), ossimXmlNode::getText(), m_averageProjectedHeight, m_extrinsicMatrix, m_fileBaseName, m_imageNumber, m_imageSize, m_intrinsicMatrix, ossimPpjFrameSensorFile::PointMap::m_pixelPoint, m_platformPosition, ossimPpjFrameSensorFile::PointMap::m_point, m_pointMapList, m_ppjXml, m_principalPoint, ossimPpjFrameSensorFile::PointMap::m_type, ossimXmlDocument::read(), reset(), ossimString::toDouble(), ossimString::toInt64(), ossimRefPtr< T >::valid(), ossimDpt3d::x, ossimDpt::x, ossimDpt3d::y, ossimDpt::y, and ossimDpt3d::z.

Referenced by readFile().

102 {
103  reset();
105  if(m_ppjXml->read(is))
106  {
108  if(root.valid()&&(root->getTag() == "pearlProjectionFile"))
109  {
110  ossimRefPtr<ossimXmlNode> image = root->findFirstNode("image");
111  if(image.valid())
112  {
113  ossimRefPtr<ossimXmlNode> sensorData = image->findFirstNode("sensorData");
114  ossimRefPtr<ossimXmlNode> namingData = image->findFirstNode("namingData");
115  ossimRefPtr<ossimXmlNode> projectionData = image->findFirstNode("projectionData");
116  if(namingData.valid())
117  {
118  ossimRefPtr<ossimXmlNode> fileBaseName = namingData->findFirstNode("fileBaseName");
119  ossimRefPtr<ossimXmlNode> imageNumber = namingData->findFirstNode("imageNumber");
120  if(fileBaseName.valid())
121  {
122  m_fileBaseName = fileBaseName->getText();
123  }
124  if(imageNumber.valid())
125  {
126  m_imageNumber = imageNumber->getText().toInt64();
127  }
128  }
129  if(projectionData.valid())
130  {
131  const ossimXmlNode::ChildListType& childNodes = projectionData->getChildNodes();
132  ossim_uint32 nNodes = childNodes.size();
133  ossim_uint32 idx = 0;
134  ossim_uint32 averageHeightDivisor = 0;
135  for(idx = 0; idx < nNodes; ++idx)
136  {
137  if(childNodes[idx]->getAttributeValue("type").downcase() == "basic")
138  {
139  ossimRefPtr<ossimXmlNode> pixelPointX = childNodes[idx]->findFirstNode("pixelPointX");
140  ossimRefPtr<ossimXmlNode> pixelPointY = childNodes[idx]->findFirstNode("pixelPointY");
141  ossimRefPtr<ossimXmlNode> ecefX = childNodes[idx]->findFirstNode("ecefX");
142  ossimRefPtr<ossimXmlNode> ecefY = childNodes[idx]->findFirstNode("ecefY");
143  ossimRefPtr<ossimXmlNode> ecefZ = childNodes[idx]->findFirstNode("ecefZ");
144 
145  if(pixelPointX.valid()&&pixelPointY.valid()&ecefX.valid()&&ecefY.valid()&&ecefZ.valid())
146  {
147  PointMap pointMap;
148  pointMap.m_type = BASIC_POINT_TYPE;
149  pointMap.m_point = ossimDpt3d(ecefX->getText().toDouble(), ecefY->getText().toDouble(), ecefZ->getText().toDouble());
150  pointMap.m_pixelPoint = ossimDpt(pixelPointX->getText().toDouble(),pixelPointY->getText().toDouble());
151 
152  ossimGpt gpt(ossimEcefPoint(pointMap.m_point.x, pointMap.m_point.y, pointMap.m_point.z));
153  m_averageProjectedHeight += gpt.height();
154  ++averageHeightDivisor;
155  m_pointMapList.push_back(pointMap);
156  }
157  }
158  }
159  if(averageHeightDivisor > 0) m_averageProjectedHeight /= static_cast<double>(averageHeightDivisor);
160  }
161  if(sensorData.valid())
162  {
163  ossimRefPtr<ossimXmlNode> sensorSize = sensorData->findFirstNode("sensorSize");
164  ossimRefPtr<ossimXmlNode> cameraIntrinsic = sensorData->findFirstNode("cameraIntrinsic");
165  ossimRefPtr<ossimXmlNode> cameraExtrinsic = sensorData->findFirstNode("cameraExtrinsic");
166  if(sensorSize.valid())
167  {
168  ossimRefPtr<ossimXmlNode> width = sensorSize->findFirstNode("SensorWidth");
169  ossimRefPtr<ossimXmlNode> height = sensorSize->findFirstNode("SensorHeight");
170  if(width.valid()&&height.valid())
171  {
172  m_imageSize.x = width->getText().toDouble();
173  m_imageSize.y = height->getText().toDouble();
174  }
175  else
176  {
177  m_ppjXml = 0;
178  }
179  }
180  else
181  {
182  m_ppjXml = 0;
183  }
184  if(m_ppjXml.valid()&&cameraExtrinsic.valid())
185  {
186  if(cameraExtrinsic->getChildNodes().size() == 4)
187  {
188  m_extrinsicMatrix = NEWMAT::Matrix(4,4);
189  std::vector<ossimString> inRow1 = cameraExtrinsic->getChildNodes()[0]->getText().split(" ");
190  std::vector<ossimString> inRow2 = cameraExtrinsic->getChildNodes()[1]->getText().split(" ");
191  std::vector<ossimString> inRow3 = cameraExtrinsic->getChildNodes()[2]->getText().split(" ");
192  std::vector<ossimString> inRow4 = cameraExtrinsic->getChildNodes()[3]->getText().split(" ");
193 
194  if((inRow1.size() ==4)&&
195  (inRow2.size() ==4)&&
196  (inRow3.size() ==4)&&
197  (inRow4.size() ==4))
198  {
199  m_extrinsicMatrix << inRow1[0].toDouble() << inRow1[1].toDouble() << inRow1[2].toDouble()
200  << inRow1[3].toDouble()
201  << inRow2[0].toDouble() << inRow2[1].toDouble() << inRow2[2].toDouble()
202  << inRow2[3].toDouble()
203  << inRow3[0].toDouble() << inRow3[1].toDouble() << inRow3[2].toDouble()
204  << inRow3[3].toDouble()
205  << inRow4[0].toDouble() << inRow4[1].toDouble() << inRow4[2].toDouble()
206  << inRow4[3].toDouble();
207  NEWMAT::ColumnVector v(4);
208  v[0] = v[1] = v[2] = 0.0;
209  v[3] = 1.0;
210  NEWMAT::ColumnVector result = m_extrinsicMatrix*v;
211  m_platformPosition = ossimEcefPoint(result[0], result[1], result[2]);
212  //m_platformPosition;
213  }
214  else
215  {
216  m_ppjXml = 0;
217  }
218 
219  } // end if(cameraExtrinsic->getChildNodes().size() == 4)
220  else
221  {
222  m_ppjXml = 0;
223  }
224 
225  if(m_ppjXml.valid())
226  {
227  if(cameraIntrinsic.valid())
228  {
229  m_intrinsicMatrix = NEWMAT::Matrix(3,3);
230  std::vector<ossimString> inRow1 = cameraIntrinsic->getChildNodes()[0]->getText().split(" ");
231  std::vector<ossimString> inRow2 = cameraIntrinsic->getChildNodes()[1]->getText().split(" ");
232  std::vector<ossimString> inRow3 = cameraIntrinsic->getChildNodes()[2]->getText().split(" ");
233  if((inRow1.size() ==3)&&
234  (inRow2.size() ==3)&&
235  (inRow3.size() ==3))
236  {
237  m_principalPoint.x = inRow1[2].toDouble();
238  m_principalPoint.y = inRow2[2].toDouble();
239  m_intrinsicMatrix << inRow1[0].toDouble() << inRow1[1].toDouble() << m_principalPoint.x
240  << inRow2[0].toDouble() << inRow2[1].toDouble() << m_principalPoint.y
241  << inRow3[0].toDouble() << inRow3[1].toDouble() << inRow3[2].toDouble();
242  }
243  else
244  {
245  m_ppjXml = 0;
246  }
247  } // end if(cameraIntrinsic .....)
248  else
249  {
250  m_ppjXml = 0;
251  }
252  } // end if m_ppjXml ...
253  } // end if(m_ppjXml.valid()&&cameraExtrinsic.valid())
254  else
255  {
256  m_ppjXml = 0;
257  }
258  }
259  else
260  {
261  m_ppjXml = 0;
262  }
263  }
264  else
265  {
266  m_ppjXml = 0;
267  }
268  }
269  else
270  {
271  m_ppjXml = 0;
272  }
273  }
274  else
275  {
276  m_ppjXml = 0;
277  }
278 
279 
280  return m_ppjXml.valid();
281 }
ossimRefPtr< ossimXmlDocument > m_ppjXml
bool valid() const
Definition: ossimRefPtr.h:75
const ossimXmlNode::ChildListType & getChildNodes() const
ossimString const & getTag() const
Definition: ossimXmlNode.h:53
double y
Definition: ossimDpt.h:165
const ossimRefPtr< ossimXmlNode > & findFirstNode(const ossimString &rel_xpath) const
std::vector< ossimRefPtr< ossimXmlNode > > ChildListType
Definition: ossimXmlNode.h:30
const ossimString & getText() const
Definition: ossimXmlNode.h:92
unsigned int ossim_uint32
double toDouble() const
double x
Definition: ossimDpt.h:164
bool read(std::istream &in)
ossim_int64 toInt64() const
ossimRefPtr< ossimXmlNode > getRoot()

◆ reset()

void ossimPpjFrameSensorFile::reset ( void  )
protected

Definition at line 64 of file ossimPpjFrameSensorFile.cpp.

References m_averageProjectedHeight, m_extrinsicMatrix, m_fileBaseName, m_imageNumber, m_imageSize, m_intrinsicMatrix, m_platformPosition, m_pointMapList, m_ppjXml, m_principalPoint, m_radialDistortion, m_tangentialDistortion, and ossimDpt::makeNan().

Referenced by ossimPpjFrameSensorFile(), and readStream().

65 {
66  m_ppjXml = 0;
67  m_principalPoint = ossimDpt(0.0,0.0);
68  m_platformPosition = ossimGpt(0.0,0.0);
69  m_fileBaseName = "";
70  m_imageNumber = -1;
71  m_radialDistortion[0] = 0.0;
72  m_radialDistortion[1] = 0.0;
73  m_tangentialDistortion[0] = 0.0;
74  m_tangentialDistortion[1] = 0.0;
75  m_intrinsicMatrix = NEWMAT::Matrix(3,3);
76  m_extrinsicMatrix = NEWMAT::Matrix(4,4);
77  std::fill(m_intrinsicMatrix.Store(), m_intrinsicMatrix.Store() + 9, 0.0);
78  std::fill(m_extrinsicMatrix.Store(), m_extrinsicMatrix.Store() + 16, 0.0);
79  m_extrinsicMatrix[0][0] = 1.0;
80  m_extrinsicMatrix[1][1] = 1.0;
81  m_extrinsicMatrix[2][2] = 1.0;
82  m_extrinsicMatrix[3][3] = 1.0;
85  m_pointMapList.clear();
86 }
ossimRefPtr< ossimXmlDocument > m_ppjXml
DoubleArrayType m_tangentialDistortion
void makeNan()
Definition: ossimDpt.h:65

Member Data Documentation

◆ m_averageProjectedHeight

double ossimPpjFrameSensorFile::m_averageProjectedHeight
protected

Definition at line 65 of file ossimPpjFrameSensorFile.h.

Referenced by getAverageProjectedHeight(), readStream(), and reset().

◆ m_extrinsicMatrix

NEWMAT::Matrix ossimPpjFrameSensorFile::m_extrinsicMatrix
protected

Definition at line 59 of file ossimPpjFrameSensorFile.h.

Referenced by getExtrinsic(), readStream(), and reset().

◆ m_fileBaseName

ossimString ossimPpjFrameSensorFile::m_fileBaseName
protected

Definition at line 54 of file ossimPpjFrameSensorFile.h.

Referenced by getBaseName(), readStream(), and reset().

◆ m_filename

ossimFilename ossimPpjFrameSensorFile::m_filename
protected

Definition at line 53 of file ossimPpjFrameSensorFile.h.

◆ m_imageNumber

ossim_int64 ossimPpjFrameSensorFile::m_imageNumber
protected

Definition at line 55 of file ossimPpjFrameSensorFile.h.

Referenced by getImageNumber(), readStream(), and reset().

◆ m_imageSize

ossimDpt ossimPpjFrameSensorFile::m_imageSize
protected

Definition at line 57 of file ossimPpjFrameSensorFile.h.

Referenced by getImageSize(), readStream(), and reset().

◆ m_intrinsicMatrix

NEWMAT::Matrix ossimPpjFrameSensorFile::m_intrinsicMatrix
protected

Definition at line 60 of file ossimPpjFrameSensorFile.h.

Referenced by getIntrinsic(), readStream(), and reset().

◆ m_platformPosition

ossimGpt ossimPpjFrameSensorFile::m_platformPosition
protected

Definition at line 52 of file ossimPpjFrameSensorFile.h.

Referenced by getPlatformPosition(), readStream(), and reset().

◆ m_pointMapList

PointMapList ossimPpjFrameSensorFile::m_pointMapList
protected

Definition at line 64 of file ossimPpjFrameSensorFile.h.

Referenced by readStream(), and reset().

◆ m_ppjXml

ossimRefPtr<ossimXmlDocument> ossimPpjFrameSensorFile::m_ppjXml
protected

Definition at line 56 of file ossimPpjFrameSensorFile.h.

Referenced by readStream(), and reset().

◆ m_principalPoint

ossimDpt ossimPpjFrameSensorFile::m_principalPoint
protected

Definition at line 58 of file ossimPpjFrameSensorFile.h.

Referenced by getPrincipalPoint(), readStream(), and reset().

◆ m_radialDistortion

DoubleArrayType ossimPpjFrameSensorFile::m_radialDistortion
protected

Definition at line 61 of file ossimPpjFrameSensorFile.h.

Referenced by getRadialDistortion(), and reset().

◆ m_tangentialDistortion

DoubleArrayType ossimPpjFrameSensorFile::m_tangentialDistortion
protected

Definition at line 62 of file ossimPpjFrameSensorFile.h.

Referenced by getTangentialDistortion(), and reset().


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