From aa9b736d56f1fd46dcd7412a27160e217a4be33d Mon Sep 17 00:00:00 2001 From: Kristin Berry Date: Fri, 5 Feb 2021 11:16:37 -0700 Subject: [PATCH] Update usgscm sensor models to output reference date and times in the ISO8601 format, following the CSM specification --- src/UsgsAstroFrameSensorModel.cpp | 6 +++--- src/UsgsAstroLsSensorModel.cpp | 6 +++--- src/UsgsAstroSarSensorModel.cpp | 6 +++--- tests/FrameCameraTests.cpp | 2 +- tests/LineScanCameraTests.cpp | 2 +- tests/SarTests.cpp | 5 +++++ 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/UsgsAstroFrameSensorModel.cpp b/src/UsgsAstroFrameSensorModel.cpp index 469e825..6bce4fe 100644 --- a/src/UsgsAstroFrameSensorModel.cpp +++ b/src/UsgsAstroFrameSensorModel.cpp @@ -674,9 +674,9 @@ std::string UsgsAstroFrameSensorModel::getReferenceDateAndTime() const { t.tm_mday = 1; time_t timeSinceEpoch = mktime(&t); time_t finalTime = ephemTime + timeSinceEpoch; - char buffer[16]; - strftime(buffer, 16, "%Y%m%dT%H%M%S", localtime(&finalTime)); - buffer[15] = '\0'; + char buffer[22]; + strftime(buffer, 22, "%Y-%m-%dT%H:%M:%SZ", localtime(&finalTime)); + buffer[21] = '\0'; return buffer; } diff --git a/src/UsgsAstroLsSensorModel.cpp b/src/UsgsAstroLsSensorModel.cpp index 688d19d..340d550 100644 --- a/src/UsgsAstroLsSensorModel.cpp +++ b/src/UsgsAstroLsSensorModel.cpp @@ -1184,9 +1184,9 @@ std::string UsgsAstroLsSensorModel::getReferenceDateAndTime() const { t.tm_mday = 1; time_t timeSinceEpoch = mktime(&t); time_t finalTime = ephemTime + timeSinceEpoch; - char buffer[16]; - strftime(buffer, 16, "%Y%m%dT%H%M%S", localtime(&finalTime)); - buffer[15] = '\0'; + char buffer[22]; + strftime(buffer, 22, "%Y-%m-%dT%H:%M:%SZ", localtime(&finalTime)); + buffer[21] = '\0'; return buffer; } diff --git a/src/UsgsAstroSarSensorModel.cpp b/src/UsgsAstroSarSensorModel.cpp index f94117d..6decb3e 100644 --- a/src/UsgsAstroSarSensorModel.cpp +++ b/src/UsgsAstroSarSensorModel.cpp @@ -1045,9 +1045,9 @@ string UsgsAstroSarSensorModel::getReferenceDateAndTime() const { t.tm_mday = 1; time_t timeSinceEpoch = mktime(&t); time_t finalTime = ephemTime + timeSinceEpoch; - char buffer[16]; - strftime(buffer, 16, "%Y%m%dT%H%M%S", localtime(&finalTime)); - buffer[15] = '\0'; + char buffer[22]; + strftime(buffer, 22, "%Y-%m-%dT%H:%M:%SZ", localtime(&finalTime)); + buffer[21] = '\0'; return buffer; } diff --git a/tests/FrameCameraTests.cpp b/tests/FrameCameraTests.cpp index f367585..327fb05 100644 --- a/tests/FrameCameraTests.cpp +++ b/tests/FrameCameraTests.cpp @@ -736,5 +736,5 @@ TEST_F(FrameSensorModelLogging, losEllipsoidIntersect) { TEST_F(OrbitalFrameSensorModel, ReferenceDateTime) { std::string date = sensorModel->getReferenceDateAndTime(); - EXPECT_EQ(date, "20000101T001640"); + EXPECT_EQ(date, "2000-01-01T00:16:40Z"); } diff --git a/tests/LineScanCameraTests.cpp b/tests/LineScanCameraTests.cpp index a4e4352..c9165c9 100644 --- a/tests/LineScanCameraTests.cpp +++ b/tests/LineScanCameraTests.cpp @@ -241,7 +241,7 @@ TEST_F(OrbitalLineScanSensorModel, InversionReallyHigh) { TEST_F(OrbitalLineScanSensorModel, ReferenceDateTime) { std::string date = sensorModel->getReferenceDateAndTime(); - EXPECT_EQ(date, "20000101T001639"); + EXPECT_EQ(date, "2000-01-01T00:16:39Z"); } TEST_F(TwoLineScanSensorModels, CrossCovariance) { diff --git a/tests/SarTests.cpp b/tests/SarTests.cpp index 5e843bb..78e53d8 100644 --- a/tests/SarTests.cpp +++ b/tests/SarTests.cpp @@ -131,3 +131,8 @@ TEST_F(SarSensorModel, adjustedPositionVelocity) { EXPECT_NEAR(adjVelocity.y, sensorVelocity.y + adjustments[4], 1e-8); EXPECT_NEAR(adjVelocity.z, sensorVelocity.z + adjustments[5], 1e-2); } + +TEST_F(SarSensorModel, ReferenceDateTime) { + std::string date = sensorModel->getReferenceDateAndTime(); + EXPECT_EQ(date, "2000-01-01T00:00:04Z"); +} -- GitLab