|
Isis 3.0 Object Programmers' Reference |
Home |
00001 #include <string> 00002 #include "CissLabels.h" 00003 #include "Pvl.h" 00004 #include "PvlGroup.h" 00005 #include "SpecialPixel.h" 00006 #include "IException.h" 00007 #include "IString.h" 00008 00009 using namespace std; 00010 namespace Isis { 00016 CissLabels::CissLabels(Pvl &lab) { 00017 Init(lab); 00018 } 00019 00025 CissLabels::CissLabels(const QString &file) { 00026 Pvl lab(file); 00027 Init(lab); 00028 } 00029 00037 void CissLabels::Init(Pvl &lab) { 00038 try { 00039 ReadLabels(lab); 00040 ComputeImgProperties(); 00041 } 00042 catch(IException &e) { 00043 e.print(); 00044 string msg = "Labels do not appear contain a valid Cassini ISS instrument"; 00045 throw IException(IException::Unknown, msg, _FILEINFO_); 00046 } 00047 } 00048 00057 void CissLabels::ReadLabels(Pvl &lab) { 00058 // Get values out of the instrument group 00059 PvlGroup &inst = lab.FindGroup("Instrument", Pvl::Traverse); 00060 p_ABflag = (QString) inst["AntiBloomingStateFlag"]; //valid values: On, Off, Unknown 00061 p_biasStripMean = (double) inst["BiasStripMean"]; //valid values: real numbers 00062 p_compressionRatio = (QString) inst["CompressionRatio"]; //valid values: NotCompressed or real number 00063 p_compressionType = (QString) inst["CompressionType"]; //valid values: Lossy, Lossless, NotCompressed 00064 p_dataConversionType = (QString) inst["DataConversionType"]; //valid values: 12Bit, 8LSB, Table 00065 p_delayedReadoutFlag = (QString) inst["DelayedReadoutFlag"]; //valid values: Yes, No, Unknown 00066 p_exposureDuration = (double) inst["ExposureDuration"]; //valid values: real numbers 00067 p_flightSoftwareVersion = (QString) inst["FlightSoftwareVersionId"]; //valid values: Unknown, 1.2, 1.3, 1.4 00068 p_gainModeId = (int) inst["GainModeId"]; //valid values: 12, 29, 95, 215 00069 p_gainState = (int) inst["GainState"]; //valid values: 0, 1, 2, 3 00070 p_instrumentDataRate = (double) inst["InstrumentDataRate"]; //valid values: 60.9, 121.9, 182.8, 243.7, 304.6, 365.6, -999.0 00071 p_instrumentModeId = (QString) inst["InstrumentModeId"]; //valid values: Full, Sum2, Sum4 00072 p_instrumentId = (QString) inst["InstrumentId"]; //valid values: ISSNA, ISSWA 00073 p_readoutCycleIndex = (QString) inst["ReadoutCycleIndex"]; //valid values: Unknown or integers 0-15 00074 p_readoutOrder = (int) inst["ReadoutOrder"]; //valid values: 0 or 1 00075 p_shutterModeId = (QString) inst["ShutterModeId"]; //valid values: BothSim, NacOnly, WacOnly 00076 p_summingMode = (int) inst["SummingMode"]; //valid values: 1, 2, 4 00077 p_frontOpticsTemp = toDouble(inst["OpticsTemperature"][0]); //valid values: real numbers 00078 // Get values out of the archive group 00079 PvlGroup &arch = lab.FindGroup("Archive", Pvl::Traverse); 00080 p_imageNumber = (double) arch["ImageNumber"]; 00081 // Get values out of the bandbin group 00082 PvlGroup &bandbin = lab.FindGroup("BandBin", Pvl::Traverse); 00083 IString filter = (QString) bandbin["FilterName"]; 00084 p_filter.push_back(filter.Token("/").ToQt()); 00085 p_filter.push_back(filter.ToQt()); 00086 } 00087 00088 00096 void CissLabels::ComputeImgProperties() { 00097 //set boolean p_antiblooming if antiblooming flag is on 00098 if(p_ABflag == "On") p_antiblooming = true; 00099 else p_antiblooming = false; 00100 00101 //set boolean p_cissNA if camera type is narrow 00102 if(p_instrumentId == "ISSNA") p_cissNA = true; 00103 else p_cissNA = false; 00104 00105 //set filter 1 and filter 2 indices 00106 if(p_filter[0] == "UV1") p_filterIndex.push_back(0); 00107 else if(p_filter[0] == "UV2") p_filterIndex.push_back(1); 00108 else if(p_filter[0] == "BL1") p_filterIndex.push_back(3); 00109 else if(p_filter[0] == "RED") p_filterIndex.push_back(6); 00110 else if(p_filter[0] == "IR2") p_filterIndex.push_back(8); 00111 else if(p_filter[0] == "IR4") p_filterIndex.push_back(10); 00112 else if(p_filter[0] == "CL1") p_filterIndex.push_back(17); 00113 else if(p_filter[0] == "HAL") p_filterIndex.push_back(19); 00114 else if(p_filter[0] == "IRP0") p_filterIndex.push_back(20); 00115 else if(p_filter[0] == "P0") p_filterIndex.push_back(21); 00116 else if(p_filter[0] == "P60") p_filterIndex.push_back(22); 00117 else if(p_filter[0] == "P120") p_filterIndex.push_back(23); 00118 else if(p_filter[0] == "IR3") p_filterIndex.push_back(24); 00119 else if(p_filter[0] == "IR5") p_filterIndex.push_back(25); 00120 else if(p_filter[0] == "CB3") p_filterIndex.push_back(26); 00121 else if(p_filter[0] == "MT3") p_filterIndex.push_back(27); 00122 else if(p_filter[0] == "CB2") p_filterIndex.push_back(28); 00123 else if(p_filter[0] == "MT2") p_filterIndex.push_back(29); 00124 else throw IException(IException::Unknown, "Labels have invalid filter 1 name. Cannot get filter 1 index.", _FILEINFO_); 00125 00126 if(p_filter[1] == "UV3") p_filterIndex.push_back(2); 00127 else if(p_filter[1] == "BL2") p_filterIndex.push_back(4); 00128 else if(p_filter[1] == "GRN") p_filterIndex.push_back(5); 00129 else if(p_filter[1] == "IR1") p_filterIndex.push_back(7); 00130 else if(p_filter[1] == "IR3") p_filterIndex.push_back(9); 00131 else if(p_filter[1] == "CB1") p_filterIndex.push_back(11); 00132 else if(p_filter[1] == "CB2") p_filterIndex.push_back(12); 00133 else if(p_filter[1] == "CB3") p_filterIndex.push_back(13); 00134 else if(p_filter[1] == "MT1") p_filterIndex.push_back(14); 00135 else if(p_filter[1] == "MT2") p_filterIndex.push_back(15); 00136 else if(p_filter[1] == "MT3") p_filterIndex.push_back(16); 00137 else if(p_filter[1] == "CL2") p_filterIndex.push_back(18); 00138 else if(p_filter[1] == "RED") p_filterIndex.push_back(30); 00139 else if(p_filter[1] == "BL1") p_filterIndex.push_back(31); 00140 else if(p_filter[1] == "VIO") p_filterIndex.push_back(32); 00141 else if(p_filter[1] == "HAL") p_filterIndex.push_back(33); 00142 else if(p_filter[1] == "IRP90") p_filterIndex.push_back(34); 00143 else if(p_filter[1] == "IRP0") p_filterIndex.push_back(35); 00144 else throw IException(IException::Unknown, "Labels have invalid filter 2 name. Cannot get filter 2 index.", _FILEINFO_); 00145 return; 00146 } 00147 } 00148