Isis 3 Programmer Reference
ProcessExportPds.h
1#ifndef ProcessExportPds_h
2#define ProcessExportPds_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include "ProcessExport.h"
11#include <vector>
12
13class QString;
14
15namespace Isis {
16 class PvlFormatPds;
17 class Table;
18
79 public:
85 Image,
87 Qube,
95 };
96
104
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
Process class for exporting cubes.
virtual void StartProcess(void funct(Isis::Buffer &in))
This method invokes the process operation over a single input cube.
Process class for exporting cubes to PDS standards.
void SetAttached()
Mutator method to set the output PDS file to attached.
bool m_forceOffset
Indicates whether to add the OFFSET keyword in the PDS labels.
void ForceCoreHrs(bool force)
Mutator method to set how the CORE_HIGH_REPR_SATURATION keyword will be handled.
bool m_detachedLabel
Indicates whether the PDS file will be detached.
PdsExportType m_exportType
Stream or Fixed.
std::vector< int > m_tableStartRecord
Record number where the added table data begins.
void StandardAllMapping(Pvl &mainPvl)
Create the standard keywords for the IMAGE_MAP_PROJECTION group in a PDS label.
void FixedImageRoot(Pvl &mainPvl)
Create the fixed keywords for the ROOT object in a PDS IMAGE file.
void StreamJP2ImageRoot(Pvl &mainPvl)
Create the standard keywords for the ROOT object in a PDS JP2 IMAGE file.
void StartProcess(std::ofstream &fout)
This method fills the image data of the PDS file using the parent class ProcessExport::StartProcess,...
void ForceSampleBits(bool force)
Mutator method to set how the SAMPLE_BITS keyword will be handled.
ProcessExportPds()
Default Constructor - Set to default the data members.
bool Detached()
Accessor function returns true if the output PDS file is set to detached.
void SetDetached(QString detachedLabelFile)
Mutator method to set the output PDS file to detached.
std::vector< char * > m_tableBuffers
Vector containing the binary table data for each of the added tables.
void updateChecksumInLabel(std::ofstream &pdsFileStream)
Updates the CHECKSUM value on the label and rewrites to the output file.
void OutputDetachedLabel()
Write the PDS label to the a detached file.
void ForceScalingFactor(bool force)
Mutator method to set how the SCALING_FACTOR keyword will be handled.
PvlFormatPds * m_formatter
Used to determine how to format the keyword values in the PDS file.
virtual void CreateImageLabel()
Create a standard PDS label for type IMAGE.
bool m_forceBands
Indicates whether to keep the BANDS keyword in the PDS labels.
bool m_forceCoreHrs
Indicates whether to add the CORE_HIGH_REPR_SATURATION keyword in the PDS labels.
int LineBytes()
Return the line bytes (record size) for the input cube, at present this is based on the number of sam...
void StreamImageRoot(Pvl &mainPvl)
Create the standard keywords for the ROOT object in a PDS IMAGE file.
void CreateSpectralQubeLabel()
Create a standard PDS label for type SPECTRAL_QUBE.
void SetPdsResolution(PdsResolution resolutionUnits)
Mutator method to set the output PDS image resolution to meters per pixel or kilometers per pixel.
void CreateQubeLabel()
Create a standard PDS label for type QUBE.
void ExportTable(Isis::Table isisTable, QString detachedPdsTableFileName="")
This method will add a table to be exported to PDS.
void ForceCoreNull(bool force)
Mutator method to set how the CORE_NULL keyword will be handled.
void ForceCoreLrs(bool force)
Mutator method to set how the CORE_LOW_REPR_SATURATION keyword will be handled.
bool m_forceBandName
Indicates whether to keep the BAND_NAME keyword in the PDS labels.
std::vector< int > m_tableRecords
Number of records in each added table.
bool m_forceCenterFilterWavelength
Indicates whether to keep the CENTER_FILTER_WAVELENGTH keyword in the PDS labels.
QString ProjectionName(Pvl &inputLabel)
Return a projection name.
void ForceBandwidth(bool force)
Mutator method to set how the BANDWIDTH keyword will be handled.
bool m_forceSampleBitMask
Indicates whether to add the SAMPLE_BIT_MASK keyword in the PDS labels.
void ForceSampleType(bool force)
Mutator method to set how the SAMPLE_TYPE keyword will be handled.
void ForceCoreLis(bool force)
Mutator method to set how the CORE_LOW_INSTR_SATURATION keyword will be handled.
QString m_detachedPdsLabelFile
The name of the detached PDS label file.
PdsFileType m_pdsFileType
Image, Qube, Spectral Qube, or JP2 Image.
PdsResolution m_exportResolution
Meters or kilometers.
bool m_forceSampleBits
Indicates whether to add the SAMPLE_BITS keyword in the PDS labels.
int LabelSize()
Return the size of the output PDS label.
void ForceBandName(bool force)
Mutator method to set how the BAND_NAME keyword will be handled.
void StandardJP2Image(Pvl &mainPvl)
Create the standard keywords for an IMAGE object in a PDS JP2 IMAGE file.
void SetExportType(PdsExportType recordFormat)
Mutator method to set the output PDS image record type to stream or fixed.
void ForceSampleBitMask(bool force)
Mutator method to set how the SAMPLE_BIT_MASK keyword will be handled.
virtual Pvl & StandardPdsLabel(ProcessExportPds::PdsFileType type)
Create a standard PDS label of the type specified.
bool m_forceCoreLis
Indicates whether to add the CORE_LOW_INSTR_SATURATION keyword in the PDS labels.
void StandardImageImage(Pvl &mainPvl)
Create the standard keywords for an IMAGE object in a PDS IMAGE file.
bool m_forceCoreHis
Indicates whether to add the CORE_HIGH_INSTR_SATURATION keyword in the PDS labels.
void FixedJP2ImageRoot(Pvl &mainPvl)
Create the fixed keywords for the ROOT object in a PDS JP2 IMAGE file.
void OutputLabel(std::ofstream &pdsFileStream)
Write the PDS label to the supplied stream.
PdsResolution
Resolution units per pixel of the exported PDS file.
@ Meter
Meters per pixel.
@ Kilometer
Kilometers per pixel.
PdsExportType
Record format type of exported PDS file.
@ Stream
Stream Records. This type is generally used for ASCII files.
@ Fixed
Fixed length records.
void ForceBandStorageType(bool force)
Mutator method to set how the BAND_STORAGE_TYPE keyword will be handled.
void ForceBands(bool force)
Mutator method to set how the the BANDS keyword will be handled.
bool m_forceBandwidth
Indicates whether to keep the BANDWIDTH keyword in the PDS labels.
bool m_forceSampleType
Indicates whether to add the SAMPLE_TYPE keyword in the PDS labels.
PdsFileType
File type to be exported.
@ Qube
Multi-dimensional array (1-3 dimensional) whose axes may be interpreted as line/sample/band.
@ Image
Two dimensional array of line/sample values.
@ JP2Image
Image coding system JPEG 2000 formatted image.
@ SpectralQube
Three dimensional objects with two spatial dimensions and one spectral dimension.
bool m_forceScalingFactor
Indicates whether to add the SCALING_FACTOR keyword in the PDS labels.
void ForceCoreHis(bool force)
Mutator method to set how the CORE_HIGH_INSTR_SATURATION keyword will be handled.
void ForceOffset(bool force)
Mutator method to set how the OFFSET keyword will be handled.
Pvl * m_label
Exported PDS label.
void ForceCenterFilterWavelength(bool force)
Mutator method to set how the CENTER_FILTER_WAVELENGTH keyword will be handled.
bool m_forceCoreNull
Indicates whether to add the CORE_NULL keyword in the PDS labels.
bool m_forceCoreLrs
Indicates whether to add the CORE_LOW_REPR_SATURATION keyword in the PDS labels.
bool m_forceBandStorageType
Indicates whether to add the BAND_STORAGE_TYPE keyword in the PDS labels.
bool Attached()
Accessor function returns true if the output PDS file is set to attached.
Formats the value of a PvlKeyword into a PDS complient string.
Container for cube-like labels.
Definition Pvl.h:119
Class for storing Table blobs information.
Definition Table.h:61
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16