7#include "ProcessExportPds.h" 
   14#include "ExportPdsTable.h" 
   16#include "IException.h" 
   19#include "Projection.h" 
   20#include "ProjectionFactory.h" 
   23#include "PvlToPvlTranslationManager.h" 
   24#include "PvlFormatPds.h" 
   25#include "SpecialPixel.h" 
  108      QString msg = 
"Unsupported PDS output type";
 
 
  140      QString msg = 
"Invalid PDS export type.";
 
  154    mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportAllMapping.typ");
 
 
  173    if(mapTmp.hasObject(
"IMAGE_MAP_PROJECTION")) {
 
  174      mainPvl.findObject(
"QUBE").addObject(mapTmp.findObject(
"IMAGE_MAP_PROJECTION"));
 
 
  194    if(mapTmp.hasObject(
"IMAGE_MAP_PROJECTION")) {
 
  195      mainPvl.findObject(
"QUBE").addObject(mapTmp.findObject(
"IMAGE_MAP_PROJECTION"));
 
 
  207    mainPvl += 
PvlKeyword(
"PDS_VERSION_ID", 
"PDS3");
 
  208    mainPvl += 
PvlKeyword(
"RECORD_TYPE", 
"UNDEFINED");
 
  211    mainPvl += 
PvlKeyword(
"LABEL_RECORDS", 
"???????", 
"BYTES");
 
  214      int iFound = sImageFile.indexOf(
".lbl");
 
  216        sImageFile.replace(iFound, 4, 
".img");
 
  219        sImageFile += 
".img";
 
  222      mainPvl += 
PvlKeyword(
"^IMAGE", outFile.name());
 
  225      mainPvl += 
PvlKeyword(
"^IMAGE", 
"???????", 
"BYTES");
 
  229      mainPvl += 
PvlKeyword(
"CHECKSUM", 
"????????????????????????????????");
 
 
  240    mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageJP2.typ");
 
  242    mainPvl += 
PvlKeyword(
"PDS_VERSION_ID", 
"PDS3");
 
  245      int iFound = sImageFile.indexOf(
".lbl");
 
  247        sImageFile.replace(iFound, 4, 
".jp2");
 
  250        sImageFile += 
".jp2";
 
  254      QString msg = 
"Labels must be detached for JP2 files.";
 
  259    cmpObj += 
PvlKeyword(
"FILE_NAME", outFile.name());
 
  260    cmpObj += 
PvlKeyword(
"RECORD_TYPE", 
"UNDEFINED");
 
  262    cmpObj += 
PvlKeyword(
"ENCODING_TYPE_VERSION_NAME", 
"ISO/IEC15444-1:2004");
 
  263    cmpObj += 
PvlKeyword(
"INTERCHANGE_FORMAT", 
"BINARY");
 
  265    cmpObj += 
PvlKeyword(
"UNCOMPRESSED_FILE_NAME", infilename.name());
 
  268      QString msg = 
"JPEG2000 does not support floating point data.";
 
  272      storagebytes = storagebytes * 2;
 
  275    mainPvl.addObject(cmpObj);
 
  277    ucmpObj += 
PvlKeyword(
"FILE_NAME", infilename.name());
 
  278    ucmpObj += 
PvlKeyword(
"RECORD_TYPE", 
"FIXED_LENGTH");
 
  279    int recordbytes = 
InputCubes[0]->sampleCount();
 
  281      recordbytes = recordbytes * 2;
 
  285    ucmpObj += 
PvlKeyword(
"^IMAGE", infilename.name());
 
  286    mainPvl.addObject(ucmpObj);
 
 
  297    mainPvl += 
PvlKeyword(
"PDS_VERSION_ID", 
"PDS3");
 
  298    mainPvl += 
PvlKeyword(
"RECORD_TYPE", 
"FIXED_LENGTH");
 
  301    mainPvl += 
PvlKeyword(
"RECORD_BYTES", 
"???????");
 
  302    mainPvl += 
PvlKeyword(
"FILE_RECORDS", 
"???????");
 
  303    mainPvl += 
PvlKeyword(
"LABEL_RECORDS", 
"????");
 
  306      int iFound = sImageFile.indexOf(
".lbl");
 
  308        sImageFile.replace(iFound, 4, 
".img");
 
  311        sImageFile += 
".img";
 
  314      mainPvl += 
PvlKeyword(
"^IMAGE", outFile.name());
 
  320      mainPvl += 
PvlKeyword(
"CHECKSUM", 
"????????????????????????????????");
 
 
  331    mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageJP2.typ");
 
  333    mainPvl += 
PvlKeyword(
"PDS_VERSION_ID", 
"PDS3");
 
  336      int iFound = sImageFile.indexOf(
".lbl");
 
  338        sImageFile.replace(iFound, 4, 
".jp2");
 
  341        sImageFile += 
".jp2";
 
  345      QString msg = 
"Labels must be detached for JP2 files.";
 
  350    cmpObj += 
PvlKeyword(
"FILE_NAME", outFile.name());
 
  351    cmpObj += 
PvlKeyword(
"RECORD_TYPE", 
"UNDEFINED");
 
  353    cmpObj += 
PvlKeyword(
"ENCODING_TYPE_VERSION_NAME", 
"ISO/IEC15444-1:2004");
 
  354    cmpObj += 
PvlKeyword(
"INTERCHANGE_FORMAT", 
"BINARY");
 
  356    cmpObj += 
PvlKeyword(
"UNCOMPRESSED_FILE_NAME", infilename.name());
 
  359      QString msg = 
"JPEG2000 does not support floating point data.";
 
  363      storagebytes = storagebytes * 2;
 
  366    mainPvl.addObject(cmpObj);
 
  368    ucmpObj += 
PvlKeyword(
"FILE_NAME", infilename.name());
 
  369    ucmpObj += 
PvlKeyword(
"RECORD_TYPE", 
"FIXED_LENGTH");
 
  370    int recordbytes = 
InputCubes[0]->sampleCount();
 
  372      recordbytes = recordbytes * 2;
 
  376    ucmpObj += 
PvlKeyword(
"^IMAGE", infilename.name());
 
  377    mainPvl.addObject(ucmpObj);
 
 
  391    mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImage.typ");
 
  396    transfile = 
"$ISISROOT/appdata/translations/pdsExportImageImage.trn";
 
  398    Xlator.Auto(mainPvl);
 
  402    double multiplier = 1.0;
 
  417      multiplier = (maximum - minimum) / (x2 - x1);
 
  418      base = minimum - multiplier * x1;
 
  421      multiplier = (maximum - minimum) / (x2 - x1);
 
  422      base = minimum - multiplier * x1;
 
  425      multiplier = (maximum - minimum) / (x2 - x1);
 
  426      base = minimum - multiplier * x1;
 
  434    if(!
m_forceBandName && imgObj.hasKeyword(
"BAND_NAME")) imgObj.deleteKeyword(
"BAND_NAME");
 
  436    if(!
m_forceBandwidth && imgObj.hasKeyword(
"BANDWIDTH")) imgObj.deleteKeyword(
"BANDWIDTH");
 
  452      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel8.typ");
 
  463      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  474      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  485      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  496      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  513      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel32.typ");
 
  516      QString msg = 
"Unsupported PDS pixel type or sample size";
 
 
  532    mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImage.typ");
 
  534      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageJP2.typ");
 
  540    transfile = 
"$ISISROOT/appdata/translations/pdsExportImageJP2.trn";
 
  542    Xlator.Auto(mainPvl);
 
  546    double multiplier = 1.0;
 
  561      multiplier = (maximum - minimum) / (x2 - x1);
 
  562      base = minimum - multiplier * x1;
 
  565      multiplier = (maximum - minimum) / (x2 - x1);
 
  566      base = minimum - multiplier * x1;
 
  569      multiplier = (maximum - minimum) / (x2 - x1);
 
  570      base = minimum - multiplier * x1;
 
  578    if(!
m_forceBandName && imgObj.hasKeyword(
"BAND_NAME")) imgObj.deleteKeyword(
"BAND_NAME");
 
  580    if(!
m_forceBandwidth && imgObj.hasKeyword(
"BANDWIDTH")) imgObj.deleteKeyword(
"BANDWIDTH");
 
  596      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel8.typ");
 
  607      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  618      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  629      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  640      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel16.typ");
 
  657      mainPvl.format()->add(
"$ISISROOT/appdata/translations/pdsExportImageImagePixel32.typ");
 
  660      QString msg = 
"Unsupported PDS pixel type or sample size";
 
 
  678    if(inputLabel->hasObject(
"IsisCube") &&
 
  679        !(inputLabel->findObject(
"IsisCube").hasGroup(
"Mapping"))) 
return;
 
  685                                       "$ISISROOT/appdata/translations/pdsExport" + projName + 
".trn");
 
  686    xlatSpecProj.Auto(outputPvl);
 
  690                                     "$ISISROOT/appdata/translations/pdsExportTarget.trn");
 
  691    xlatTarget.Auto(outputPvl);
 
  700    PvlKeyword &aRadius = pdsMapObj[
"A_AXIS_RADIUS"];
 
  701    QString unit = aRadius.
unit();
 
  702    if( (unit.toUpper() == 
"METERS") || (unit == 
"") ) { 
 
  703      double dValue = (double)aRadius;
 
  705      aRadius.setValue(
toString(dValue), 
"KM");
 
  707    PvlKeyword &bRadius = pdsMapObj[
"B_AXIS_RADIUS"];
 
  708    unit = bRadius.unit();
 
  709    if( (unit.toUpper() == 
"METERS") || (unit == 
"") ) {
 
  710      double dValue = (double)bRadius;
 
  712      bRadius.setValue(
toString(dValue), 
"KM");
 
  714    PvlKeyword &cRadius = pdsMapObj[
"C_AXIS_RADIUS"];
 
  715    unit = cRadius.unit();
 
  716    if( (unit.toUpper() == 
"METERS") || (unit == 
"") ) {
 
  717      double dValue = (double)cRadius;
 
  719      cRadius.setValue(
toString(dValue), 
"KM");
 
  723    PvlKeyword &mapScale = pdsMapObj[
"MAP_SCALE"];
 
  724    unit = mapScale.unit();
 
  726    if( (unit.toUpper() == 
"METERS/PIX") || (unit.toUpper() == 
"METERS/PIXEL") || (unit == 
"") ) {
 
  728        double dValue = (double)mapScale;
 
  730        mapScale.setValue(
toString(dValue), 
"KM/PIXEL");
 
  733        mapScale.setValue(
toString((
double)mapScale), 
"METERS/PIXEL");
 
  736    PvlKeyword &mapRes = pdsMapObj[
"MAP_RESOLUTION"];
 
  737    unit = mapRes.unit();
 
  739    if( (unit.toUpper() == 
"PIXELS/DEGREE") || (unit == 
"") ) {
 
  740      mapRes.setValue((QString)mapRes, 
"PIX/DEG");
 
  744    PvlKeyword &isisLonDir = inputMapping.findKeyword(
"LongitudeDirection");
 
  745    QString lonDir = isisLonDir[0];
 
  746    lonDir = lonDir.toUpper();
 
  747    if (inputMapping.hasKeyword(
"MaximumLongitude") && inputMapping.hasKeyword(
"MinimumLongitude")) {
 
  748      double maxLon = inputMapping.findKeyword(
"MaximumLongitude");
 
  749      double minLon = inputMapping.findKeyword(
"MinimumLongitude");
 
  750      if(lonDir == 
"POSITIVEEAST") {
 
  764    double lineOffset = inputMapping.findKeyword(
"UpperLeftCornerY");
 
  765    lineOffset /= (double)inputMapping.findKeyword(
"PixelResolution");
 
  769    double sampleOffset = inputMapping.findKeyword(
"UpperLeftCornerX");
 
  770    sampleOffset /= (double)inputMapping.findKeyword(
"PixelResolution");
 
  771    sampleOffset *= -1.0;
 
  776    if(pdsMapObj.hasKeyword(
"CENTER_LATITUDE")) {
 
  777      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"CENTER_LATITUDE");
 
  778      tempKey.
setValue(tempKey[0], 
"DEG");
 
  780    if(pdsMapObj.hasKeyword(
"CENTER_LONGITUDE")) {
 
  781      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"CENTER_LONGITUDE");
 
  782      tempKey.
setValue(tempKey[0], 
"DEG");
 
  788    if(pdsMapObj.hasKeyword(
"REFERENCE_LONGITUDE")) {
 
  789      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"REFERENCE_LONGITUDE");
 
  790      tempKey.
setValue(tempKey[0], 
"DEG");
 
  792    if(pdsMapObj.hasKeyword(
"MAXIMUM_LATITUDE")) {
 
  793      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"MAXIMUM_LATITUDE");
 
  794      tempKey.
setValue(tempKey[0], 
"DEG");
 
  796    if(pdsMapObj.hasKeyword(
"MINIMUM_LATITUDE")) {
 
  797      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"MINIMUM_LATITUDE");
 
  798      tempKey.
setValue(tempKey[0], 
"DEG");
 
  800    if(pdsMapObj.hasKeyword(
"EASTERNMOST_LONGITUDE")) {
 
  801      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"EASTERNMOST_LONGITUDE");
 
  802      tempKey.
setValue(tempKey[0], 
"DEG");
 
  804    if(pdsMapObj.hasKeyword(
"WESTERNMOST_LONGITUDE")) {
 
  805      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"WESTERNMOST_LONGITUDE");
 
  806      tempKey.
setValue(tempKey[0], 
"DEG");
 
  808    if(pdsMapObj.hasKeyword(
"MAP_PROJECTION_ROTATION")) {
 
  809      PvlKeyword &tempKey = pdsMapObj.findKeyword(
"MAP_PROJECTION_ROTATION");
 
  810      tempKey.
setValue(tempKey[0], 
"DEG");
 
 
  825    QString name = proj->Name();
 
 
  852    if(
m_label->format() != NULL) {
 
 
  868      QString msg = 
"Unable to output detached label. Use " 
  869                    "ProcessExportPds::SetDetached() to set the " 
  870                    "output PDS label file name.";
 
  875    sOutLabelStream.close();
 
 
  892        (*m_label)[
"LABEL_RECORDS"].setValue(
toString(labSize), 
"BYTES");
 
  894          (*m_label)[
"^IMAGE"].setValue(
toString(labSize + 1), 
"BYTES");
 
  897      if(
m_label->format() != NULL) {
 
  905        for(
int i = 
LabelSize(); i < labSize; ++i) os << 
' ';
 
  913        (*m_label)[
"RECORD_BYTES"].setValue(
toString(lineBytes));
 
  917        labelRecords = (int)ceil((
double)labSize / (double)lineBytes);
 
  919          (*m_label)[
"LABEL_RECORDS"].setValue(
toString(labelRecords));
 
  921        int totalTableRecords = 0;
 
  927        int fileRecords = labelRecords + imageRecords + totalTableRecords;
 
  928        (*m_label)[
"FILE_RECORDS"].setValue(
toString(fileRecords));
 
  931          (*m_label)[
"^IMAGE"].setValue(
toString(labelRecords + 1));
 
  934      if(
m_label->format() != NULL) {
 
  941        for(
int i = 
LabelSize(); i < labelRecords * lineBytes; ++i) os << 
' ';
 
 
  959    pdsFileStream.seekp(0);
 
  960    (*m_label)[
"CHECKSUM"].setValue(
checksum());
 
 
  998    if(
Attached() && detachedPdsTableFileName != 
"") {
 
  999      QString msg = 
"The output PDS file has been set to attached and a " 
 1000                    "detached PDS table file name has been given. If detached " 
 1001                    "is preferred, set the process to detached SetDetached() " 
 1002                    "and call StandardPdsLabel() before calling ExportTable().";
 
 1006    if(
Detached() && detachedPdsTableFileName == 
"") {
 
 1007      QString msg = 
"The output PDS file has been set to detached. A file name " 
 1008                    "for the detached ouput PDS table file is required. " 
 1009                    "If an attached output file is prefered, use the method " 
 1010                    "ProcessExportPds::SetAttached() before calling ExportTable().";
 
 1019    char *tableBuffer = 
new char[isisTable.Records() * fileRecordBytes];
 
 1020    PvlObject metadata = pdsTable.exportTable(tableBuffer,
 
 1023    QString pdsTableName = pdsTable.formatPdsTableName();
 
 1028      int labelRecords = (int)ceil((
double)labSize / (double)fileRecordBytes);
 
 1029      int imageRecords = 
InputCubes[0]->lineCount()
 
 1031      int totalTableRecords = 0;
 
 1036      int tableStartRecord = 1 + labelRecords + imageRecords + totalTableRecords;
 
 1040      mainPvl += 
PvlKeyword(
"^" + pdsTableName, detachedPdsTableFileName);
 
 1042      QString tableFileWithPath = labelFile.path() + 
"/" 
 1043                                  + detachedPdsTableFileName;
 
 1044      ofstream os(tableFileWithPath.toLatin1().data());
 
 1045      os.write(tableBuffer, isisTable.Records() * fileRecordBytes);
 
 1048    mainPvl.addObject(metadata);
 
 
 1325          QString msg = 
"Unable to add tables to PDS output file.";
 
 
IO Handler for Isis Cubes.
 
Export a PDS table from an ISIS Table.
 
File name manipulation and expansion.
 
@ Unknown
A type of error that cannot be classified as any of the other error types.
 
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
 
@ Programmer
This error is for when a programmer made an API call that was illegal.
 
double OutputNull()
Return the output special pixel value for NULL.
 
double OutputHis()
Return the output special pixel value for HIS.
 
double OutputLrs()
Return the output special pixel value for LRS.
 
QString checksum()
@description Generates a file checksum.
 
double OutputLis()
Return the output special pixel value for LIS.
 
double p_outputMinimum
Desired minimum pixel value in the Buffer.
 
double p_outputMaximum
Desired maximum pixel value in the Buffer.
 
double OutputHrs()
Return the output special pixel value for HRS.
 
std::vector< double > p_inputMaximum
Maximum pixel value in the input cube to be mapped to the maximum value in the Buffer.
 
virtual void StartProcess(void funct(Isis::Buffer &in))
This method invokes the process operation over a single input cube.
 
bool canGenerateChecksum()
@description Return if we can generate a checksum
 
@ JP2
Compressed JPEG2000.
 
PixelType p_pixelType
The bits per pixel of the output image.
 
ByteOrder p_endianType
The byte order of the output file.
 
void setFormat(ExportFormat format)
Sets the storage order of the output file.
 
std::vector< double > p_inputMinimum
Minimum pixel value in the input cube to be mapped to the minimum value in the Buffer.
 
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.
 
~ProcessExportPds()
Destructor.
 
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.
 
@ 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.
 
@ Image
Two dimensional array of line/sample values.
 
@ JP2Image
Image coding system JPEG 2000 formatted image.
 
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.
 
std::vector< Isis::Cube * > InputCubes
A vector of pointers to opened Cube objects.
 
static Isis::Projection * Create(Isis::Pvl &label, bool allowDefaults=false)
This method returns a pointer to a Projection object.
 
Base class for Map Projections.
 
Contains multiple PvlContainers.
 
Container for cube-like labels.
 
void setTerminator(const QString &term)
Sets the terminator used to signify the end of the PVL informationDefaults to "END".
 
A single keyword-value pair.
 
QString unit(const int index=0) const
Returns the units of measurement of the element of the array of values for the object at the specifie...
 
void setValue(QString value, QString unit="")
Sets new values.
 
Contains Pvl Groups and Pvl Objects.
 
bool hasKeyword(const QString &kname, FindOptions opts) const
See if a keyword is in the current PvlObject, or deeper inside other PvlObjects and Pvlgroups within ...
 
PvlObjectIterator findObject(const QString &name, PvlObjectIterator beg, PvlObjectIterator end)
Find the index of object with a specified name, between two indexes.
 
@ Traverse
Search child objects.
 
Allows applications to translate simple text files.
 
Class for storing Table blobs information.
 
This is free and unencumbered software released into the public domain.
 
int SizeOf(Isis::PixelType pixelType)
Returns the number of bytes of the specified PixelType.
 
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
 
long long int BigInt
Big int.
 
Namespace for the standard library.