OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimNitfExoptaTag.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 //
7 // Description: EXOPTA tag class definition
8 //
9 //----------------------------------------------------------------------------
10 // $Id$
12 #include <iomanip>
13 #include <iostream>
14 
16  : ossimNitfRegisteredTag(std::string("EXOPTA"), CEL_SIZE)
17 {
18  clearFields();
19 }
20 
22 {
23  clearFields();
25  in.read(m_meanGsd, MEAN_GSD_SIZE);
29  in.read(m_oblAng, OBL_ANG_SIZE);
30  in.read(m_rollAng, ROLL_ANG_SIZE);
31  in.read(m_primeId, PRIME_ID_SIZE);
32  in.read(m_primeBe, PRIME_BE_SIZE);
34  in.read(m_nSec, N_SEC_SIZE);
37  in.read(m_nSeg, N_SEG_SIZE);
38  in.read(m_maxLpSeg, MAX_LP_SEG_SIZE);
40  in.read(m_sunEl, SUN_EL_SIZE);
41  in.read(m_sunAz, SUN_AZ_SIZE);
42 }
43 
45 {
47  out.write(m_meanGsd, MEAN_GSD_SIZE);
51  out.write(m_oblAng, OBL_ANG_SIZE);
52  out.write(m_rollAng, ROLL_ANG_SIZE);
53  out.write(m_primeId, PRIME_ID_SIZE);
54  out.write(m_primeBe, PRIME_BE_SIZE);
56  out.write(m_nSec, N_SEC_SIZE);
59  out.write(m_nSeg, N_SEG_SIZE);
60  out.write(m_maxLpSeg, MAX_LP_SEG_SIZE);
62  out.write(m_sunEl, SUN_EL_SIZE);
63  out.write(m_sunAz, SUN_AZ_SIZE);
64 }
65 
67  const std::string& prefix )const
68 {
69  std::string pfx = prefix;
70  pfx += getTagName();
71  pfx += ".";
72  out << setiosflags(ios::left)
73  << pfx << std::setw(24) << "CETAG:" << getTagName() << "\n"
74  << pfx << std::setw(24) << "CEL:" << getTagLength() << "\n"
75  << pfx << std::setw(24) << "ANGLE_TO_NORTH:" << m_angleToNorth<< "\n"
76  << pfx << std::setw(24) << "DYNAMIC_RANGE:" << m_dynamicRange<< "\n"
77  << pfx << std::setw(24) << "OBL_ANG:" << m_oblAng<< "\n"
78  << pfx << std::setw(24) << "ROLL_ANG:" << m_rollAng<< "\n"
79  << pfx << std::setw(24) << "PRIME_ID:" << m_primeId<< "\n"
80  << pfx << std::setw(24) << "PRIME_BE:" << m_primeBe<< "\n"
81  << pfx << std::setw(24) << "N_SEC" << m_nSec<< "\n"
82  << pfx << std::setw(24) << "N_SEG:" << m_nSeg<< "\n"
83  << pfx << std::setw(24) << "MAX_LP_SEG:" << m_maxLpSeg<< "\n"
84  << pfx << std::setw(24) << "SUN_EL:" << m_sunEl<< "\n"
85  << pfx << std::setw(24) << "SUN_AZ:" << m_sunAz<< "\n";
86 
87  return out;
88 }
89 
91 {
92  memset(m_angleToNorth, '0', ANGLE_TO_NORTH_SIZE);
93  memset(m_meanGsd, '0', MEAN_GSD_SIZE);
94  m_meanGsd[3] = '.';
95  m_reserved1[0] = '1';
96  memset(m_dynamicRange, '0', DYNAMIC_RANGE_SIZE);
97  memset(m_reserved2, ' ', EXOPTA_RESERVED2_SIZE);
98  memset(m_oblAng, '0', OBL_ANG_SIZE);
99  m_oblAng[2] = '.';
100  memset(m_rollAng, '0',ROLL_ANG_SIZE);
101  m_rollAng[0]='+';
102  m_rollAng[3]='.';
103  memset(m_primeId, ' ', PRIME_ID_SIZE);
104  memset(m_primeBe, ' ', PRIME_BE_SIZE);
105  memset(m_reserved3, ' ', EXOPTA_RESERVED3_SIZE);
106  memset(m_nSec, '0', N_SEC_SIZE);
107  memset(m_reserved4, ' ', EXOPTA_RESERVED4_SIZE);
108  memset(m_reserved5, '0', EXOPTA_RESERVED5_SIZE);
109  m_reserved5[6] = '1';
110  memset(m_nSeg, '0', N_SEG_SIZE);
111  m_nSeg[2] = '1';
112  memset(m_maxLpSeg, '0', MAX_LP_SEG_SIZE);
113  m_maxLpSeg[5] = '1';
114  memset(m_reserved6, ' ', EXOPTA_RESERVED6_SIZE);
115  memset(m_sunEl, '0', SUN_EL_SIZE);
116  m_sunEl[0] = '+';
117  m_sunEl[3] = '.';
118  memset(m_sunAz, '0', SUN_AZ_SIZE);
119  m_sunAz[3] = '.';
120 
122  m_meanGsd[MEAN_GSD_SIZE]='\0';
126  m_oblAng[OBL_ANG_SIZE]='\0';
127  m_rollAng[ROLL_ANG_SIZE]='\0';
128  m_primeId[PRIME_ID_SIZE]='\0';
129  m_primeBe[PRIME_BE_SIZE]='\0';
131  m_nSec[N_SEC_SIZE]='\0';
134  m_nSeg[N_SEG_SIZE]='\0';
137  m_sunEl[SUN_EL_SIZE]='\0';
138  m_sunAz[SUN_AZ_SIZE]='\0';
139 }
virtual const std::string & getTagName() const
This will return the name of the registered tag for this user defined header.
virtual void clearFields()
virtual void parseStream(std::istream &in)
char m_sunEl[SUN_EL_SIZE+1]
Field: SUN_EL.
char m_angleToNorth[ANGLE_TO_NORTH_SIZE+1]
Field: ANGLE_TO_NORTH.
virtual void writeStream(std::ostream &out)
char m_meanGsd[MEAN_GSD_SIZE+1]
Field: MEAN_GSD.
char m_nSeg[N_SEG_SIZE+1]
Field: N_SEG.
char m_reserved4[EXOPTA_RESERVED4_SIZE+1]
virtual ossim_uint32 getTagLength() const
Returns the length in bytes of the tag from the CEL or REL field.
char m_dynamicRange[DYNAMIC_RANGE_SIZE+1]
Field: DYNAMIC_RANGE.
char m_oblAng[OBL_ANG_SIZE+1]
Field: OBL_ANG.
char m_primeId[PRIME_ID_SIZE+1]
Field: PRIME_ID.
char m_reserved3[EXOPTA_RESERVED3_SIZE+1]
virtual std::ostream & print(std::ostream &out, const std::string &prefix=std::string()) const
Pure virtual print method that outputs a key/value type format adding prefix to keys.
char m_reserved2[EXOPTA_RESERVED2_SIZE+1]
char m_reserved6[EXOPTA_RESERVED6_SIZE+1]
char m_sunAz[SUN_AZ_SIZE+1]
Field: SUN_AZ.
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
char m_rollAng[ROLL_ANG_SIZE+1]
Field: ROLL_ANG.
char m_maxLpSeg[MAX_LP_SEG_SIZE+1]
Field: MAX_LP_SEG.
char m_primeBe[PRIME_BE_SIZE+1]
Field: PRIME_BE.
char m_reserved5[EXOPTA_RESERVED5_SIZE+1]
char m_nSec[N_SEC_SIZE+1]
Field: N_SEC.
char m_reserved1[EXOPTA_RESERVED1_SIZE+1]
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23