OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
ossimplugins::ErsSarLeader Class Reference

This class is able to read the Leader file of the ErsSar file structure. More...

#include <ErsSarLeader.h>

Public Member Functions

 ErsSarLeader ()
 Constructor. More...
 
virtual ~ErsSarLeader ()
 Destructor. More...
 
 ErsSarLeader (const ErsSarLeader &rhs)
 Copy constructor. More...
 
ErsSarLeaderoperator= (const ErsSarLeader &rhs)
 Copy operator. More...
 
void ClearRecords ()
 Remove all the previous records from the ErsSarLeader. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Method to save object state to a keyword list. More...
 
const ErsSarFacilityDataget_ErsSarFacilityData () const
 
const ErsSarPlatformPositionDataget_ErsSarPlatformPositionData () const
 
const ErsSarMapProjectionDataget_ErsSarMapProjectionData () const
 
const ErsSarDataSetSummaryget_ErsSarDataSetSummary () const
 
const ErsSarFileDescriptorget_ErsSarFileDescriptor () const
 

Protected Attributes

std::map< int, ErsSarRecord * > theRecords
 

Static Protected Attributes

static const int ErsSarFacilityDataID = 5
 
static const int ErsSarPlatformPositionDataID = 4
 
static const int ErsSarMapProjectionDataID = 3
 
static const int ErsSarDataSetSummaryID = 2
 
static const int ErsSarFileDescriptorID = 1
 

Friends

std::ostream & operator<< (std::ostream &os, const ErsSarLeader &data)
 This function write the ErsSarLeader in a stream. More...
 
std::istream & operator>> (std::istream &is, ErsSarLeader &data)
 This function read a ErsSarLeader from a stream. More...
 

Detailed Description

This class is able to read the Leader file of the ErsSar file structure.

Definition at line 40 of file ErsSarLeader.h.

Constructor & Destructor Documentation

◆ ErsSarLeader() [1/2]

ossimplugins::ErsSarLeader::ErsSarLeader ( )

Constructor.

Definition at line 39 of file ErsSarLeader.cpp.

40 {
41 }

◆ ~ErsSarLeader()

ossimplugins::ErsSarLeader::~ErsSarLeader ( )
virtual

Destructor.

Definition at line 43 of file ErsSarLeader.cpp.

References ClearRecords().

44 {
45  ClearRecords();
46 }
void ClearRecords()
Remove all the previous records from the ErsSarLeader.

◆ ErsSarLeader() [2/2]

ossimplugins::ErsSarLeader::ErsSarLeader ( const ErsSarLeader rhs)

Copy constructor.

Definition at line 95 of file ErsSarLeader.cpp.

References theRecords.

96 {
97  std::map<int, ErsSarRecord*>::const_iterator it = rhs.theRecords.begin();
98  while (it != rhs.theRecords.end())
99  {
100  theRecords[(*it).first] = (*it).second->Clone();
101  ++it;
102  }
103 }
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

Member Function Documentation

◆ ClearRecords()

void ossimplugins::ErsSarLeader::ClearRecords ( )

Remove all the previous records from the ErsSarLeader.

Definition at line 118 of file ErsSarLeader.cpp.

References theRecords.

Referenced by operator=(), ossimplugins::operator>>(), and ~ErsSarLeader().

119 {
120  std::map<int, ErsSarRecord*>::const_iterator it = theRecords.begin();
121  while (it != theRecords.end())
122  {
123  delete(*it).second;
124  ++it;
125  }
126  theRecords.clear();
127 }
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

◆ get_ErsSarDataSetSummary()

const ErsSarDataSetSummary * ossimplugins::ErsSarLeader::get_ErsSarDataSetSummary ( ) const

Definition at line 281 of file ErsSarLeader.cpp.

References ErsSarDataSetSummaryID, and theRecords.

Referenced by saveState().

282 {
283  return dynamic_cast<const ErsSarDataSetSummary*>(theRecords.find(ErsSarDataSetSummaryID)->second);
284 }
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96
static const int ErsSarDataSetSummaryID
Definition: ErsSarLeader.h:101

◆ get_ErsSarFacilityData()

const ErsSarFacilityData * ossimplugins::ErsSarLeader::get_ErsSarFacilityData ( ) const

Definition at line 268 of file ErsSarLeader.cpp.

References ErsSarFacilityDataID, and theRecords.

Referenced by saveState().

269 {
270  return dynamic_cast<const ErsSarFacilityData*>(theRecords.find(ErsSarFacilityDataID)->second);
271 }
static const int ErsSarFacilityDataID
Definition: ErsSarLeader.h:98
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

◆ get_ErsSarFileDescriptor()

const ErsSarFileDescriptor * ossimplugins::ErsSarLeader::get_ErsSarFileDescriptor ( ) const

Definition at line 286 of file ErsSarLeader.cpp.

References ErsSarFileDescriptorID, and theRecords.

Referenced by saveState().

287 {
288  return dynamic_cast<const ErsSarFileDescriptor*>(theRecords.find(ErsSarFileDescriptorID)->second);
289 }
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96
static const int ErsSarFileDescriptorID
Definition: ErsSarLeader.h:102

◆ get_ErsSarMapProjectionData()

const ErsSarMapProjectionData * ossimplugins::ErsSarLeader::get_ErsSarMapProjectionData ( ) const

Definition at line 276 of file ErsSarLeader.cpp.

References ErsSarMapProjectionDataID, and theRecords.

Referenced by saveState().

277 {
278  return dynamic_cast<const ErsSarMapProjectionData*>(theRecords.find(ErsSarMapProjectionDataID)->second);
279 }
static const int ErsSarMapProjectionDataID
Definition: ErsSarLeader.h:100
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

◆ get_ErsSarPlatformPositionData()

const ErsSarPlatformPositionData * ossimplugins::ErsSarLeader::get_ErsSarPlatformPositionData ( ) const

Definition at line 272 of file ErsSarLeader.cpp.

References ErsSarPlatformPositionDataID, and theRecords.

Referenced by saveState().

273 {
274  return dynamic_cast<const ErsSarPlatformPositionData*>(theRecords.find(ErsSarPlatformPositionDataID)->second);
275 }
static const int ErsSarPlatformPositionDataID
Definition: ErsSarLeader.h:99
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

◆ operator=()

ErsSarLeader & ossimplugins::ErsSarLeader::operator= ( const ErsSarLeader rhs)

Copy operator.

Definition at line 105 of file ErsSarLeader.cpp.

References ClearRecords(), and theRecords.

106 {
107  ClearRecords();
108  std::map<int, ErsSarRecord*>::const_iterator it = rhs.theRecords.begin();
109  while (it != rhs.theRecords.end())
110  {
111  theRecords[(*it).first] = (*it).second->Clone();
112  ++it;
113  }
114 
115  return *this;
116 }
void ClearRecords()
Remove all the previous records from the ErsSarLeader.
std::map< int, ErsSarRecord * > theRecords
Definition: ErsSarLeader.h:96

◆ saveState()

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

Method to save object state to a keyword list.

Parameters
kwlKeyword list to save to.
prefixadded to keys when saved.
Returns
true on success, false on error.

Definition at line 129 of file ErsSarLeader.cpp.

References ossimKeywordlist::add(), ossimplugins::ErsSarFacilityData::get_coef_ground_range_1(), ossimplugins::ErsSarFacilityData::get_coef_ground_range_2(), ossimplugins::ErsSarFacilityData::get_coef_ground_range_3(), ossimplugins::ErsSarFacilityData::get_coef_ground_range_4(), ossimplugins::ErsSarPlatformPositionData::get_data_int(), ossimplugins::ErsSarPlatformPositionData::get_day(), ossimplugins::ErsSarDataSetSummary::get_ellip_maj(), ossimplugins::ErsSarDataSetSummary::get_ellip_min(), get_ErsSarDataSetSummary(), get_ErsSarFacilityData(), get_ErsSarFileDescriptor(), get_ErsSarMapProjectionData(), get_ErsSarPlatformPositionData(), ossimplugins::ErsSarDataSetSummary::get_fa(), ossimplugins::ErsSarFileDescriptor::get_file_name(), ossimplugins::ErsSarMapProjectionData::get_first_line_first_pixel_lat(), ossimplugins::ErsSarMapProjectionData::get_first_line_first_pixel_lon(), ossimplugins::ErsSarMapProjectionData::get_first_line_last_pixel_lat(), ossimplugins::ErsSarMapProjectionData::get_first_line_last_pixel_lon(), ossimplugins::ErsSarDataSetSummary::get_fr(), ossimplugins::ErsSarPlatformPositionData::get_gmt_day(), ossimplugins::ErsSarPlatformPositionData::get_gmt_sec(), ossimplugins::ErsSarPlatformPositionData::get_hr_angle(), ossimplugins::ErsSarDataSetSummary::get_inp_sctim(), ossimplugins::ErsSarMapProjectionData::get_last_line_first_pixel_lat(), ossimplugins::ErsSarMapProjectionData::get_last_line_first_pixel_lon(), ossimplugins::ErsSarMapProjectionData::get_last_line_last_pixel_lat(), ossimplugins::ErsSarMapProjectionData::get_last_line_last_pixel_lon(), ossimplugins::ErsSarDataSetSummary::get_line_spacing(), ossimplugins::ErsSarMapProjectionData::get_map_proj_des(), ossimplugins::ErsSarPlatformPositionData::get_month(), ossimplugins::ErsSarDataSetSummary::get_n_azilok(), ossimplugins::ErsSarDataSetSummary::get_n_rnglok(), ossimplugins::ErsSarPlatformPositionData::get_ndata(), ossimplugins::ErsSarMapProjectionData::get_num_lines(), ossimplugins::ErsSarMapProjectionData::get_num_pix_in_line(), ossimplugins::ErsSarDataSetSummary::get_pix_spacing(), ossimplugins::ErsSarPlatformPositionData::get_pos_vect(), ossimplugins::ErsSarDataSetSummary::get_sc_lin(), ossimplugins::ErsSarDataSetSummary::get_sc_pix(), ossimplugins::ErsSarDataSetSummary::get_time_dir_lin(), ossimplugins::ErsSarDataSetSummary::get_time_dir_pix(), ossimplugins::ErsSarDataSetSummary::get_wave_length(), ossimplugins::ErsSarPlatformPositionData::get_year(), ossimplugins::ErsSarDataSetSummary::get_zero_dop_range_time_c_pixel(), ossimplugins::ErsSarDataSetSummary::get_zero_dop_range_time_f_pixel(), ossimplugins::ErsSarDataSetSummary::get_zero_dop_range_time_l_pixel(), ossimNotify(), ossimNotifyLevel_DEBUG, and ossimKeywordNames::TYPE_KW.

Referenced by ossimplugins::ossimErsSarModel::saveState().

131 {
132 
133  static const char MODULE[] = "ErsSarLeader::saveState";
134 
135  if (traceDebug())
136  {
137  ossimNotify(ossimNotifyLevel_DEBUG) << MODULE << " entered...\n";
138  }
139 
140  bool result = true;
141 
142  char name[64];
143 
144  kwl.add(prefix, ossimKeywordNames::TYPE_KW, "ossimErsSarModel", true);
145  /*
146  * Adding metadata necessary to the sensor model in the keywordlist
147  */
148  const ErsSarFileDescriptor *leaderfiledesc = get_ErsSarFileDescriptor();
149  if (leaderfiledesc != NULL)
150  {
151  kwl.add(prefix, "filename", leaderfiledesc->get_file_name().c_str(), true);
152  }
153  else
154  {
155  result = false;
156  }
157 
158  /*
159  * Adding metadata necessary to the sensor model in the keywordlist
160  */
161  const ErsSarDataSetSummary *datasetSummary = get_ErsSarDataSetSummary();
162  if ((datasetSummary != NULL) && (result == true))
163  {
164  kwl.add(prefix, "inp_sctim", (datasetSummary->get_inp_sctim()).c_str(), true);
165  kwl.add(prefix, "ellip_maj", datasetSummary->get_ellip_maj(), true);
166  kwl.add(prefix, "ellip_min", datasetSummary->get_ellip_min(), true);
167  kwl.add(prefix, "sc_lin", datasetSummary->get_sc_lin(), true);
168  kwl.add(prefix, "sc_pix", datasetSummary->get_sc_pix(), true);
169  kwl.add(prefix, "wave_length", datasetSummary->get_wave_length(), true);
170  kwl.add(prefix, "fr", datasetSummary->get_fr(), true);
171  kwl.add(prefix, "fa", datasetSummary->get_fa(), true);
172  kwl.add(prefix, "time_dir_pix", (datasetSummary->get_time_dir_pix()).c_str(), true);
173  kwl.add(prefix, "time_dir_lin", (datasetSummary->get_time_dir_lin()).c_str(), true);
174  kwl.add(prefix, "line_spacing", datasetSummary->get_line_spacing(), true);
175  kwl.add(prefix, "pix_spacing", datasetSummary->get_pix_spacing(), true);
176  kwl.add(prefix, "nlooks_az", datasetSummary->get_n_azilok(), true);
177  kwl.add(prefix, "n_rnglok", datasetSummary->get_n_rnglok(), true);
178  kwl.add(prefix, "zero_dop_range_time_f_pixel", datasetSummary->get_zero_dop_range_time_f_pixel(), true);
179  kwl.add(prefix, "zero_dop_range_time_c_pixel", datasetSummary->get_zero_dop_range_time_c_pixel(), true);
180  kwl.add(prefix, "zero_dop_range_time_l_pixel", datasetSummary->get_zero_dop_range_time_l_pixel(), true);
181  }
182  else
183  {
184  result = false;
185  }
186 
187  const ErsSarMapProjectionData *mapprojectiondata = get_ErsSarMapProjectionData();
188  if ((mapprojectiondata != NULL) && (result == true))
189  {
190  kwl.add(prefix, "map_proj_des", (mapprojectiondata->get_map_proj_des()).c_str(), true);
191  kwl.add(prefix, "num_lines", (double) mapprojectiondata->get_num_lines(), true);
192  kwl.add(prefix, "num_pix", (double) mapprojectiondata->get_num_pix_in_line(), true);
193  kwl.add(prefix, "first_line_first_pixel_lat", mapprojectiondata->get_first_line_first_pixel_lat(), true);
194  kwl.add(prefix, "first_line_first_pixel_lon", mapprojectiondata->get_first_line_first_pixel_lon(), true);
195  kwl.add(prefix, "first_line_last_pixel_lat", mapprojectiondata->get_first_line_last_pixel_lat(), true);
196  kwl.add(prefix, "first_line_last_pixel_lon", mapprojectiondata->get_first_line_last_pixel_lon(), true);
197  kwl.add(prefix, "last_line_first_pixel_lat", mapprojectiondata->get_last_line_first_pixel_lat(), true);
198  kwl.add(prefix, "last_line_first_pixel_lon", mapprojectiondata->get_last_line_first_pixel_lon(), true);
199  kwl.add(prefix, "last_line_last_pixel_lat", mapprojectiondata->get_last_line_last_pixel_lat(), true);
200  kwl.add(prefix, "last_line_last_pixel_lon", mapprojectiondata->get_last_line_last_pixel_lon(), true);
201  }
202  else
203  {
204  result = false;
205  }
206 
207  const ErsSarPlatformPositionData *platformposition = get_ErsSarPlatformPositionData();
208  if ((platformposition != NULL) && (result == true))
209  {
210  kwl.add(prefix, "neph", platformposition->get_ndata(), true);
211  kwl.add(prefix, "eph_year", platformposition->get_year(), true);
212  kwl.add(prefix, "eph_month", platformposition->get_month(), true);
213  kwl.add(prefix, "eph_day", platformposition->get_day(), true);
214  kwl.add(prefix, "eph_gmt_day", platformposition->get_gmt_day(), true);
215  kwl.add(prefix, "eph_sec", platformposition->get_gmt_sec(), true);
216  kwl.add(prefix, "eph_hr_angle", platformposition->get_hr_angle(), true);
217  kwl.add(prefix, "eph_int", platformposition->get_data_int(), true);
218 
219  for (int i = 0; i < platformposition->get_ndata(); i++)
220  {
221  sprintf(name, "eph%i_posX", i);
222  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_pos()[0], true);
223  sprintf(name, "eph%i_posY", i);
224  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_pos()[1], true);
225  sprintf(name, "eph%i_posZ", i);
226  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_pos()[2], true);
227 
228  sprintf(name, "eph%i_velX", i);
229  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_vel()[0], true);
230  sprintf(name, "eph%i_velY", i);
231  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_vel()[1], true);
232  sprintf(name, "eph%i_velZ", i);
233  kwl.add(prefix, name, (platformposition->get_pos_vect()[i]).get_vel()[2], true);
234  }
235  }
236  else
237  {
238  result = false;
239  }
240  /*
241  * Adding metadata necessary to the sensor model in the keywordlist
242  */
243  const ErsSarFacilityData *facilitydata = get_ErsSarFacilityData();
244  if ((facilitydata != NULL) && (result == true))
245  {
246  kwl.add(prefix, "coef_ground_range_1", facilitydata->get_coef_ground_range_1(), true);
247  kwl.add(prefix, "coef_ground_range_2", facilitydata->get_coef_ground_range_2(), true);
248  kwl.add(prefix, "coef_ground_range_3", facilitydata->get_coef_ground_range_3(), true);
249  kwl.add(prefix, "coef_ground_range_4", facilitydata->get_coef_ground_range_4(), true);
250  }
251  else
252  {
253  result = false;
254  }
255 
256 
257  if (traceDebug())
258  {
260  << MODULE << " exit status = " << (result ? "true" : "false\n")
261  << std::endl;
262  }
263 
264 
265  return result;
266 }
const ErsSarMapProjectionData * get_ErsSarMapProjectionData() const
const ErsSarFileDescriptor * get_ErsSarFileDescriptor() const
const ErsSarDataSetSummary * get_ErsSarDataSetSummary() const
static const char * TYPE_KW
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
const ErsSarPlatformPositionData * get_ErsSarPlatformPositionData() const
const ErsSarFacilityData * get_ErsSarFacilityData() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const ErsSarLeader data 
)
friend

This function write the ErsSarLeader in a stream.

Definition at line 48 of file ErsSarLeader.cpp.

49 {
50  std::map<int, ErsSarRecord*>::const_iterator it = data.theRecords.begin();
51  while (it != data.theRecords.end())
52  {
53  (*it).second->Write(os);
54  ++it;
55  }
56  return os;
57 
58 }

◆ operator>>

std::istream& operator>> ( std::istream &  is,
ErsSarLeader data 
)
friend

This function read a ErsSarLeader from a stream.

Definition at line 60 of file ErsSarLeader.cpp.

61 {
62  ErsSarLeaderFactory factory;
63 
64  data.ClearRecords();
65 
66  ErsSarRecordHeader header;
67  bool eof = false;
68  while (!eof)
69  {
70  is >> header;
71  if (is.eof())
72  {
73  eof = true;
74  }
75  else
76  {
77  ErsSarRecord* record = factory.Instanciate(header.get_rec_seq());
78  if (record != NULL)
79  {
80  record->Read(is);
81  data.theRecords[header.get_rec_seq()] = record;
82  }
83  else
84  {
85  char* buff = new char[header.get_length()-12];
86  is.read(buff, header.get_length() - 12);
87  delete [] buff;
88  }
89  }
90  }
91  return is;
92 }

Member Data Documentation

◆ ErsSarDataSetSummaryID

const int ossimplugins::ErsSarLeader::ErsSarDataSetSummaryID = 2
staticprotected

Definition at line 101 of file ErsSarLeader.h.

Referenced by get_ErsSarDataSetSummary().

◆ ErsSarFacilityDataID

const int ossimplugins::ErsSarLeader::ErsSarFacilityDataID = 5
staticprotected

Definition at line 98 of file ErsSarLeader.h.

Referenced by get_ErsSarFacilityData().

◆ ErsSarFileDescriptorID

const int ossimplugins::ErsSarLeader::ErsSarFileDescriptorID = 1
staticprotected

Definition at line 102 of file ErsSarLeader.h.

Referenced by get_ErsSarFileDescriptor().

◆ ErsSarMapProjectionDataID

const int ossimplugins::ErsSarLeader::ErsSarMapProjectionDataID = 3
staticprotected

Definition at line 100 of file ErsSarLeader.h.

Referenced by get_ErsSarMapProjectionData().

◆ ErsSarPlatformPositionDataID

const int ossimplugins::ErsSarLeader::ErsSarPlatformPositionDataID = 4
staticprotected

Definition at line 99 of file ErsSarLeader.h.

Referenced by get_ErsSarPlatformPositionData().

◆ theRecords

std::map<int, ErsSarRecord*> ossimplugins::ErsSarLeader::theRecords
mutableprotected

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