From cda23d690b55db7391b2b56721b08e319d729fbe Mon Sep 17 00:00:00 2001
From: Amy Stamile <74275278+amystamile-usgs@users.noreply.github.com>
Date: Thu, 31 Oct 2024 10:54:01 -0700
Subject: [PATCH] Adds archive information to chandrayaan2 template (#5651)

* Adds chandrayaan2 to isisimport

* Adds archive info to chandrayaan2

* fixes to template

* removed debugging from tests

* remove xmltojson changes

* small fixes
---
 isis/appdata/import/PDS4/Chandrayaan2TMC2.tpl |  33 +++-
 isis/appdata/import/fileTemplate.tpl          |   2 +-
 isis/src/base/apps/isisimport/isisimport.cpp  |  12 --
 isis/src/base/objs/XmlToJson/XmlToJson.cpp    |   3 +-
 .../FunctionalTestsIsisImportChandrayaan2.cpp | 170 +++++++++++++++++-
 isis/tests/XmlToJsonTests.cpp                 |   1 +
 ..._tmc_ncn_20240808T0532596974_d_img_d18.xml | 141 +++++++++++++++
 7 files changed, 344 insertions(+), 18 deletions(-)
 create mode 100644 isis/tests/data/isisimport/chan2/ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml

diff --git a/isis/appdata/import/PDS4/Chandrayaan2TMC2.tpl b/isis/appdata/import/PDS4/Chandrayaan2TMC2.tpl
index dd05ce68a7..102a7faca9 100644
--- a/isis/appdata/import/PDS4/Chandrayaan2TMC2.tpl
+++ b/isis/appdata/import/PDS4/Chandrayaan2TMC2.tpl
@@ -1,5 +1,5 @@
 {% set file_name = Product_Observational.File_Area_Observational.File.file_name %}
-{% set sensor = FindCH2Sensor(file_name) %}
+{% set sensor = CharAt(file_name, 10) %}
 
 {% set ImageArray = Product_Observational.File_Area_Observational.Array_2D_Image %}
 
@@ -67,7 +67,7 @@ Object = IsisCube
   End_Object
 
   Group = Instrument
-    SpacecraftName            = {{ Product_Observational.Observation_Area.Investigation_Area.name }}
+    SpacecraftName            = {{ capitalize(Product_Observational.Observation_Area.Investigation_Area.name) }}
     {% set inst_name = Product_Observational.Observation_Area.Observing_System.Observing_System_Component.1.name %}
     {% if inst_name == "terrain mapping camera" %}
     InstrumentId              = TMC-2
@@ -75,7 +75,36 @@ Object = IsisCube
     TargetName                = {{ Product_Observational.Observation_Area.Target_Identification.name }}
     StartTime                 = {{ RemoveStartTimeZ(Product_Observational.Observation_Area.Time_Coordinates.start_date_time) }}
     StopTime                  = {{ RemoveStartTimeZ(Product_Observational.Observation_Area.Time_Coordinates.stop_date_time) }}
+    {% if exists("Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_line_exposure_duration") %}
+    LineExposureDuration      = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_line_exposure_duration._text }} <ms>
+    {% else %}
+    LineExposureDuration      = 3.236 <ms>
+    {% endif %}
+  End_Group
+
+  {% if exists("Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters") %}
+  Group = Archive
+    JobId                   = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_job_id }}
+    OrbitNumber             = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_imaging_orbit_number }}
+    GainType                = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_gain }}
+    ExposureType            = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_exposure }}
+    DetectorPixelWidth      = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_detector_pixel_width._text }} <micrometers>
+    FocalLength             = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_focal_length._text }} <mm>
+    ReferenceData           = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_reference_data_used }}
+    OrbitLimbDirection      = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_orbit_limb_direction }}
+    SpacecraftYawDirection  = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_spacecraft_yaw_direction }}
+    SpacecraftAltitude      = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_spacecraft_altitude._text }} <km>
+    PixelResolution         = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_pixel_resolution._text }} <meters/pixel>
+    Roll                    = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_roll._text }} <degrees>
+    Pitch                   = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_pitch._text }} <degrees>
+    Yaw                     = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_yaw._text }} <degrees>
+    SunAzimuth              = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_sun_azimuth._text }} <degrees>
+    SunElevation            = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_sun_elevation._text }} <degrees>
+    SolarIncidence          = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_solar_incidence._text }} <degrees>
+    Projection              = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_projection }}
+    Area                    = {{ Product_Observational.Observation_Area.Mission_Area.isda_Product_Parameters.isda_area }}
   End_Group
+  {% endif %}
 
   Group = BandBin
     Center = 675
diff --git a/isis/appdata/import/fileTemplate.tpl b/isis/appdata/import/fileTemplate.tpl
index 61db724210..6137b41300 100644
--- a/isis/appdata/import/fileTemplate.tpl
+++ b/isis/appdata/import/fileTemplate.tpl
@@ -93,7 +93,7 @@
   {%- if InstrumentId == "OSINAC" or InstrumentId == "OSIWAC"-%}
     {%- set InstrumentId="Osiris" -%}
   {%- endif -%}
-{%- else if SpacecraftName == "Chandrayaan-2"-%}
+{%- else if SpacecraftName == "Chandrayaan-2" or SpacecraftName == "chandrayaan-2"-%}
   {%- set SpacecraftId="Chandrayaan2" -%}
   {%- if InstrumentId == "terrain mapping camera"-%}
     {%- set InstrumentId="TMC2" -%}
diff --git a/isis/src/base/apps/isisimport/isisimport.cpp b/isis/src/base/apps/isisimport/isisimport.cpp
index 71f20d1b05..2c6f2bfb60 100644
--- a/isis/src/base/apps/isisimport/isisimport.cpp
+++ b/isis/src/base/apps/isisimport/isisimport.cpp
@@ -341,18 +341,6 @@ namespace Isis {
 
       return inputString.substr(index, 1);
     });
-
-
-   /**
-    * Find sensor type from Chandrayaan2 label's file_name
-    */
-    env.add_callback("FindCH2Sensor", 1, [](Arguments& args) {
-      std::string fileName = args.at(0)->get<string>();
-
-      char sensor = fileName[10];
-
-      return std::string(1, sensor);
-    });
      // end of inja callbacks
 
 
diff --git a/isis/src/base/objs/XmlToJson/XmlToJson.cpp b/isis/src/base/objs/XmlToJson/XmlToJson.cpp
index 88471305be..f41bc9afc1 100644
--- a/isis/src/base/objs/XmlToJson/XmlToJson.cpp
+++ b/isis/src/base/objs/XmlToJson/XmlToJson.cpp
@@ -207,5 +207,4 @@ namespace Isis {
     }
     return output;
   }
-}
-
+}
\ No newline at end of file
diff --git a/isis/tests/FunctionalTestsIsisImportChandrayaan2.cpp b/isis/tests/FunctionalTestsIsisImportChandrayaan2.cpp
index b95d506d43..26f6cb34e5 100644
--- a/isis/tests/FunctionalTestsIsisImportChandrayaan2.cpp
+++ b/isis/tests/FunctionalTestsIsisImportChandrayaan2.cpp
@@ -28,7 +28,7 @@ using json = nlohmann::json;
 
 static QString APP_XML = FileName("$ISISROOT/bin/xml/isisimport.xml").expanded();
 
-TEST_F(TempTestingFiles, FunctionalTestIsisImportChandrayaan2){
+TEST_F(TempTestingFiles, FunctionalTestIsisImportChandrayaan2MinimalLabel){
   std::istringstream PvlInput(R"(
     Object = IsisCube
       Object = Core
@@ -57,6 +57,7 @@ TEST_F(TempTestingFiles, FunctionalTestIsisImportChandrayaan2){
         TargetName     = Moon
         StartTime      = 2019-11-28T00:35:38.9755
         StopTime       = 2019-11-28T00:45:17.9161
+        LineExposureDuration = 3.236 <ms>
       End_Group
 
       Group = BandBin
@@ -172,4 +173,171 @@ TEST_F(TempTestingFiles, FunctionalTestIsisImportChandrayaan2){
   outGroup = outLabel->findGroup("Kernels", Pvl::Traverse);
   EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
 
+}
+
+TEST_F(TempTestingFiles, FunctionalTestIsisImportChandrayaan2FullLabel){
+  std::istringstream PvlInput(R"(
+  Object = IsisCube
+    Object = Core
+      StartByte   = 65537
+      Format      = Tile
+      TileSamples = 519
+      TileLines   = 1000
+
+      Group = Dimensions
+        Samples = 180093
+        Lines   = 4000
+        Bands   = 1
+      End_Group
+
+      Group = Pixels
+        Type       = UnsignedWord
+        ByteOrder  = Lsb
+        Base       = 0.0
+        Multiplier = 1.0
+      End_Group
+    End_Object
+
+    Group = Instrument
+      SpacecraftName       = Chandrayaan-2
+      InstrumentId         = TMC-2
+      TargetName           = Moon
+      StartTime            = 2024-08-08T05:32:59.6974
+      StopTime             = 2024-08-08T05:42:42.4783
+      LineExposureDuration = 3.236 <ms>
+    End_Group
+
+    Group = Archive
+      JobId                  = TMCXXD18CHO2210300NNNN24221055326097_V2_1
+      OrbitNumber            = 22103
+      GainType               = g1
+      ExposureType           = e1
+      DetectorPixelWidth     = 7 <micrometers>
+      FocalLength            = 140 <mm>
+      ReferenceData          = SELENE
+      OrbitLimbDirection     = Descending
+      SpacecraftYawDirection = False
+      SpacecraftAltitude     = 89.53 <km>
+      PixelResolution        = 4.48 <meters/pixel>
+      Roll                   = 0.009365 <degrees>
+      Pitch                  = 0.066417 <degrees>
+      Yaw                    = -0.017284 <degrees>
+      SunAzimuth             = 116.737463 <degrees>
+      SunElevation           = 39.932493 <degrees>
+      SolarIncidence         = 50.067507 <degrees>
+      Projection             = Selenographic
+      Area                   = Equatorial
+    End_Group
+
+    Group = BandBin
+      Center = 675
+      Width  = 175
+    End_Group
+
+    Group = Kernels
+      NaifFrameCode = -152210
+    End_Group
+  End_Object
+
+  Object = Label
+    Bytes = 65536
+  End_Object
+
+  Object = OriginalXmlLabel
+    Name      = IsisCube
+    StartByte = 1440809537
+    Bytes     = 7625
+    ByteOrder = Lsb
+  End_Object
+  End
+  )");
+  QString dataFilePath= "data/isisimport/chan2/ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml";
+  QString dataFileName = "ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml";
+  QString imageFileName = "ch2_tmc_ncn_20240808T0532596974_d_img_d18.img";
+  QString cubeFileName = tempDir.path() + "/output.cub";
+
+  int samples = 4000;
+  int lines = 180093;
+  int bytes = 2;
+
+  // create a temp img file and write data to it
+  QFile tempImgFile(tempDir.path() + "/" + imageFileName);
+
+  if(!tempImgFile.open(QFile::WriteOnly | QFile::Text)){
+      FAIL() << " Could not open file for writing";
+  }
+  QDataStream out(&tempImgFile);
+
+  // generate lines
+  QByteArray writeToFile = QByteArray();
+  short int fill = 0;
+  for(int i=-1; i<(samples * bytes); i++){
+    writeToFile.append(fill);
+  }
+
+  // write the lines to the temp file
+  for(int i=0; i<lines; i++){
+    QDataStream out(&tempImgFile);
+    out << writeToFile;
+  }
+  tempImgFile.flush();
+  tempImgFile.close();
+
+  // create a temp data file and copy the contents of the xml in to it
+  QFile tempDataFile(tempDir.path() + "/" + dataFileName);
+
+  if(!tempDataFile.open(QFile::ReadWrite | QFile::Text)){
+      FAIL() << " Could not open file for writing";
+  }
+
+  // open xml to get data
+  QFile realXmlFile(dataFilePath);
+  if (!realXmlFile.open(QIODevice::ReadOnly | QIODevice::Text))
+  {
+      FAIL() << "Failed to open file";
+  }
+
+  QTextStream xmlData(&tempDataFile);
+  xmlData << realXmlFile.readAll();
+
+  tempDataFile.close();
+  realXmlFile.close();
+
+  QFileInfo fileInfo(tempDataFile);
+
+  // testing with template
+  QVector<QString> args = {"from=" + fileInfo.absoluteFilePath(), "to=" + cubeFileName};
+  UserInterface options(APP_XML, args);
+  isisimport(options);
+
+  Pvl truthLabel;
+  PvlInput >> truthLabel;
+
+  Cube outCube(cubeFileName);
+  Pvl *outLabel = outCube.label();
+
+  PvlGroup truthGroup = truthLabel.findGroup("Dimensions", Pvl::Traverse);
+  PvlGroup &outGroup = outLabel->findGroup("Dimensions", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
+  truthGroup = truthLabel.findGroup("Pixels", Pvl::Traverse);
+  outGroup = outLabel->findGroup("Pixels", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
+  truthGroup = truthLabel.findGroup("Instrument", Pvl::Traverse);
+  outGroup = outLabel->findGroup("Instrument", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
+  truthGroup = truthLabel.findGroup("BandBin", Pvl::Traverse);
+  outGroup = outLabel->findGroup("BandBin", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
+  truthGroup = truthLabel.findGroup("Kernels", Pvl::Traverse);
+  outGroup = outLabel->findGroup("Kernels", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
+    truthGroup = truthLabel.findGroup("Archive", Pvl::Traverse);
+  outGroup = outLabel->findGroup("Archive", Pvl::Traverse);
+  EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, outGroup, truthGroup);
+
 }
\ No newline at end of file
diff --git a/isis/tests/XmlToJsonTests.cpp b/isis/tests/XmlToJsonTests.cpp
index b20f60ffa1..7db3e03eeb 100644
--- a/isis/tests/XmlToJsonTests.cpp
+++ b/isis/tests/XmlToJsonTests.cpp
@@ -293,3 +293,4 @@ TEST(XmlToJson, TestXMLWithNamespace) {
 }
 
 
+
diff --git a/isis/tests/data/isisimport/chan2/ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml b/isis/tests/data/isisimport/chan2/ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml
new file mode 100644
index 0000000000..5a6aa1c85e
--- /dev/null
+++ b/isis/tests/data/isisimport/chan2/ch2_tmc_ncn_20240808T0532596974_d_img_d18.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-model href="https://isda.issdc.gov.in/pds4/isda/v1/ch2_ldd_ISDA_1000.sch" schematypens="http://purl.oclc.org/dsdl/schematron" ?><Product_Observational xmlns="http://pds.nasa.gov/pds4/pds/v1" xmlns:disp="http://pds.nasa.gov/pds4/disp/v1" xmlns:isda="https://isda.issdc.gov.in/pds4/isda/v1" xmlns:pds="http://pds.nasa.gov/pds4/pds/v1" xmlns:sp="http://pds.nasa.gov/pds4/sp/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pds.nasa.gov/pds4/pds/v1 http://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.xsd                  http://pds.nasa.gov/pds4/disp/v1 http://pds.nasa.gov/pds4/disp/v1/PDS4_DISP_1301.xsd                 http://pds.nasa.gov/pds4/sp/v1 http://pds.nasa.gov/pds4/sp/v1/PDS4_SP_1100.xsd           https://isda.issdc.gov.in/pds4/isda/v1 https://isda.issdc.gov.in/pds4/isda/v1/ch2_ldd_ISDA_1000.xsd">
+
+    <Identification_Area>
+        <logical_identifier>urn:isro:isda:ch2_cho.tmc:data_calibrated:ch2_tmc_ncn_20240808t0532596974_d_img_d18</logical_identifier>
+        <version_id>1.0</version_id>
+        <title>Chandrayaan-2 Orbiter TMC2 Experiment</title>
+        <information_model_version>1.11.0.0</information_model_version>
+        <product_class>Product_Observational</product_class>
+        <Modification_History>
+            <Modification_Detail>
+                <modification_date>2019-05-07</modification_date>
+                <version_id>1.0</version_id>
+                <description>PDS4 product label created by SAC Optical DP Team</description>
+            </Modification_Detail>
+        </Modification_History>
+    </Identification_Area>
+    <Observation_Area>
+        <Time_Coordinates>
+            <start_date_time>2024-08-08T05:32:59.6974Z</start_date_time>
+            <stop_date_time>2024-08-08T05:42:42.4783Z</stop_date_time>
+        </Time_Coordinates>
+        <Primary_Result_Summary>
+            <purpose>Science</purpose>
+	    <processing_level>Calibrated</processing_level>
+            <description>Calibrated Processing Level describes the radiometric correction (look up table) applied to the raw data</description>
+	</Primary_Result_Summary>
+        <Investigation_Area>
+            <name>chandrayaan-2</name>
+            <type>Mission</type>
+            <Internal_Reference>
+                <lidvid_reference>urn:isro:isda:context:investigation:mission.chandrayaan2::1.0</lidvid_reference>
+                <reference_type>data_to_investigation</reference_type>
+            </Internal_Reference>
+        </Investigation_Area>
+        <Observing_System>
+            <Observing_System_Component>
+                <name>Chandrayaan 2 Orbiter</name>
+                <type>Spacecraft</type>
+                <description>
+                    Chandrayaan-2 Orbiter is an Orbiter craft under the Chandrayaan-2 Spacecraft 
+                    consists of various scientific instruments.
+                </description>
+            </Observing_System_Component>
+            <Observing_System_Component>
+                <name>terrain mapping camera</name>
+                <type>Instrument</type>
+                <description>
+                    TMC-2 (Terrain Mapping Camera) is one of the scientific instrument hosted 
+                    on the Chandrayaan-2 Orbiter. The instrument is passive electro-optical 
+                    imaging camera operating in visible-panchromatic band (500-800nm), 
+                    comprising three optical sensors Fore, Nadir and Aft placed with angles 
+                    of +25 deg, 0 deg and -25 deg to have three stereo views of the same target 
+                    as spacecraft moves along the track.
+                </description>
+            </Observing_System_Component>
+        </Observing_System>
+        <Target_Identification>
+            <name>Moon</name>
+            <type>Satellite</type>
+            <description>Moon is a natural satellite of Earth</description>
+        </Target_Identification>
+        <Mission_Area>
+            <isda:Product_Parameters>
+                <isda:job_id>TMCXXD18CHO2210300NNNN24221055326097_V2_1</isda:job_id>
+                <isda:level0_dir_name>TMCXXD18CHO2210300NNNN24221055326097_V2_1</isda:level0_dir_name>
+                <isda:imaging_orbit_number>22103</isda:imaging_orbit_number>
+                <isda:dumping_orbit_number>22103</isda:dumping_orbit_number>
+                <isda:line_exposure_duration unit="ms">3.236</isda:line_exposure_duration>
+                <isda:gain>g1</isda:gain>
+                <isda:exposure>e1</isda:exposure>
+                <isda:detector_pixel_width unit="micrometer">7</isda:detector_pixel_width>            
+                <isda:focal_length unit="mm">140</isda:focal_length>
+                <isda:reference_data_used>SELENE</isda:reference_data_used>
+                <isda:orbit_limb_direction>Descending</isda:orbit_limb_direction>
+                <isda:spacecraft_yaw_direction>False</isda:spacecraft_yaw_direction>
+                <isda:spacecraft_altitude unit="km">89.53</isda:spacecraft_altitude>
+                <isda:pixel_resolution unit="m/pixel">4.48</isda:pixel_resolution>
+                <isda:roll unit="deg">0.009365</isda:roll>
+                <isda:pitch unit="deg">0.066417</isda:pitch>
+                <isda:yaw unit="deg">-0.017284</isda:yaw>
+                <isda:sun_azimuth unit="deg">116.737463</isda:sun_azimuth>
+                <isda:sun_elevation unit="deg">39.932493</isda:sun_elevation>
+                <isda:solar_incidence unit="deg">50.067507</isda:solar_incidence>
+                <isda:projection>Selenographic</isda:projection>
+                <isda:area>Equatorial</isda:area>
+            </isda:Product_Parameters>
+            <isda:Geometry_Parameters>
+                <isda:System_Level_Coordinates>
+                    <isda:upper_left_latitude unit="deg">45.054183</isda:upper_left_latitude>
+                    <isda:upper_left_longitude unit="deg">95.360662</isda:upper_left_longitude>
+                    <isda:upper_right_latitude unit="deg">45.050300</isda:upper_right_latitude>
+                    <isda:upper_right_longitude unit="deg">96.171919</isda:upper_right_longitude>
+                    <isda:lower_left_latitude unit="deg">15.105121</isda:lower_left_latitude>
+                    <isda:lower_left_longitude unit="deg">95.128359</isda:lower_left_longitude>
+                    <isda:lower_right_latitude unit="deg">15.102485</isda:lower_right_latitude>
+                    <isda:lower_right_longitude unit="deg">95.740193</isda:lower_right_longitude>
+                </isda:System_Level_Coordinates>    
+                <isda:Refined_Corner_Coordinates>
+                    <isda:upper_left_latitude unit="deg">45.158521</isda:upper_left_latitude>
+                    <isda:upper_left_longitude unit="deg">95.350390</isda:upper_left_longitude>
+                    <isda:upper_right_latitude unit="deg">45.155106</isda:upper_right_latitude>
+                    <isda:upper_right_longitude unit="deg">96.174856</isda:upper_right_longitude>
+                    <isda:lower_left_latitude unit="deg">15.209056</isda:lower_left_latitude>
+                    <isda:lower_left_longitude unit="deg">95.155738</isda:lower_left_longitude>
+                    <isda:lower_right_latitude unit="deg">15.206454</isda:lower_right_latitude>
+                    <isda:lower_right_longitude unit="deg">95.776465</isda:lower_right_longitude>
+                </isda:Refined_Corner_Coordinates>
+            </isda:Geometry_Parameters>
+        </Mission_Area>
+    </Observation_Area>
+    <File_Area_Observational>
+        <File>
+            <file_name>ch2_tmc_ncn_20240808T0532596974_d_img_d18.img</file_name>
+            <creation_date_time>2024-08-25T12:10:25</creation_date_time>
+            <file_size unit="byte">1440744000</file_size>
+            <md5_checksum>bccc88b8394260ae5791ddecd2ebca90</md5_checksum>
+            <comment>
+                This File contains the count calibrated image. 
+                md5_checksum is provided for ensuring data integrity when users are downloading the data.
+            </comment>
+        </File>
+        <Array_2D_Image>
+            <offset unit="byte">0</offset>
+            <axes>2</axes>
+            <axis_index_order>Last Index Fastest</axis_index_order>
+            <Element_Array>
+                <data_type>UnsignedLSB2</data_type>
+            </Element_Array>
+            <Axis_Array>
+                <axis_name>Line</axis_name>
+                <elements>180093</elements>
+                <sequence_number>1</sequence_number>
+            </Axis_Array>
+            <Axis_Array>
+                <axis_name>Sample</axis_name>
+                <elements>4000</elements>
+                <sequence_number>2</sequence_number>
+            </Axis_Array>
+        </Array_2D_Image>
+    </File_Area_Observational>
+</Product_Observational>
\ No newline at end of file
-- 
GitLab