USGS

Isis 3.0 Object Programmers' Reference

Home

CissLabels.cpp

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