OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimFfL7.cpp
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Ken Melero
6 // Orginally written by Oscar Kramer (SoBe Software)
7 //
8 // Description: Container class for LandSat7 Fast Format header files.
9 //
10 //********************************************************************
11 // $Id: ossimFfL7.cpp 23231 2015-04-08 00:00:33Z gpotts $
12 
13 #include <cstdio>
14 #include <fstream>
15 #include <sstream>
16 #include <string>
17 #include <iomanip>
18 #include <ctime>
19 using namespace std;
20 
22 
23 #include <ossim/base/ossimString.h>
24 #include <ossim/base/ossimDate.h>
29 
30 static const ossimString ACQUISITION_DATE_KW = "acquisition_date";
31 static const ossimString PATH_KW = "path";
32 static const ossimString PATH_ROW_KW = "path_row";
33 static const ossimString ROW_KW = "row";
34 static const ossimString SATELLITE_NAME_KW = "satellite_name";
35 static const ossimString SENSOR_NAME_KW = "sensor_name";
36 
37 
39  :
41 {
42  initialize();
43 }
44 
45 ossimFfL7::ossimFfL7(const char* headerFile)
46  :
48 {
49  initialize();
50 
51  // open the header file:
52  FILE* fptr = fopen(headerFile, "r");
53  if (!fptr)
54  {
56  }
57 
58  // Begin reading records:
59  if (!theErrorStatus)
60  readAdminRecord(fptr);
61  if (!theErrorStatus)
62  readRadiomRecord(fptr);
63  if (!theErrorStatus)
64  readGeomRecord(fptr);
65  if(fptr)
66  {
67  fclose(fptr);
68  }
69 }
71 {}
72 
74 {
75  ossimString tmp = "p";
76  tmp += theLocationCode;
77  tmp.gsub("/", "r");
78  tmp.gsub(" ", "");
79 
80  return tmp;
81 }
82 
84 {
85  os << setiosflags(ios::left | ios::fixed)
86  << "\nAdministrative Record:"
87  << setw(30) << "\ntheRequestNumber: "
89 
90  os << setw(30) << "\nLocationCode: " << theLocationCode
91  << setw(30) << "\nAcquisitionDate: " << theAcquisitionDate
92  << setw(30) << "\nSatelliteName: " << theSatName
93  << setw(30) << "\nSensorName: " << theSensorName
94  << setw(30) << "\nSensorMode: " << theSensorMode
95  << setw(30) << "\nOffNadirAngle: "
96  << setprecision(2) << theOffNadirAngle;
97 
98  os << setw(30) << "\nProductType: "
100  << setw(30) << "\nProductSize: "
101  << theProductSize
102  << setw(30) << "\nProcessingType: "
104  << setw(30) << "\nResampAlgorithm: "
106  << setw(30) << "\nPixelsPerLine: "
108  << setw(30) << "\nLinesPerImage: "
109  << theLinesPerBand
110  << setw(30) << "\nRecordSize: "
111  << theRecordSize
112  << setw(30) << "\nGsd: "
113  << setprecision(2) << theGsd
114  << setw(30) << "\nOutputBitsPerPixel: "
116  << setw(30) << "\nAcquiredBitsPerPixel: "
118  << setw(30) << "\nBandsPresentString: "
120 
121  for (int i=0; i<6; i++)
122  os << "\nBandFileNames["<<i<<"]: " <<theBandFileNames[i];
123  os << endl;
124 
125  os << setprecision(15) << setw(30) << "\nRadiometric record:" << endl;
126  ossim_uint32 band = 0;
127  vector<ossim_float64>::const_iterator bi = theBias.begin();
128  while (bi != theBias.end())
129  {
130  os << "band[" << band << "] bias: " << (*bi) << endl;
131  ++bi;
132  ++band;
133  }
134 
135  band = 0;
136  bi = theGain.begin();
137  while (bi != theGain.end())
138  {
139  os << "band[" << band << "] gain: " << (*bi) << endl;
140  ++bi;
141  ++band;
142  }
143 
144  os << endl
145  << "Geometric Record:"
146  << setw(30) << "\nMapProjectionName:"
148  << setw(30) << "\nEllipsoid:"
149  << theEllipsoid
150  << setw(30) << "\nDatum:"
151  << theDatum;
152 
153  for (int i = 0; i < 15; i++)
154  {
155  os << "\nProjectionParams[" << setw(2) << i << setw(10) << "]: "
156  << theProjectionParams[i];
157  }
158 
159  os << setprecision(3)
160  << setw(30) << "\nUL Corner:" << theUL_Corner
161  << setw(30) << "\nUR Corner:" << theUR_Corner
162  << setw(30) << "\nLR Corner:" << theLR_Corner
163  << setw(30) << "\nLL Corner:" << theLL_Corner
164  << setw(30) << "\nCenter Point (Ground):" << theCenterGP
165  << setw(30) << "\nCenter Point (Image):" << theCenterImagePoint
166  << setw(30) << "\nHorizontalOffset:"
168  << setprecision(2) << setw(30) << "\nOrientationAngle:"
170  << setw(30) << "\nSunElevationAngle:"
171  << setprecision(1) << theSunElevation
172  << setw(30) << "\nSunAzimuth:" << theSunAzimuth
173  << resetiosflags(ios::left)
174  << endl << endl;
175 }
176 
178 {
179  ossimNotify(ossimNotifyLevel_WARN) << "WARNING ossimFfL7::writeHeader: This method is not yet implemented. Ignoring request..."
180  << std::endl;
181  os << "WARNING ossimFfL7::writeHeader: This method is not yet implemented. Ignoring request..."
182  << std::endl;
183 }
184 
186 {
187  static const int OFFSET = -1;
188  int converted;
189  theErrorStatus = ossimErrorCodes::OSSIM_ERROR; // assume error, prove not at end;
190 
191  fseek(fptr, OFFSET + 9, SEEK_SET);
192  converted = fscanf(fptr, "%20c", theRequestNumber);
193  if (converted != 1) return;
194 
195  fseek(fptr, OFFSET + 35, SEEK_SET);
196  converted = fscanf(fptr, "%17c", theLocationCode);
197  if (converted != 1) return;
198 
199  fseek(fptr, OFFSET + 71, SEEK_SET);
200  converted = fscanf(fptr, "%8c", theAcquisitionDate);
201  if (converted != 1) return;
202 
203  fseek(fptr, OFFSET + 92, SEEK_SET);
204  converted = fscanf(fptr, "%10c", theSatName);
205  if (converted != 1) return;
206 
207  fseek(fptr, OFFSET + 111, SEEK_SET);
208  converted = fscanf(fptr, "%10c", theSensorName);
209  if (converted != 1) return;
210 
211  fseek(fptr, OFFSET + 135, SEEK_SET);
212  converted = fscanf(fptr, "%6c", theSensorMode);
213  if (converted != 1) return;
214 
215  fseek(fptr, OFFSET + 154, SEEK_SET);
216  converted = fscanf(fptr, "%6lf", &theOffNadirAngle);
217  if (converted != 1) return;
218 
219  fseek(fptr, OFFSET + 655, SEEK_SET);
220  converted = fscanf(fptr, "%18c", theProductType);
221  if (converted != 1) return;
222 
223  fseek(fptr, OFFSET + 688, SEEK_SET);
224  converted = fscanf(fptr, "%10c", theProductSize);
225  if (converted != 1) return;
226 
227  fseek(fptr, OFFSET + 741, SEEK_SET);
228  converted = fscanf(fptr, "%11c", theProcessingType);
229  if (converted != 1) return;
230 
231  fseek(fptr, OFFSET + 765, SEEK_SET);
232  converted = fscanf(fptr, "%2c", theResampAlgorithm);
233  if (converted != 1) return;
234 
235  fseek(fptr, OFFSET + 843, SEEK_SET);
236  converted = fscanf(fptr, "%5d", &thePixelsPerLine);
237  if (converted != 1) return;
238 
239  fseek(fptr, OFFSET + 865, SEEK_SET);
240  converted = fscanf(fptr, "%5d", &theLinesPerBand);
241  if (converted != 1) return;
242 
243  fseek(fptr, OFFSET + 932, SEEK_SET);
244  converted = fscanf(fptr, "%9d", &theRecordSize);
245  if (converted != 1) return;
246 
247  fseek(fptr, OFFSET + 954, SEEK_SET);
248  converted = fscanf(fptr, "%6lf", &theGsd);
249  if (converted != 1) return;
250 
251  fseek(fptr, OFFSET + 984, SEEK_SET);
252  converted = fscanf(fptr, "%2d", &theOutputBitsPerPixel);
253  if (converted != 1) return;
254 
255  fseek(fptr, OFFSET + 1012, SEEK_SET);
256  converted = fscanf(fptr, "%2d", &theAcquiredBitsPerPixel);
257  if (converted != 1) return;
258 
259  fseek(fptr, OFFSET + 1056, SEEK_SET);
260  converted = fscanf(fptr, "%32c", theBandsPresentString);
261  if (converted != 1) return;
262 
263  fseek(fptr, OFFSET + 1131, SEEK_SET);
264  converted = fscanf(fptr, "%29c", theBandFileNames[0]);
265  if (converted != 1) return;
266 
267  fseek(fptr, OFFSET + 1170, SEEK_SET);
268  converted = fscanf(fptr, "%29c", theBandFileNames[1]);
269  if (converted != 1) return;
270 
271  fseek(fptr, OFFSET + 1211, SEEK_SET);
272  converted = fscanf(fptr, "%29c", theBandFileNames[2]);
273  if (converted != 1) return;
274 
275  fseek(fptr, OFFSET + 1250, SEEK_SET);
276  converted = fscanf(fptr, "%29c", theBandFileNames[3]);
277  if (converted != 1) return;
278 
279  fseek(fptr, OFFSET + 1291, SEEK_SET);
280  converted = fscanf(fptr, "%29c", theBandFileNames[4]);
281  if (converted != 1) return;
282 
283  fseek(fptr, OFFSET + 1330, SEEK_SET);
284  converted = fscanf(fptr, "%29c", theBandFileNames[5]);
285  if (converted != 1) return;
286 
287  std::vector<ossimString> arrayPathRow = ossimString(theLocationCode).split("/");
288  if(arrayPathRow.size() == 2)
289  {
290  thePathNumber = arrayPathRow[0].toInt();
291  theRowNumber = arrayPathRow[1].beforePos(3).toInt();
292  }
293 
294  // The Admin record was successfully extracted:
296  return;
297 }
298 
299 int ossimFfL7::path() const
300 {
301  return thePathNumber;
302 }
303 
304 int ossimFfL7::row() const
305 {
306  return theRowNumber;
307 }
308 
309 //***************************************************************************
310 // PRIVATE METHOD: ossimFfL7::readRadiomRecord()
311 //
312 //***************************************************************************
314 {
315  int converted;
316  char radiom_record[1537];
317 
318  if (!theErrorStatus)
319  {
320  fseek(fptr, 1536, SEEK_SET);
321  converted = fscanf(fptr, "%1536c", radiom_record);
322  if (converted != 1) theErrorStatus = ossimErrorCodes::OSSIM_ERROR;
323  }
324 
325  // Get the gains and biases.
326  theBias.clear();
327  theGain.clear();
328 
329  const ossim_uint32 MAX = 128;
330  char temp_chars[MAX];
331  std::istringstream is(radiom_record);
332 
333  // Eat the first line. "GAINS AND BIASES IN ASCENDING BAND NUMBER ORDER"
334  is.getline(temp_chars, MAX);
335 
336  const char SPACE = 0x20;
337  const char LINE_FEED = 0x0a;
338 
339  // LS7 header has room for eight bands per spec.
340  for (ossim_uint32 band = 0; band < 8; ++band)
341  {
342  is.getline(temp_chars, MAX);
343  bool blank_line = true;
344  for (ossim_uint32 i = 0; i < MAX; ++i)
345  {
346  if (temp_chars[i] == LINE_FEED) break; // end of line...
347 
348  if (temp_chars[i] != SPACE)
349  {
350  blank_line = false; // has bias and gain...
351  break;
352  }
353  }
354 
355  if (blank_line == true) continue; // go to next line...
356 
357  std::vector<ossimString> splitString;
358  ossimString tempString(temp_chars);
359  tempString.split(splitString, " ");
360 
361  if(splitString.size() > 1)
362  {
363  theBias.push_back(splitString[0].toDouble());
364  theGain.push_back(splitString[1].toDouble());
365  }
366  }
367 }
368 
369 //***************************************************************************
370 // PRIVATE METHOD: ossimFfL7::readGeomRecord()
371 //
372 //***************************************************************************
374 {
375  static const int OFFSET = 3071;
376  int converted;
377  theErrorStatus = ossimErrorCodes::OSSIM_ERROR; // assume error, prove not at end;
378 
379  fseek(fptr, OFFSET + 32, SEEK_SET);
380  converted = fscanf(fptr, "%4c", theMapProjectionName);
381  if (converted != 1) return;
382 
383  fseek(fptr, OFFSET + 48, SEEK_SET);
384  converted = fscanf(fptr, "%18c", theEllipsoid);
385  if (converted != 1) return;
386 
387  strcpy(theDatum, "WGS-84");
388 
389  // added to read in all 15 parameters instead of the first two.
390  long currentOffset = OFFSET + 110;
391  for(long parameter=0;parameter < 15; ++parameter)
392  {
393  fseek(fptr, currentOffset, SEEK_SET);
394  converted = fscanf(fptr, "%24lf", &theProjectionParams[parameter]);
395  if (converted != 1) return;
396 
397  currentOffset +=25;
398  }
399 
400 
401  fseek(fptr, OFFSET + 521, SEEK_SET);
402  converted = fscanf(fptr, "%6d", &theUsgsMapZone);
403  if (converted != 1) return;
404 
405  fseek(fptr, OFFSET + 566, SEEK_SET);
406  if(convertGeoPoint(fptr, theUL_Corner)) return;
407 
408  fseek(fptr, OFFSET + 646, SEEK_SET);
409  if(convertGeoPoint(fptr, theUR_Corner)) return;
410 
411  fseek(fptr, OFFSET + 726, SEEK_SET);
412  if(convertGeoPoint(fptr, theLR_Corner)) return;
413 
414  fseek(fptr, OFFSET + 806, SEEK_SET);
415  if(convertGeoPoint(fptr, theLL_Corner)) return;
416 
417  fseek(fptr, OFFSET + 890, SEEK_SET);
418  if(convertGeoPoint(fptr, theCenterGP)) return;
419 
420  fseek(fptr, OFFSET + 945, SEEK_SET);
421 
422  int x;
423  int y;
424 
425  converted = fscanf(fptr, "%5d %5d", &x, &y);
426  if (converted != 2) return;
427 
430 
431  fseek(fptr, OFFSET + 969, SEEK_SET);
432  converted = fscanf(fptr, "%6d", &theHorizontalOffset);
433  if (converted != 1) return;
434 
435  fseek(fptr, OFFSET + 995, SEEK_SET);
436  converted = fscanf(fptr, "%6lf", &theOrientationAngle);
437  if (converted != 1) return;
438 
439  fseek(fptr, OFFSET + 1062, SEEK_SET);
440  converted = fscanf(fptr, "%4lf", &theSunElevation);
441  if (converted != 1) return;
442 
443  fseek(fptr, OFFSET + 1086, SEEK_SET);
444  converted = fscanf(fptr, "%5lf", &theSunAzimuth);
445  if (converted != 1) return;
446 
447  // successfully reached the end of Geom record:
449 
450  return;
451 }
452 
453 
454 //***************************************************************************
455 // PRIVATE METHOD: ossimFfL7::convertGeoPoint(char* buffer);
456 //
457 //***************************************************************************
458 int ossimFfL7::convertGeoPoint(FILE* fptr, ossimGpt& geo_point)
459 {
460  int londeg;
461  int lonmin;
462  double lonsec;
463  char lonhem;
464  int latdeg;
465  int latmin;
466  double latsec;
467  char lathem;
468 
469  int converted = fscanf(fptr, "%03d%02d%7lf%c %02d%02d%7lf%c",
470  &londeg, &lonmin, &lonsec, &lonhem,
471  &latdeg, &latmin, &latsec, &lathem);
472 
473  if (converted != 8)
474  {
477  }
478 
479  geo_point.lat = (double)latdeg + (double)latmin/60.0 + latsec/3600.0;
480  if (lathem == 'S')
481  geo_point.lat *= -1.0;
482 
483  geo_point.lon= (double)londeg + (double)lonmin/60.0 + lonsec/3600.0;
484  if (lonhem == 'W')
485  geo_point.lon *= -1.0;
486 
488 }
489 
490 //***************************************************************************
491 // PRIVATE METHOD: ossimFfL7::initialize()
492 // Initializes all fields to blanks (or 0's) and null terminates strings.
493 //***************************************************************************
495 {
496  static const char source[] = "";
497 
498  // The Admin Record:
499  strncpy(theRequestNumber, source, 21);
500  strncpy(theLocationCode, source, 18);
501  thePathNumber = 0;
502  theRowNumber = 0;
503  strncpy(theAcquisitionDate, source, 20);
504  strncpy(theSatName, source, 11);
505  strncpy(theSensorName, source, 11);
506  strncpy(theSensorMode, source, 7);
507  theOffNadirAngle = 0.0;
508  strncpy(theProductType, source, 19);
509  strncpy(theProductSize, source, 11);
510  strncpy(theProcessingType, source, 12);
511  strncpy(theResampAlgorithm, source, 3);
512  thePixelsPerLine = 0;
513  theLinesPerBand = 0;
514  theRecordSize = 0;
515  theGsd = 0.0;
518  strncpy(theBandsPresentString, source, 33);
519  strncpy(theBandFileNames[0], source, 30);
520  strncpy(theBandFileNames[1], source, 30);
521  strncpy(theBandFileNames[2], source, 30);
522  strncpy(theBandFileNames[3], source, 30);
523  strncpy(theBandFileNames[4], source, 30);
524  strncpy(theBandFileNames[5], source, 30);
525 
526  // The Radiometry Record:
527  theBias.clear();
528  theGain.clear();
529 
530  // The Geometry Record:
531  strncpy(theMapProjectionName, source, 5);
532  strncpy(theEllipsoid, source, 19);
533  strncpy(theDatum, source, 7);
534  for (int i=0; i<15; i++)
535  theProjectionParams[i] = 0.0;
536  theUsgsMapZone = 0;
537 
538  theHorizontalOffset = 0;
539  theOrientationAngle = 0.0;
540  theSunElevation = 0.0;
541  theSunAzimuth = 0.0;
542 
543  return;
544 }
545 
546 void ossimFfL7::getBias(vector<double>& bias) const
547 {
548  bias = theBias;
549 }
550 
551 double ossimFfL7::getBias(long bandIdx)const
552 {
553  return theBias[bandIdx];
554 }
555 
556 void ossimFfL7::getGain(vector<double>& gain) const
557 {
558  gain = theGain;
559 }
560 
561 double ossimFfL7::getGain(long bandIdx)const
562 {
563  return theGain[bandIdx];
564 }
565 
567 {
568  if(i < 15)
569  {
570  return theProjectionParams[i];
571  }
572  return 0.0;
573 }
574 
576 {
577  ossimDate date;
578  getAcquisitionDate(date);
579  return static_cast<long>(date.getJulian());
580 }
581 
583 {
585 }
586 
588 {
595 
596  date = ossimDate(m.toInt(),
597  d.toInt(),
598  y.toInt());
599 }
600 
602 {
603  return ossimString(theSatName);
604 }
605 
607 {
608  ossimFilename result;
609  if (idx < getBandCount())
610  {
611  result = theBandFileNames[idx];
612  }
613  return result;
614 }
615 
617 {
618  return theLinesPerBand;
619 }
620 
622 {
623  return thePixelsPerLine;
624 }
625 
626 void ossimFfL7::getSunElevation(double& elevation) const
627 {
628  elevation = theSunElevation;
629 }
630 
631 void ossimFfL7::getSunAzimuth(double& azimuth) const
632 {
633  azimuth = theSunAzimuth;
634 }
635 
637 {
638  ossimRefPtr<ossimProperty> result = 0;
639 
640  if(name == ACQUISITION_DATE_KW)
641  {
642  ossimDate date;
643  getAcquisitionDate(date);
644  result = new ossimDateProperty(ACQUISITION_DATE_KW, date);
645  }
646  else if (name == PATH_KW)
647  {
648  result = new ossimStringProperty(PATH_KW,
650  false);
651  }
652  else if (name == PATH_ROW_KW)
653  {
654  result = new ossimStringProperty(PATH_ROW_KW,
655  pathRow(),
656  false);
657  }
658  else if (name == ROW_KW)
659  {
660  result = new ossimStringProperty(ROW_KW,
662  false);
663  }
664  else if (name == SATELLITE_NAME_KW)
665  {
666  result = new ossimStringProperty(SATELLITE_NAME_KW,
668  false);
669  }
670  else if (name == SENSOR_NAME_KW)
671  {
672  result = new ossimStringProperty(SENSOR_NAME_KW,
674  false);
675  }
676 
677  return result;
678 }
679 
680 void ossimFfL7::getPropertyNames(std::vector<ossimString>& propertyNames)const
681 {
682  propertyNames.push_back(ACQUISITION_DATE_KW);
683  propertyNames.push_back(PATH_KW);
684  propertyNames.push_back(PATH_ROW_KW);
685  propertyNames.push_back(ROW_KW);
686  propertyNames.push_back(SATELLITE_NAME_KW);
687  propertyNames.push_back(SENSOR_NAME_KW);
688 }
689 
690 unsigned int ossimFfL7::getBandCount()const
691 {
693  tmp.trim(); //remove spaces
694  return (unsigned int)tmp.length();
695 // return strlen(tmp.chars()); //beurk! should implement length in ossimString
696 }
697 
698 //***************************************************************************
699 // Function:
700 // ostream& operator<<(ostream& os, const ossimFfL7& head)
701 //***************************************************************************
703 {
704  head.dump(os);
705  return os;
706 }
707 
ossim_uint32 x
char theLocationCode[18]
Definition: ossimFfL7.h:135
int getLinesPerBand() const
Definition: ossimFfL7.cpp:616
vector< double > theBias
Definition: ossimFfL7.h:157
ossimGpt theUL_Corner
Definition: ossimFfL7.h:167
char theDatum[7]
Definition: ossimFfL7.h:163
void writeHeader(std::ostream &os) const
Definition: ossimFfL7.cpp:177
int theRowNumber
Definition: ossimFfL7.h:137
char theProcessingType[12]
Definition: ossimFfL7.h:145
double theSunAzimuth
Definition: ossimFfL7.h:178
void getSunElevation(double &elevation) const
Gets the sun elevation in degrees.
Definition: ossimFfL7.cpp:626
char theResampAlgorithm[3]
Definition: ossimFfL7.h:146
static const ossimErrorCode OSSIM_OK
ossimGpt theUR_Corner
Definition: ossimFfL7.h:168
ossim_uint32 y
double getParam(ossim_uint32 i) const
Definition: ossimFfL7.cpp:566
int theRecordSize
Definition: ossimFfL7.h:149
#define MAX(x, y)
virtual unsigned int getBandCount() const
Definition: ossimFfL7.cpp:690
void getGain(vector< double > &gain) const
Definition: ossimFfL7.cpp:556
void dump(std::ostream &os) const
Definition: ossimFfL7.cpp:83
char theProductType[19]
Definition: ossimFfL7.h:143
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
Gets a property for matching name.
Definition: ossimFfL7.cpp:636
int getPixelsPerLine() const
Definition: ossimFfL7.cpp:621
void readGeomRecord(FILE *fptr)
Definition: ossimFfL7.cpp:373
int theHorizontalOffset
Definition: ossimFfL7.h:175
static ossimString toString(bool aValue)
Numeric to string methods.
ossimIpt theCenterImagePoint
Definition: ossimFfL7.h:173
char theBandsPresentString[33]
Definition: ossimFfL7.h:153
ossimString getSatelliteName() const
Definition: ossimFfL7.cpp:601
int theLinesPerBand
Definition: ossimFfL7.h:148
char theSatName[11]
Definition: ossimFfL7.h:139
void getBias(vector< double > &bias) const
Definition: ossimFfL7.cpp:546
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
static const ossimErrorCode OSSIM_ERROR
void initialize()
Definition: ossimFfL7.cpp:494
char theAcquisitionDate[20]
Definition: ossimFfL7.h:138
#define SPACE
Definition: vpfio.h:25
double theSunElevation
Definition: ossimFfL7.h:177
long getJulianDay() const
Definition: ossimFfL7.cpp:575
char theEllipsoid[19]
Definition: ossimFfL7.h:162
int convertGeoPoint(FILE *, ossimGpt &)
Definition: ossimFfL7.cpp:458
ossimFilename getBandFilename(ossim_uint32 idx) const
Definition: ossimFfL7.cpp:606
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Gets a list of property names available.
Definition: ossimFfL7.cpp:680
char theBandFileNames[8][30]
Definition: ossimFfL7.h:154
char theSensorMode[7]
Definition: ossimFfL7.h:141
char theMapProjectionName[5]
Definition: ossimFfL7.h:161
int path() const
Definition: ossimFfL7.cpp:299
ossimGpt theLR_Corner
Definition: ossimFfL7.h:169
ossim_float64 lon
Definition: ossimGpt.h:266
std::string::size_type length() const
Definition: ossimString.h:408
char theSensorName[11]
Definition: ossimFfL7.h:140
unsigned int ossim_uint32
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
ossimString pathRow() const
Definition: ossimFfL7.cpp:73
int theAcquiredBitsPerPixel
Definition: ossimFfL7.h:152
std::ostream & operator<<(std::ostream &os, const ossimFfL7 &head)
Definition: ossimFfL7.cpp:702
ossimGpt theCenterGP
Definition: ossimFfL7.h:171
ossimGpt theLL_Corner
Definition: ossimFfL7.h:170
int theUsgsMapZone
Definition: ossimFfL7.h:165
int thePathNumber
Definition: ossimFfL7.h:136
char theProductSize[11]
Definition: ossimFfL7.h:144
int row() const
Definition: ossimFfL7.cpp:304
ossim_int32 y
Definition: ossimIpt.h:142
double theOffNadirAngle
Definition: ossimFfL7.h:142
void readAdminRecord(FILE *fptr)
Definition: ossimFfL7.cpp:185
void getSunAzimuth(double &azimuth) const
Gets the sun azimuth in degrees.
Definition: ossimFfL7.cpp:631
virtual ~ossimFfL7()
Definition: ossimFfL7.cpp:70
ossimString getAcquisitionDate() const
Definition: ossimFfL7.cpp:582
void readRadiomRecord(FILE *fptr)
Definition: ossimFfL7.cpp:313
ossim_int32 x
Definition: ossimIpt.h:141
double theGsd
Definition: ossimFfL7.h:150
double getJulian() const
Definition: ossimDate.cpp:458
ossim_float64 lat
Definition: ossimGpt.h:265
ossimString & gsub(const ossimString &searchKey, const ossimString &replacementValue, bool replaceAll=false)
Substitutes searchKey string with replacementValue and returns a reference to *this.
std::basic_istringstream< char > istringstream
Class for char input memory streams.
Definition: ossimIosFwd.h:32
double theProjectionParams[15]
Definition: ossimFfL7.h:164
int thePixelsPerLine
Definition: ossimFfL7.h:147
int theOutputBitsPerPixel
Definition: ossimFfL7.h:151
char theRequestNumber[21]
Definition: ossimFfL7.h:134
int toInt() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
vector< double > theGain
Definition: ossimFfL7.h:158
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
double theOrientationAngle
Definition: ossimFfL7.h:176