diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d8de8cc7b..490d405f9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,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). diff --git a/isis/src/kaguya/apps/kaguyatc2isis/kaguyatc2isis.cpp b/isis/src/kaguya/apps/kaguyatc2isis/kaguyatc2isis.cpp index 66a979cfe1..b6173c0e42 100644 --- a/isis/src/kaguya/apps/kaguyatc2isis/kaguyatc2isis.cpp +++ b/isis/src/kaguya/apps/kaguyatc2isis/kaguyatc2isis.cpp @@ -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_); } diff --git a/isis/tests/FunctionalTestsKaguyatc2isis.cpp b/isis/tests/FunctionalTestsKaguyatc2isis.cpp index a6927ebbc3..b50699358b 100644 --- a/isis/tests/FunctionalTestsKaguyatc2isis.cpp +++ b/isis/tests/FunctionalTestsKaguyatc2isis.cpp @@ -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 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: " <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 diff --git a/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.img b/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.img new file mode 100644 index 0000000000..23e8f04cb8 Binary files /dev/null and b/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.img differ diff --git a/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.lbl b/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.lbl new file mode 100644 index 0000000000..624504e436 --- /dev/null +++ b/isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.lbl @@ -0,0 +1,131 @@ +PDS_VERSION_ID = PDS3 +RECORD_TYPE = UNDEFINED +FILE_NAME = TC1S2B0_01_00811N526E0443_mini.img +^IMAGE = (TC1S2B0_01_00811N526E0443_mini.img, 1 ) +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 ) +SPACECRAFT_CLOCK_START_COUNT = "881712007.4335 " +SPACECRAFT_CLOCK_STOP_COUNT = "881712037.6910 " +CORRECTED_SC_CLOCK_START_COUNT = 881712007.432675 +CORRECTED_SC_CLOCK_STOP_COUNT = 881712037.68994 +CORRECTED_START_TIME = 2007-12-15T00:00:10.156275 +CORRECTED_STOP_TIME = 2007-12-15T00:00:40.413540 +LINE_SAMPLING_INTERVAL = 6.5 +CORRECTED_SAMPLING_INTERVAL = (6.499949 ) +UPPER_LEFT_LATITUDE = 51.860902 +UPPER_LEFT_LONGITUDE = 43.80093 +UPPER_RIGHT_LATITUDE = 51.857042 +UPPER_RIGHT_LONGITUDE = 44.875756 +LOWER_LEFT_LATITUDE = 53.380049 +LOWER_LEFT_LONGITUDE = 43.797102 +LOWER_RIGHT_LATITUDE = 53.375972 +LOWER_RIGHT_LONGITUDE = 44.907878 +LOCATION_FLAG = A +ROLL_CANT = NO +SCENE_CENTER_LATITUDE = 52.620967 +SCENE_CENTER_LONGITUDE = 44.344168 +INCIDENCE_ANGLE = 78.595 +EMISSION_ANGLE = 15.811 +PHASE_ANGLE = 83.644 +SOLAR_AZIMUTH_ANGLE = 107.842 +FOCAL_PLANE_TEMPERATURE = (17.9 ) +TELESCOPE_TEMPERATURE = (17.65 ) +SATELLITE_MOVING_DIRECTION = -1 +FIRST_SAMPLED_LINE_POSITION = UPPERMOST +FIRST_DETECTOR_ELEM_POSITION = LEFT +A_AXIS_RADIUS = 1737.4 +B_AXIS_RADIUS = 1737.4 +C_AXIS_RADIUS = 1737.4 +DEFECT_PIXEL_POSITION = N/A +SWATH_MODE_ID = HALF +FIRST_PIXEL_NUMBER = 1172 +LAST_PIXEL_NUMBER = 2913 +SPACECRAFT_ALTITUDE = 115.339 +SPACECRAFT_GROUND_SPEED = 1.519 +TC1_TELESCOPE_TEMPERATURE = 17.67 +TC2_TELESCOPE_TEMPERATURE = 17.67 +DPU_TEMPERATURE = 12.32 +TM_TEMPERATURE = 16.65 +TM_RADIATOR_TEMPERATURE = 13.3 +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 ) + L2A_DEAD_PIXEL_THRESHOLD = 30 + L2A_SATURATION_THRESHOLD = 1023 + DARK_VALID_MINIMUM = -5 + RADIANCE_SATURATION_THRESHOLD = 425.971 +END_OBJECT +END \ No newline at end of file