Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates KaguyaTC ingest for SPSupport data #4688

Merged
merged 6 commits into from
Nov 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
3 changes: 2 additions & 1 deletion isis/src/kaguya/apps/kaguyatc2isis/kaguyatc2isis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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_);
}

Expand Down
73 changes: 73 additions & 0 deletions isis/tests/FunctionalTestsKaguyatc2isis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Binary file not shown.
131 changes: 131 additions & 0 deletions isis/tests/data/kaguyatc2isis/TC1S2B0_01_00811N526E0443_mini.lbl
Original file line number Diff line number Diff line change
@@ -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 <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