Isis 3 Programmer Reference
ProcessImportPds.h
1#ifndef ProcessImportPds_h
2#define ProcessImportPds_h
8/* SPDX-License-Identifier: CC0-1.0 */
9#include "ProcessImport.h"
10
11#include <vector>
12
13#include "Pvl.h"
14#include "PvlGroup.h"
15#include <QString>
16
17namespace Isis {
18 class PvlToPvlTranslationManager;
19 class Table;
215
216 public:
217 enum PdsFileType {
218 Image = 1,
219 Qube = 2,
220 SpectralQube = 4,
221 L0 = 8,
222 Rdn = 16,
223 Loc = 32,
224 Obs = 64,
225 CombinedSpectrum = 128,
226 All = Image | Qube | SpectralQube | L0 | Rdn | Loc | Obs | CombinedSpectrum
227 };
229 virtual ~ProcessImportPds();
232 void SetPdsFile(const QString &pdsLabelFile, const QString &pdsDataFile,
233 Pvl &pdsLabel, PdsFileType allowedTypes = All);
234 void SetPdsFile(const Pvl &pdsLabelPvl, const QString &pdsDataFile,
235 PdsFileType allowedTypes = All);
236 void ProcessLabel(const QString &pdsDataFile, PdsFileType allowedTypes);
237
238 void TranslatePdsProjection(Pvl &lab);
239 void TranslateIsis2Labels(Pvl &lab);
240 void TranslatePdsLabels(Pvl &lab);
241
242 bool IsIsis2();
243
244 void OmitOriginalLabel();
245
246 Table &ImportTable(QString pdsTableName);
247 // since we are overriding StartProcess(), we must specify for other
248 // overloaded calls to StartProcess(), the ProcessImport class method
249 // definitions should be used.
251 void StartProcess();
252 void StartProcess(void funct(Isis::Buffer &out));
253 void EndProcess();
254 void Finalize();
255 private:
256
257
258 enum Source {
259 NOSOURCE,
260 PDS,
261 ISIS2
262 };
263
264 enum EncodingType {
265 NONE,
266 JP2
267 };
268
270 const bool & calcOffsetOnly);
272 void ProcessSpecialPixels(PvlToPvlTranslationManager & pdsXlater, const bool & isQube);
273
274 void ProcessPdsImageLabel(const QString &pdsDataFile);
275 void ProcessPdsQubeLabel(const QString &pdsDataFile, const QString &transFile);
276 void ProcessPdsM3Label(const QString &pdsDataFile, PdsFileType fileType);
277 void ProcessPdsCombinedSpectrumLabel(const QString &pdsDataFile);
278
280 void GetProjectionOffsetMults(double &xoff, double &yoff,
281 double &xmult, double &ymult);
282
283 void IdentifySource(Pvl &lab);
284
285 void TranslateIsis2BandBin(Pvl &lab);
286 void TranslateIsis2Instrument(Pvl &lab);
287 void TranslatePdsBandBin(Pvl &lab);
288 void TranslatePdsArchive(Pvl &lab);
289
291 QString p_labelFile;
292
293 QString p_transDir;
294
295 // Encoding info
296 EncodingType p_encodingType;
299 QString p_jp2File;
302 // Projection info
303 QString p_projection;
311 QString p_targetName;
334 double p_rotation;
336 double p_sampleProjectionOffset;
337 double p_lineProjectionOffset;
338 double p_upperLeftX;
339 double p_upperLeftY;
340
343 std::vector<Table> p_tables;
347 Source p_source;
348 };
349};
350
351#endif
Buffer for reading and writing cube data.
Definition Buffer.h:53
This represents a cube in a project-based GUI interface.
Definition Image.h:107
virtual void StartProcess()
Process the input file and write it to the output.
Convert PDS archive files to Isis format.
EncodingType p_encodingType
The encoding type of the image data.
QString p_labelFile
The filename where the PDS label came from.
void GetProjectionOffsetMults(double &xoff, double &yoff, double &xmult, double &ymult)
Read mults and offsets from a def file in order to calculate the upper left x/y.
void TranslatePdsBandBin(Pvl &lab)
Fill as many of the Isis BandBin labels as possible.
double p_scaleFactor
The scale factor found in the PDS projection labels.
double p_minimumLongitude
Minimum longitude found in the PDS projection labels.
bool p_keepOriginalLabel
determines whether or not to keep the OriginalLabel blob.
void TranslateIsis2Labels(Pvl &lab)
Translate as many of the ISIS2 labels as possible.
void IdentifySource(Pvl &lab)
Identify the source of this file PDS or ISIS2.
std::vector< Table > p_tables
Vector of Isis Table objects that were imported from PDS and need to be added to the imported cube fi...
double p_minimumLatitude
Minimum latitude found in the PDS projection labels.
QString p_jp2File
The name of the file containing the encoded JP2 data.
QString p_transDir
Base data directory.
void SetPdsFile(const QString &pdsLabelFile, const QString &pdsDataFile, Pvl &pdsLabel, PdsFileType allowedTypes=All)
Set the input label file, data file and initialize a Pvl with the PDS labels.
QString p_longitudeDirection
Longitude direction found in the PDS projection labels.
double p_maximumLatitude
Maximum latitude found in the PDS projection labels.
double p_equatorialRadius
Equatorial radius found in the PDS projection labels.
void StartProcess()
This method will write the cube and table data to the output cube.
void OmitOriginalLabel()
Prevents the Original Label blob from being written out to the end of the cube.
void TranslateIsis2BandBin(Pvl &lab)
Fill as many of the Isis BandBin labels as possible.
Pvl p_pdsLabel
Internalized PDS label.
void ProcessDataFilePointer(PvlToPvlTranslationManager &pdsXlater, const bool &calcOffsetOnly)
Handles the DataFilePointer keyword, aka ^QUBE or ^IMAGE.
void TranslatePdsProjection(Pvl &lab)
Fills the passed in label with the projection information from the PDS label file.
void ProcessPixelBitandType(PvlToPvlTranslationManager &pdsXlater)
Handles PixelType and BitsPerPixel Calls SetPixelType with the correct values.
void ExtractPdsProjection(PvlToPvlTranslationManager &pdsXlater)
Extract all possible PDS projection parameters from the PDS label.
bool p_projectionOffsetChange
Whether the projection offsets were updated upon loading.
void TranslatePdsArchive(Pvl &lab)
Fill as many of the Isis BandBin labels as possible.
void ProcessSpecialPixels(PvlToPvlTranslationManager &pdsXlater, const bool &isQube)
Handles all special pixel setting, ultimately, calls SetSpecialValues.
double p_maximumLongitude
Maximum longitude found in the PDS projection labels.
bool GetProjectionOffsetChange()
Return whether the projection offsets have changed.
void ProcessPdsQubeLabel(const QString &pdsDataFile, const QString &transFile)
Process the PDS label of type QUBE or SPECTRALQUBE.
bool IsIsis2()
Return true if ISIS2 cube, else return false.
double p_polarRadius
The polar radius found in the PDS projection labels.
void ProcessPdsCombinedSpectrumLabel(const QString &pdsDataFile)
Process the PDS label of type CombinedSpectrum.
Table & ImportTable(QString pdsTableName)
This method will import the PDS table with the given name into an Isis Table object.
int p_longitudeDomain
Longitude domain found in the PDS projection labels.
void ProcessPdsImageLabel(const QString &pdsDataFile)
Process the PDS label of type IMAGE.
void TranslatePdsLabels(Pvl &lab)
Translate as many of the PDS labels as possible.
PvlGroup GetProjectionOffsetGroup()
Return the projection offsets.
void ProcessPdsM3Label(const QString &pdsDataFile, PdsFileType fileType)
Process Chandrayaan M3 PDS label.
QString p_projection
The name of the projection found in the PDS projection labels.
double p_rotation
The rotation found in the PDS labels.
void ProcessLabel(const QString &pdsDataFile, PdsFileType allowedTypes)
Load the PDS labels after determining what type of data file was provided.
PvlGroup p_projectionOffsetGroup
Log information for projection offsets.
double p_pixelResolution
Pixel resolution found in the PDS projection labels.
void TranslateIsis2Instrument(Pvl &lab)
Fill as many of the Isis instrument labels as possible.
void Finalize()
End the processing sequence and cleans up by closing cubes, freeing memory, etc.
QString p_latitudeType
The latitude type found in the PDS projection labels.
Contains multiple PvlContainers.
Definition PvlGroup.h:41
Container for cube-like labels.
Definition Pvl.h:119
Allows applications to translate simple text files.
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