44 Pvl &lab = *cube.
label();
45 PvlGroup &inst = lab.findGroup(
"Instrument", Pvl::Traverse);
47 if(inst[
"InstrumentId"][0] !=
"Marci") {
48 string msg =
"The image does not appear to be a Marci Image";
49 throw IException(IException::User, msg, _FILEINFO_);
61 int sumMode = inst[
"SummingMode"];
65 QString stime = inst[
"SpacecraftClockCount"];
71 map<QString, int> filterToDetectorOffset;
72 filterToDetectorOffset.insert(pair<QString, int>(
"BLUE", 709));
73 filterToDetectorOffset.insert(pair<QString, int>(
"GREEN", 734));
74 filterToDetectorOffset.insert(pair<QString, int>(
"ORANGE", 760));
75 filterToDetectorOffset.insert(pair<QString, int>(
"RED", 786));
76 filterToDetectorOffset.insert(pair<QString, int>(
"NIR", 811));
77 filterToDetectorOffset.insert(pair<QString, int>(
"LONG_UV", 266));
78 filterToDetectorOffset.insert(pair<QString, int>(
"SHORT_UV", 293));
80 map<QString, int> filterToFilterNumbers;
81 filterToFilterNumbers.insert(pair<QString, int>(
"BLUE", 0));
82 filterToFilterNumbers.insert(pair<QString, int>(
"GREEN", 1));
83 filterToFilterNumbers.insert(pair<QString, int>(
"ORANGE", 2));
84 filterToFilterNumbers.insert(pair<QString, int>(
"RED", 3));
85 filterToFilterNumbers.insert(pair<QString, int>(
"NIR", 4));
86 filterToFilterNumbers.insert(pair<QString, int>(
"LONG_UV", 5));
87 filterToFilterNumbers.insert(pair<QString, int>(
"SHORT_UV", 6));
89 int frameletOffsetFactor = inst[
"ColorOffset"];
91 if((
int)inst[
"DataFlipped"] != 0) frameletOffsetFactor *= -1;
92 map<QString, int> filterToFrameletOffset;
93 filterToFrameletOffset.insert(pair<QString, int>(
"NIR", 0 * frameletOffsetFactor));
94 filterToFrameletOffset.insert(pair<QString, int>(
"RED", 1 * frameletOffsetFactor));
95 filterToFrameletOffset.insert(pair<QString, int>(
"ORANGE", 2 * frameletOffsetFactor));
96 filterToFrameletOffset.insert(pair<QString, int>(
"GREEN", 3 * frameletOffsetFactor));
97 filterToFrameletOffset.insert(pair<QString, int>(
"BLUE", 4 * frameletOffsetFactor));
98 filterToFrameletOffset.insert(pair<QString, int>(
"LONG_UV", 5 * frameletOffsetFactor));
99 filterToFrameletOffset.insert(pair<QString, int>(
"SHORT_UV", 6 * frameletOffsetFactor));
102 const PvlGroup &bandBin = lab.findGroup(
"BandBin", Pvl::Traverse);
103 const PvlKeyword &filtNames = bandBin[
"FilterName"];
105 for(
int i = 0; i < filtNames.size(); i++) {
106 if(filterToDetectorOffset.find(filtNames[i]) == filterToDetectorOffset.end()) {
107 QString msg =
"Unrecognized filter name [" + filtNames[i] +
"]";
108 throw IException(IException::Programmer, msg, _FILEINFO_);
111 p_detectorStartLines.push_back(filterToDetectorOffset.find(filtNames[i])->second);
112 p_filterNumbers.push_back(filterToFilterNumbers.find(filtNames[i])->second);
113 p_frameletOffsets.push_back(filterToFrameletOffset.find(filtNames[i])->second);
125 bool flippedFramelets = (int)inst[
"DataFlipped"] != 0;
139 string msg =
"Unrecognized NaifIkCode [" + IString((
int)
naifIkCode()) +
"]";
140 throw IException(IException::Programmer, msg, _FILEINFO_);
147 bool evenFramelets = (inst[
"Framelets"][0] ==
"Even");
156 else if(sumMode == 2) {
159 else if(sumMode == 4) {