Unverified Commit 2c40e08c authored by jlaura's avatar jlaura Committed by GitHub
Browse files

Updates KaguyaTC ingest for SPSupport data (#4688)

* Updates KaguyaTC ingest for SPSupport data

* Adds gtest for spsupport ingest

* Updates changelog

* typo fix in qmsg

* Update label; was invalid for ISIS

* Updates test for linesampleing interval
parent 4aaa4d64
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ Keywords when running CAMSTATS. [#3605](https://github.com/USGS-Astrogeology/IS
- Added the ability to search filenames in measure's drop down boxes in Qnet Point Editor. [#4581](https://github.com/USGS-Astrogeology/ISIS3/issues/4581)
- Added slope, local normal, and ellipsoid normal calculations to phocube. [#3635](https://github.com/USGS-Astrogeology/ISIS3/issues/3645)
- Added additional translation files for TGO CaSSiS in order to support PSA compliant labels. [#4567](https://github.com/USGS-Astrogeology/ISIS3/issues/4567)
- Added support for KaguyaTC SP Support data ingest. [#4668](https://github.com/USGS-Astrogeology/ISIS3/issues/4668)

### Deprecated
- Deprecated edrget as discussed in [#3313](https://github.com/USGS-Astrogeology/ISIS3/issues/3313).
+2 −1
Original line number Diff line number Diff line
@@ -50,13 +50,14 @@ namespace Isis {
        && id != "TC2_Level2B"
        && id != "SLN-L-TC-3-S-LEVEL2B0-V1.0"
        && id != "SLN-L-TC-3-W-LEVEL2B0-V1.0"
        && id != "SLN-L-TC-3-SP-SUPPORT-LEVEL2B0-V1.0"
        && id != "SLN-L-TC-5-MORNING-MAP-V4.0") {
      QString msg = "Input file [" + labelFile + "] does not appear to be " +
                    "a supported Kaguya Terrain Camera format. " +
                    "DATA_SET_ID is [" + id + "]" +
                    "Valid formats include [TC_MAP, TCO_MAP, TC1_Level2B, " +
                    "SLN-L-TC-3-S-LEVEL2B0-V1.0, SLN-L-TC-3-W-LEVEL2B0-V1.0, " +
		    "SLN-L-TC-5-MORNING-MAP-V4.0]";
		                "SLN-L-TC-3-SP-SUPPORT-LEVEL2B0-V1.0, SLN-L-TC-5-MORNING-MAP-V4.0]";
      throw IException(IException::Unknown, msg, _FILEINFO_);
    }

+73 −0
Original line number Diff line number Diff line
@@ -86,3 +86,76 @@ TEST(kaguyatc2isisTest, kaguyatc2isisTestDefault) {
  ASSERT_EQ(int(kern["NaifCkCode"]), -131350);
  ASSERT_EQ(int(kern["NaifFrameCode"]), -131351);
}

TEST(kaguyatc2isisTest, kaguyatc2isisTestSpSupport) {
  Pvl appLog;
  QTemporaryDir prefix;
  QString cubeFileName = prefix.path() + "/kaguyatc2isisTEMP.cub";
  QVector<QString> args = {"from=data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.lbl", "to="+cubeFileName};

  UserInterface options(APP_XML, args);
  try {
    kaguyatc2isis(options, &appLog);
  }
  catch (IException &e) {
    FAIL() << "Unable to ingest Kaguya TC image: " <<e.toString().toStdString().c_str() << std::endl;
  }

  Cube cube(cubeFileName);
  Pvl *isisLabel = cube.label();

  // Dimensions group
  ASSERT_EQ(cube.sampleCount(), 1744);
  ASSERT_EQ(cube.lineCount(), 3);
  ASSERT_EQ(cube.bandCount(), 1);

  // Pixels group
  ASSERT_EQ(PixelTypeName(cube.pixelType()), "SignedWord");
  ASSERT_EQ(ByteOrderName(cube.byteOrder()), "Lsb");
  ASSERT_DOUBLE_EQ(cube.base(), 0.0);
  ASSERT_DOUBLE_EQ(cube.multiplier(), 0.013);

  // Instrument Group
  PvlGroup &inst = isisLabel->findGroup("Instrument", Pvl::Traverse);
  ASSERT_EQ(inst["MissionName"][0].toStdString(), "SELENE");
  ASSERT_EQ(inst["SpacecraftName"][0].toStdString(), "KAGUYA");
  ASSERT_EQ(inst["InstrumentName"][0].toStdString(), "TERRAIN CAMERA 1");
  ASSERT_EQ(inst["InstrumentId"][0].toStdString(), "TC1");
  ASSERT_EQ(inst["TargetName"][0].toStdString(), "MOON");
  ASSERT_EQ(inst["StartTime"][0].toStdString(), "2007-12-15T00:00:10.156275");
  ASSERT_EQ(inst["StopTime"][0].toStdString(), "2007-12-15T00:00:40.413540");
  ASSERT_EQ(inst["SpacecraftClockStartCount"][0].toStdString(), "881712007.432675");
  ASSERT_EQ(inst["SpacecraftClockStopCount"][0].toStdString(), "881712037.68994");
  ASSERT_DOUBLE_EQ(inst["ExposureDuration"], 3.25);
  ASSERT_EQ(inst["ExposureDuration"].unit(), "ms");
  ASSERT_DOUBLE_EQ(inst["LineSamplingInterval"], 6.499949);
  ASSERT_EQ(inst["LineSamplingInterval"].unit(), "ms");
  ASSERT_EQ(inst["IlluminationCondition"][0].toStdString(), "MORNING");

  // Archive Group
  PvlGroup &arch = isisLabel->findGroup("Archive", Pvl::Traverse);

  ASSERT_EQ(arch["DataSetId"][0].toStdString(), "SLN-L-TC-3-SP-SUPPORT-LEVEL2B0-V1.0");
  ASSERT_EQ(arch["ImageValueType"][0].toStdString(), "RADIANCE");
  ASSERT_EQ(int(arch["SceneMaximumDn"]), 2534);
  ASSERT_EQ(int(arch["SceneMinimumDn"]), 0);
  ASSERT_DOUBLE_EQ(double(arch["SceneAverageDn"]), 405.4);
  ASSERT_DOUBLE_EQ(double(arch["UpperLeftLatitude"]), 51.860902);
  ASSERT_DOUBLE_EQ(double(arch["UpperLeftLongitude"]), 43.80093);
  ASSERT_DOUBLE_EQ(double(arch["UpperRightLatitude"]), 51.857042);
  ASSERT_DOUBLE_EQ(double(arch["UpperRightLongitude"]), 44.875756);
  ASSERT_DOUBLE_EQ(double(arch["LowerLeftLatitude"]), 53.380049);
  ASSERT_DOUBLE_EQ(double(arch["LowerLeftLongitude"]), 43.797102);
  ASSERT_DOUBLE_EQ(double(arch["LowerRightLatitude"]), 53.375972);
  ASSERT_DOUBLE_EQ(double(arch["LowerRightLongitude"]),44.907878);

  // Bandbin Group
  PvlGroup &bandbin = isisLabel->findGroup("BandBin", Pvl::Traverse);
  ASSERT_EQ(bandbin["Center"][0], "640nm");
  ASSERT_EQ(bandbin["Width"][0], "420nm");

  // Kernels Group
  PvlGroup &kern = isisLabel->findGroup("Kernels", Pvl::Traverse);
  ASSERT_EQ(int(kern["NaifCkCode"]), -131350);
  ASSERT_EQ(int(kern["NaifFrameCode"]), -131351);
}
 No newline at end of file
+10.2 KiB

File added.

No diff preview for this file type.

+131 −0
Original line number Diff line number Diff line
PDS_VERSION_ID                 = PDS3
RECORD_TYPE                    = UNDEFINED
FILE_NAME                      = TC1S2B0_01_00811N526E0443_mini.img
^IMAGE = (TC1S2B0_01_00811N526E0443_mini.img, 1 <BYTES>)
MISSION_NAME                   = SELENE
DATA_SET_ID                    = SLN-L-TC-3-SP-SUPPORT-LEVEL2B0-V1.0
DATA_SET_NAME                  = "SELENE MOON TC 3 SP SUPPORT LEVEL2B0 V1.0"
L2DB_ORIGINAL_ID               = TC_SPsupport_Level2B0
PRODUCT_ID                     = TC1S2B0_01_00811N526E0443
INSTRUMENT_TYPE                = IMAGER
INSTRUMENT_ID                  = TC1
INSTRUMENT_NAME                = "TERRAIN CAMERA 1"
INSTRUMENT_HOST_NAME           = "SELENE MAIN ORBITER"
TARGET_TYPE                    = SATELLITE
TARGET_NAME                    = MOON
START_TIME                     = 2007-12-15T00:00:10.157100
STOP_TIME                      = 2007-12-15T00:00:40.414600
SOFTWARE_NAME                  = RGC_TC_SPsupport_Level2B0
SOFTWARE_VERSION               = 1.0.0
PROCESS_VERSION_ID             = L2B
PRODUCT_CREATION_TIME          = 2013-07-26T03:45:58
PROGRAM_START_TIME             = 2013-07-26T03:34:36
PRODUCER_ID                    = LISM
PRODUCT_SET_ID                 = TC_SPsupport_Level2B0
PRODUCT_VERSION_ID             = "01"
REGISTERED_PRODUCT             = Y
ILLUMINATION_CONDITION         = MORNING
LEVEL2A_FILE_NAME              = TC1S2A0_02SMH00811_002_0084.img
SPICE_METAKERNEL_FILE_NAME = RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk
MISSION_PHASE_NAME             = InitialCheckout
REVOLUTION_NUMBER              = 811
STRIP_SEQUENCE_NUMBER          = 2
SCENE_SEQUENCE_NUMBER          = 84
UPPER_LEFT_DAYTIME_FLAG        = Day
UPPER_RIGHT_DAYTIME_FLAG       = Day
LOWER_LEFT_DAYTIME_FLAG        = Day
LOWER_RIGHT_DAYTIME_FLAG       = Day
OBSERVATION_MODE_ID            = SUPPORT
SENSOR_DESCRIPTION             = "Imagery type:Pushbroom. ImageryMode:Mono,Stereo. ExposureTimeMode:Long,Middle,Short. CompressionMode:NonComp,DCT. Q-table:32 patterns. H-table:4 patterns. SwathMode:F(Full),N(Nominal),H(Half). First pixel number:1(F),297(N),1172(H)."
SENSOR_DESCRIPTION2            = "Pixel size:7x7[micron^2](TC1/TC2). Wavelength range:430-850[nm](TC1/TC2). A/D rate:10[bit](TC1/TC2). Slant angle:+/-15[degree] (from nadir to +x of S/C)(TC1/TC2). Focal length:72.45/72.63[mm](TC1/TC2). F number:3.97/3.98(TC1/TC2)."
DETECTOR_STATUS                = (TC1:ON, TC2:OFF, MV:OFF, MN:OFF, SP:ON)
EXPOSURE_MODE_ID               = MIDDLE
LINE_EXPOSURE_DURATION         = (3.25 <ms>)
SPACECRAFT_CLOCK_START_COUNT   = "881712007.4335 <s>"
SPACECRAFT_CLOCK_STOP_COUNT    = "881712037.6910 <s>"
CORRECTED_SC_CLOCK_START_COUNT = 881712007.432675 <s>
CORRECTED_SC_CLOCK_STOP_COUNT  = 881712037.68994 <s>
CORRECTED_START_TIME           = 2007-12-15T00:00:10.156275
CORRECTED_STOP_TIME            = 2007-12-15T00:00:40.413540
LINE_SAMPLING_INTERVAL         = 6.5 <ms>
CORRECTED_SAMPLING_INTERVAL    = (6.499949 <ms>)
UPPER_LEFT_LATITUDE            = 51.860902 <deg>
UPPER_LEFT_LONGITUDE           = 43.80093 <deg>
UPPER_RIGHT_LATITUDE           = 51.857042 <deg>
UPPER_RIGHT_LONGITUDE          = 44.875756 <deg>
LOWER_LEFT_LATITUDE            = 53.380049 <deg>
LOWER_LEFT_LONGITUDE           = 43.797102 <deg>
LOWER_RIGHT_LATITUDE           = 53.375972 <deg>
LOWER_RIGHT_LONGITUDE          = 44.907878 <deg>
LOCATION_FLAG                  = A
ROLL_CANT                      = NO
SCENE_CENTER_LATITUDE          = 52.620967 <deg>
SCENE_CENTER_LONGITUDE         = 44.344168 <deg>
INCIDENCE_ANGLE                = 78.595 <deg>
EMISSION_ANGLE                 = 15.811 <deg>
PHASE_ANGLE                    = 83.644 <deg>
SOLAR_AZIMUTH_ANGLE            = 107.842 <deg>
FOCAL_PLANE_TEMPERATURE        = (17.9 <degC>)
TELESCOPE_TEMPERATURE          = (17.65 <degC>)
SATELLITE_MOVING_DIRECTION     = -1
FIRST_SAMPLED_LINE_POSITION    = UPPERMOST
FIRST_DETECTOR_ELEM_POSITION   = LEFT
A_AXIS_RADIUS                  = 1737.4 <km>
B_AXIS_RADIUS                  = 1737.4 <km>
C_AXIS_RADIUS                  = 1737.4 <km>
DEFECT_PIXEL_POSITION          = N/A
SWATH_MODE_ID                  = HALF
FIRST_PIXEL_NUMBER             = 1172
LAST_PIXEL_NUMBER              = 2913
SPACECRAFT_ALTITUDE            = 115.339 <km>
SPACECRAFT_GROUND_SPEED        = 1.519 <km/s>
TC1_TELESCOPE_TEMPERATURE      = 17.67 <degC>
TC2_TELESCOPE_TEMPERATURE      = 17.67 <degC>
DPU_TEMPERATURE                = 12.32 <degC>
TM_TEMPERATURE                 = 16.65 <degC>
TM_RADIATOR_TEMPERATURE        = 13.3 <degC>
Q_TABLE_ID                     = SP_SPT_A
HUFFMAN_TABLE_ID               = DCTSPT_A
DATA_COMPRESSION_PERCENT_MEAN  = 1.2
DATA_COMPRESSION_PERCENT_MAX   = 1.6
DATA_COMPRESSION_PERCENT_MIN   = 0.9
OBJECT = IMAGE
  COMPRESSION_TYPE               = DCT_DECOMPRESSED
  COMPRESSION_PERCENT            = 1.0
  NOMINAL_LINE_NUMBER            = 4088
  NOMINAL_OVERLAP_LINE_NUMBER    = 568
  OVERLAP_LINE_NUMBER            = 568
  LINES                          = 3
  LINE_SAMPLES                   = 1744
  SAMPLE_TYPE                    = MSB_INTEGER
  SAMPLE_BITS                    = 16
  IMAGE_VALUE_TYPE               = RADIANCE
  UNIT                           = W/m**2/micron/sr
  SCALING_FACTOR                 = 0.013
  OFFSET                         = 0.0
  MIN_FOR_STATISTICAL_EVALUATION = 0
  MAX_FOR_STATISTICAL_EVALUATION = 32767
  SCENE_MAXIMUM_DN               = 2534
  SCENE_MINIMUM_DN               = 0
  SCENE_AVERAGE_DN               = 405.4
  SCENE_STDEV_DN                 = 192.6
  SCENE_MODE_DN                  = 6
  SHADOWED_AREA_MINIMUM          = 0
  SHADOWED_AREA_MAXIMUM          = 0
  SHADOWED_AREA_PERCENTAGE       = 0
  INVALID_TYPE                   = (SATURATION, MINUS, DUMMY_DEFECT, OTHER)
  INVALID_VALUE                  = (-20000, -21000, -22000, -23000)
  INVALID_PIXELS                 = (0, 6342, 0, 202)
END_OBJECT
OBJECT = PROCESSING_PARAMETERS
  DARK_FILE_NAME                = TC1_DRK_00682_01571_M_C_b05.csv
  FLAT_FILE_NAME                = TC1_FLT_00293_04739_N_C_b05.csv
  EFFIC_FILE_NAME               = TC1_EFF_PRFLT_N_N_v01.csv
  NONLIN_FILE_NAME              = TC1_NLT_PRFLT_N_N_v01.csv
  RAD_CNV_COEF                  = (3.790009 <W/m**2/micron/sr>)
  L2A_DEAD_PIXEL_THRESHOLD      = 30
  L2A_SATURATION_THRESHOLD      = 1023
  DARK_VALID_MINIMUM            = -5
  RADIANCE_SATURATION_THRESHOLD = 425.971 <W/m**2/micron/sr>
END_OBJECT
END
 No newline at end of file