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.