Isis 3 Programmer Reference
ProcessExportPds.h
1 #ifndef ProcessExportPds_h
2 #define ProcessExportPds_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include "ProcessExport.h"
11 #include <vector>
12 
13 class QString;
14 
15 namespace Isis {
16  class PvlFormatPds;
17  class Table;
18 
79  public:
84  enum PdsFileType {
85  Image,
87  Qube,
90  SpectralQube,
93  JP2Image
95  };
96 
102  Kilometer
103  };
104 
112  Fixed
114  };
115 
118 
119  // Work with PDS labels for all data set types
120  void StandardAllMapping(Pvl &mainPvl);
121 
122  // Work with PDS labels for data sets of type IMAGE
123  void StreamImageRoot(Pvl &mainPvl);
124  void FixedImageRoot(Pvl &mainPvl);
125  void StreamJP2ImageRoot(Pvl &mainPvl);
126  void FixedJP2ImageRoot(Pvl &mainPvl);
127  void StandardImageImage(Pvl &mainPvl);
128  void StandardJP2Image(Pvl &mainPvl);
129 
130  void SetPdsResolution(PdsResolution resolutionUnits);
131  void SetExportType(PdsExportType recordFormat);
132 
134 
135  void OutputLabel(std::ofstream &pdsFileStream);
136  void updateChecksumInLabel(std::ofstream &pdsFileStream);
137  void OutputDetachedLabel();
138 
139  void ExportTable(Isis::Table isisTable, QString detachedPdsTableFileName="");
140 
141  // include this using declaration to indicate that ProcessExportPds
142  // objects that call a StartProcess() method that has not been overridden
143  // here should use the corresponding base class definitions
145  void StartProcess(std::ofstream &fout);
146 
147  // Accessors
148  bool Detached();
149  bool Attached();
150 
151  // Mutators
152  void SetDetached(QString detachedLabelFile);
153  void SetAttached();
154  void ForceBands(bool force);
155  void ForceBandName(bool force);
156  void ForceCenterFilterWavelength(bool force);
157  void ForceBandwidth(bool force);
158  void ForceBandStorageType(bool force);
159  void ForceOffset(bool force);
160  void ForceScalingFactor(bool force);
161  void ForceSampleBits(bool force);
162  void ForceSampleBitMask(bool force);
163  void ForceSampleType(bool force);
164  void ForceCoreNull(bool force);
165  void ForceCoreLrs(bool force);
166  void ForceCoreLis(bool force);
167  void ForceCoreHrs(bool force);
168  void ForceCoreHis(bool force);
169 
170  protected:
171  int LineBytes();
172  int LabelSize();
173  virtual void CreateImageLabel();
174  void CreateQubeLabel();
176 
177  QString ProjectionName(Pvl &inputLabel);
178 
183 
184  private:
232  std::vector<int> m_tableStartRecord;
237  std::vector<int> m_tableRecords;
242  std::vector<char *> m_tableBuffers;
248  };
249 }
250 
251 #endif
Isis::ProcessExportPds::ForceCenterFilterWavelength
void ForceCenterFilterWavelength(bool force)
Mutator method to set how the CENTER_FILTER_WAVELENGTH keyword will be handled.
Definition: ProcessExportPds.cpp:1150
Isis::ProcessExportPds::ForceBandName
void ForceBandName(bool force)
Mutator method to set how the BAND_NAME keyword will be handled.
Definition: ProcessExportPds.cpp:1137
Isis::ProcessExportPds::SetExportType
void SetExportType(PdsExportType recordFormat)
Mutator method to set the output PDS image record type to stream or fixed.
Definition: ProcessExportPds.cpp:1112
Isis::ProcessExportPds::ForceCoreLrs
void ForceCoreLrs(bool force)
Mutator method to set how the CORE_LOW_REPR_SATURATION keyword will be handled.
Definition: ProcessExportPds.cpp:1267
Isis::ProcessExportPds::m_forceBandwidth
bool m_forceBandwidth
Indicates whether to keep the BANDWIDTH keyword in the PDS labels.
Definition: ProcessExportPds.h:193
Isis::ProcessExportPds::LineBytes
int LineBytes()
Return the line bytes (record size) for the input cube, at present this is based on the number of sam...
Definition: ProcessExportPds.cpp:837
Isis::ProcessExportPds::FixedJP2ImageRoot
void FixedJP2ImageRoot(Pvl &mainPvl)
Create the fixed keywords for the ROOT object in a PDS JP2 IMAGE file.
Definition: ProcessExportPds.cpp:330
Isis::ProcessExportPds::ForceSampleBitMask
void ForceSampleBitMask(bool force)
Mutator method to set how the SAMPLE_BIT_MASK keyword will be handled.
Definition: ProcessExportPds.cpp:1228
Isis::PvlFormatPds
Formats the value of a PvlKeyword into a PDS complient string.
Definition: PvlFormatPds.h:45
Isis::ProcessExportPds::m_exportType
PdsExportType m_exportType
Stream or Fixed.
Definition: ProcessExportPds.h:182
Isis::ProcessExportPds::ProcessExportPds
ProcessExportPds()
Default Constructor - Set to default the data members.
Definition: ProcessExportPds.cpp:36
Isis::ProcessExportPds::m_tableStartRecord
std::vector< int > m_tableStartRecord
Record number where the added table data begins.
Definition: ProcessExportPds.h:232
Isis::ProcessExportPds::StreamImageRoot
void StreamImageRoot(Pvl &mainPvl)
Create the standard keywords for the ROOT object in a PDS IMAGE file.
Definition: ProcessExportPds.cpp:205
Isis::ProcessExportPds::StandardImageImage
void StandardImageImage(Pvl &mainPvl)
Create the standard keywords for an IMAGE object in a PDS IMAGE file.
Definition: ProcessExportPds.cpp:390
Isis::ProcessExportPds::JP2Image
@ JP2Image
Image coding system JPEG 2000 formatted image.
Definition: ProcessExportPds.h:93
Isis::ProcessExportPds::FixedImageRoot
void FixedImageRoot(Pvl &mainPvl)
Create the fixed keywords for the ROOT object in a PDS IMAGE file.
Definition: ProcessExportPds.cpp:295
Isis::ProcessExportPds::PdsExportType
PdsExportType
Record format type of exported PDS file.
Definition: ProcessExportPds.h:110
Isis::ProcessExportPds::ForceSampleType
void ForceSampleType(bool force)
Mutator method to set how the SAMPLE_TYPE keyword will be handled.
Definition: ProcessExportPds.cpp:1241
Isis::ProcessExportPds::m_forceCoreHrs
bool m_forceCoreHrs
Indicates whether to add the CORE_HIGH_REPR_SATURATION keyword in the PDS labels.
Definition: ProcessExportPds.h:219
Isis::ProcessExportPds::m_label
Pvl * m_label
Exported PDS label.
Definition: ProcessExportPds.h:181
Isis::ProcessExportPds::CreateQubeLabel
void CreateQubeLabel()
Create a standard PDS label for type QUBE.
Definition: ProcessExportPds.cpp:161
Isis::ProcessExportPds::m_exportResolution
PdsResolution m_exportResolution
Meters or kilometers.
Definition: ProcessExportPds.h:185
Isis::ProcessExportPds::SetPdsResolution
void SetPdsResolution(PdsResolution resolutionUnits)
Mutator method to set the output PDS image resolution to meters per pixel or kilometers per pixel.
Definition: ProcessExportPds.cpp:1101
Isis::ProcessExportPds::StandardJP2Image
void StandardJP2Image(Pvl &mainPvl)
Create the standard keywords for an IMAGE object in a PDS JP2 IMAGE file.
Definition: ProcessExportPds.cpp:531
Isis::Pvl
Container for cube-like labels.
Definition: Pvl.h:119
Isis::ProcessExportPds::PdsResolution
PdsResolution
Resolution units per pixel of the exported PDS file.
Definition: ProcessExportPds.h:100
Isis::ProcessExportPds::m_forceBandStorageType
bool m_forceBandStorageType
Indicates whether to add the BAND_STORAGE_TYPE keyword in the PDS labels.
Definition: ProcessExportPds.h:195
Isis::ProcessExportPds::ForceBandwidth
void ForceBandwidth(bool force)
Mutator method to set how the BANDWIDTH keyword will be handled.
Definition: ProcessExportPds.cpp:1163
Isis::ProcessExportPds::updateChecksumInLabel
void updateChecksumInLabel(std::ofstream &pdsFileStream)
Updates the CHECKSUM value on the label and rewrites to the output file.
Definition: ProcessExportPds.cpp:953
Isis::ProcessExportPds::ForceCoreLis
void ForceCoreLis(bool force)
Mutator method to set how the CORE_LOW_INSTR_SATURATION keyword will be handled.
Definition: ProcessExportPds.cpp:1281
Isis::ProcessExportPds::ForceSampleBits
void ForceSampleBits(bool force)
Mutator method to set how the SAMPLE_BITS keyword will be handled.
Definition: ProcessExportPds.cpp:1215
Isis::ProcessExportPds::SetDetached
void SetDetached(QString detachedLabelFile)
Mutator method to set the output PDS file to detached.
Definition: ProcessExportPds.cpp:1061
Isis::ProcessExportPds::m_forceCoreHis
bool m_forceCoreHis
Indicates whether to add the CORE_HIGH_INSTR_SATURATION keyword in the PDS labels.
Definition: ProcessExportPds.h:222
Isis::ProcessExportPds::m_forceCenterFilterWavelength
bool m_forceCenterFilterWavelength
Indicates whether to keep the CENTER_FILTER_WAVELENGTH keyword in the PDS labels.
Definition: ProcessExportPds.h:190
Isis::ProcessExportPds::Meter
@ Meter
Meters per pixel.
Definition: ProcessExportPds.h:101
Isis::ProcessExportPds::Image
@ Image
Two dimensional array of line/sample values.
Definition: ProcessExportPds.h:85
Isis::ProcessExportPds::m_forceBandName
bool m_forceBandName
Indicates whether to keep the BAND_NAME keyword in the PDS labels.
Definition: ProcessExportPds.h:188
Isis::ProcessExportPds::~ProcessExportPds
~ProcessExportPds()
Destructor.
Definition: ProcessExportPds.cpp:68
Isis::ProcessExportPds::ProjectionName
QString ProjectionName(Pvl &inputLabel)
Return a projection name.
Definition: ProcessExportPds.cpp:823
Isis::ProcessExportPds::m_detachedLabel
bool m_detachedLabel
Indicates whether the PDS file will be detached.
Definition: ProcessExportPds.h:225
Isis::ProcessExportPds::Kilometer
@ Kilometer
Kilometers per pixel.
Definition: ProcessExportPds.h:102
Isis::ProcessExport::StartProcess
virtual void StartProcess(void funct(Isis::Buffer &in))
This method invokes the process operation over a single input cube.
Definition: ProcessExport.cpp:790
Isis::ProcessExportPds::Attached
bool Attached()
Accessor function returns true if the output PDS file is set to attached.
Definition: ProcessExportPds.cpp:1091
Isis::ProcessExportPds::m_pdsFileType
PdsFileType m_pdsFileType
Image, Qube, Spectral Qube, or JP2 Image.
Definition: ProcessExportPds.h:229
Isis::Table
Class for storing Table blobs information.
Definition: Table.h:61
Isis::ProcessExportPds::OutputLabel
void OutputLabel(std::ofstream &pdsFileStream)
Write the PDS label to the supplied stream.
Definition: ProcessExportPds.cpp:885
Isis::ProcessExportPds::OutputDetachedLabel
void OutputDetachedLabel()
Write the PDS label to the a detached file.
Definition: ProcessExportPds.cpp:866
Isis::ProcessExportPds::StreamJP2ImageRoot
void StreamJP2ImageRoot(Pvl &mainPvl)
Create the standard keywords for the ROOT object in a PDS JP2 IMAGE file.
Definition: ProcessExportPds.cpp:239
Isis::ProcessExportPds::m_tableRecords
std::vector< int > m_tableRecords
Number of records in each added table.
Definition: ProcessExportPds.h:237
Isis::ProcessExportPds::m_detachedPdsLabelFile
QString m_detachedPdsLabelFile
The name of the detached PDS label file.
Definition: ProcessExportPds.h:227
Isis::ProcessExportPds::ForceScalingFactor
void ForceScalingFactor(bool force)
Mutator method to set how the SCALING_FACTOR keyword will be handled.
Definition: ProcessExportPds.cpp:1202
Isis::ProcessExportPds::SetAttached
void SetAttached()
Mutator method to set the output PDS file to attached.
Definition: ProcessExportPds.cpp:1072
Isis::ProcessExportPds::m_forceBands
bool m_forceBands
Indicates whether to keep the BANDS keyword in the PDS labels.
Definition: ProcessExportPds.h:186
Isis::ProcessExportPds::ExportTable
void ExportTable(Isis::Table isisTable, QString detachedPdsTableFileName="")
This method will add a table to be exported to PDS.
Definition: ProcessExportPds.cpp:996
Isis::ProcessExportPds::CreateImageLabel
virtual void CreateImageLabel()
Create a standard PDS label for type IMAGE.
Definition: ProcessExportPds.cpp:119
Isis::ProcessExportPds::LabelSize
int LabelSize()
Return the size of the output PDS label.
Definition: ProcessExportPds.cpp:850
Isis::ProcessExportPds::CreateSpectralQubeLabel
void CreateSpectralQubeLabel()
Create a standard PDS label for type SPECTRAL_QUBE.
Definition: ProcessExportPds.cpp:182
Isis::ProcessExportPds::m_forceOffset
bool m_forceOffset
Indicates whether to add the OFFSET keyword in the PDS labels.
Definition: ProcessExportPds.h:198
Isis::ProcessExportPds::m_forceSampleBitMask
bool m_forceSampleBitMask
Indicates whether to add the SAMPLE_BIT_MASK keyword in the PDS labels.
Definition: ProcessExportPds.h:205
Isis::ProcessExportPds::ForceBands
void ForceBands(bool force)
Mutator method to set how the the BANDS keyword will be handled.
Definition: ProcessExportPds.cpp:1124
Isis::ProcessExportPds::m_forceCoreNull
bool m_forceCoreNull
Indicates whether to add the CORE_NULL keyword in the PDS labels.
Definition: ProcessExportPds.h:211
Isis::ProcessExportPds::StandardAllMapping
void StandardAllMapping(Pvl &mainPvl)
Create the standard keywords for the IMAGE_MAP_PROJECTION group in a PDS label.
Definition: ProcessExportPds.cpp:674
Isis::ProcessExportPds::m_formatter
PvlFormatPds * m_formatter
Used to determine how to format the keyword values in the PDS file.
Definition: ProcessExportPds.h:179
Isis::ProcessExportPds::m_forceSampleBits
bool m_forceSampleBits
Indicates whether to add the SAMPLE_BITS keyword in the PDS labels.
Definition: ProcessExportPds.h:203
Isis::ProcessExportPds::Qube
@ Qube
Multi-dimensional array (1-3 dimensional) whose axes may be interpreted as line/sample/band.
Definition: ProcessExportPds.h:87
Isis::ProcessExportPds::Stream
@ Stream
Stream Records. This type is generally used for ASCII files.
Definition: ProcessExportPds.h:111
Isis::ProcessExportPds::m_forceCoreLis
bool m_forceCoreLis
Indicates whether to add the CORE_LOW_INSTR_SATURATION keyword in the PDS labels.
Definition: ProcessExportPds.h:216
Isis::ProcessExportPds::ForceCoreHis
void ForceCoreHis(bool force)
Mutator method to set how the CORE_HIGH_INSTR_SATURATION keyword will be handled.
Definition: ProcessExportPds.cpp:1309
Isis::ProcessExportPds::Fixed
@ Fixed
Fixed length records.
Definition: ProcessExportPds.h:112
Isis::ProcessExportPds
Process class for exporting cubes to PDS standards.
Definition: ProcessExportPds.h:78
Isis::ProcessExportPds::StandardPdsLabel
virtual Pvl & StandardPdsLabel(ProcessExportPds::PdsFileType type)
Create a standard PDS label of the type specified.
Definition: ProcessExportPds.cpp:92
Isis::ProcessExportPds::ForceCoreHrs
void ForceCoreHrs(bool force)
Mutator method to set how the CORE_HIGH_REPR_SATURATION keyword will be handled.
Definition: ProcessExportPds.cpp:1295
Isis::ProcessExportPds::PdsFileType
PdsFileType
File type to be exported.
Definition: ProcessExportPds.h:84
Isis::ProcessExportPds::m_forceSampleType
bool m_forceSampleType
Indicates whether to add the SAMPLE_TYPE keyword in the PDS labels.
Definition: ProcessExportPds.h:208
Isis::ProcessExportPds::ForceOffset
void ForceOffset(bool force)
Mutator method to set how the OFFSET keyword will be handled.
Definition: ProcessExportPds.cpp:1189
Isis::ProcessExportPds::m_forceCoreLrs
bool m_forceCoreLrs
Indicates whether to add the CORE_LOW_REPR_SATURATION keyword in the PDS labels.
Definition: ProcessExportPds.h:213
Isis::ProcessExportPds::Detached
bool Detached()
Accessor function returns true if the output PDS file is set to detached.
Definition: ProcessExportPds.cpp:1082
Isis::ProcessExportPds::ForceBandStorageType
void ForceBandStorageType(bool force)
Mutator method to set how the BAND_STORAGE_TYPE keyword will be handled.
Definition: ProcessExportPds.cpp:1176
Isis::ProcessExportPds::SpectralQube
@ SpectralQube
Three dimensional objects with two spatial dimensions and one spectral dimension.
Definition: ProcessExportPds.h:90
Isis::ProcessExport
Process class for exporting cubes.
Definition: ProcessExport.h:111
Isis::ProcessExportPds::m_tableBuffers
std::vector< char * > m_tableBuffers
Vector containing the binary table data for each of the added tables.
Definition: ProcessExportPds.h:242
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ProcessExportPds::m_forceScalingFactor
bool m_forceScalingFactor
Indicates whether to add the SCALING_FACTOR keyword in the PDS labels.
Definition: ProcessExportPds.h:200
Isis::ProcessExportPds::StartProcess
virtual void StartProcess(void funct(Isis::Buffer &in))
This method invokes the process operation over a single input cube.
Definition: ProcessExport.cpp:790
Isis::ProcessExportPds::ForceCoreNull
void ForceCoreNull(bool force)
Mutator method to set how the CORE_NULL keyword will be handled.
Definition: ProcessExportPds.cpp:1254