Unverified Commit ce631c5d authored by Kristin Berry's avatar Kristin Berry Committed by GitHub
Browse files

Updates to PDS4 branch (#4505)



* Initial isisimport application  (#4470)

* Initial isisimport application modeled to work on importing tgocassis images

* Add template to toisis

* Draft cassis template file added to pds4 branch (#4472)

* Initial isisimport application modeled to work on importing tgocassis images

* Add template to toisis

* actual cassis label template

* Reverted accidently modified template

* Add new locations of import and export templates and update cmake accordingly (#4477)

* Update cmake to new locations of import and export templates

* Fix mixed tabs and spaces

* Removed topds4 directory from CMakeLists

* Updates XmlToJson parsing to be more inja-friendly (#4478)

* Updates XmlToJson parsing to indicate XML attributes and text values in a way friendly to inja parsing of the json

* Update XmlToJson tests

* Tgocassis Template Completed for Instruments and Archive Groups (#4481)

* Updates to cassis label template

* Further updates to cassis template

* Updates to accomodate PR 4478 changes

* Cassis template completed for Instrument and Archive Groups.

* Generalize PDS4 cube creation setup (#4485)

* Updates XmlToJson parsing to indicate XML attributes and text values in a way friendly to inja parsing of the json

* Update XmlToJson tests

* Generalized line/sample/band setup

* PDS4PixelType as a callback, TEMPLATE default option, and working TGOCaSSIS.tpl (#4479)

* Cassis Template Updated BandBin and AlphaCube Groups (#4482)

* tgocassis Template Completed for AlphaCube and BandBin groups

* Additional template cleanup

* Updated Pixels Group

* Removed core object from template.

* protect template search and improve TGOCASSIS template (#4486)

* Renamed topds4 to isisexport (#4488)

* Updates to Cassis Template and XML and Minor corrections to isisimport (#4490)

* Updates to cassis template. Corrections to isisimport to allow module tests to work properly.

* Added disclaimer to xml file.

* Added mapping group template file (#4492)

* Added checks for existing keywords to be able to export an imported tgo image

* Added separate mapping group translation file

* Callbacks for YearDOY and ConvertUniqueIdtoObservationId (#4491)

* isisimport can now default to correct template using a file template. Updated Cassis template name. Minor updates in isisimport. (#4493)

* Updates mapping group in template. Added callback to handle added Z to StartTime. (#4495)

* PDS4 - Fix template search and targetGroup template variable for tgocassis.tpl (#4494)

* fix template search and targetGroup template variable for tgocassis.tpl

* remove accidental extra tag

* address feedback from amy

* Updated export template to produce parsable xml (#4497)

* Updated export template to be functioning xml to be used in isisimport.

* Added back 3D_Array but left in comments.

* Adds tests with test data and fixes off-by-one error in isisimport (#4502)

* Added intial working section of tests

* Update test with test data and fix off-by-one in isisimport

* Add test input image

* Clean up from old design of test

* Updated based on feedback

* Moved local function into ISIS namespace

* Ticked ISIS version to 6

* More tick to 6

* Updated CHANGELOG

We don't add the 6.0.0 heading until just before the actual release. I also added some missing periods.

Co-authored-by: default avatarAmy Stamile <74275278+amystamile-usgs@users.noreply.github.com>
Co-authored-by: default avatarTim Giroux <62255438+tgiroux@users.noreply.github.com>
Co-authored-by: default avatarStuart Sides <ssides@usgs.gov>
Co-authored-by: default avatarKaitlyn Lee <kdl222@nau.edu>
Co-authored-by: default avatarJesse Mapel <jmapel@usgs.gov>
parent 5eaccded
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ release.
## [6.0.0] - 2021-08-27

### Added
- Added a new application, isisimport. The application is designed to be a replacement for many of the mission/instrument specific import applications. It does not contain the templates for those applications at this time. It uses a templateing engine instead of the translation files.
- Added a new dark current correction to hical that works with the higher temperatures recent images are captured at. Use the new config file, $ISISDATA/mro/calibration/hical.0023_darkrate.conf, to enable the new dark current correction over the old dark current correction. Runs of hical without the new dark current correction will also produce an extra line in the output log indicating that the ZeroDarkRate module is disabled. [#4324](https://github.com/USGS-Astrogeology/ISIS3/issues/4324)
- Added the ability to bundle adjust CSM models in jigsaw. Use the new CSMSOLVESET, CSMSOLVETYPE, and CSMSOLVELIST arguments to specify what you solve for. [#4537](https://github.com/USGS-Astrogeology/ISIS3/pull/4537)

@@ -67,6 +68,11 @@ release.
- Fixed Thm2isis to properly use output attributes [#4213](https://github.com/USGS-Astrogeology/ISIS3/issues/4213)
- Fixed caminfo uselabel SegFault. [#4401](https://github.com/USGS-Astrogeology/ISIS3/issues/4401)

### Changed
- isisVarInit.py no longer writes a "cat" statement by default to the activate scripts which cause the ISIS version information to be written on conda activate.  This can be included in those scripts via a command line option to isisVarInit.py.  Also, a quiet option is provided to isisVarInit.py to suppress its own writing to standard out, if needed.
- Changed the name of topds4 to isisexport. The application is designed to be a replacement for many of the mission/instrument specific export applications. It uses a templateing engine instead of the translation files.


## [5.0.0] - 2021-04-01

### Added
+27 −22
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ set(PACKAGE "ISIS")
set(PACKAGE_NAME       "USGS ISIS")

# Version number
set(VERSION            "5.1.0")
set(VERSION            "6.0.0")
string(REPLACE "." ";" VERSION_LIST ${VERSION})
list(GET VERSION_LIST 0 VERSION_MAJOR)
list(GET VERSION_LIST 1 VERSION_MINOR)
@@ -429,13 +429,14 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/appdata/translations
        ${CMAKE_BINARY_DIR}/appdata/templates/cnetstats
        ${CMAKE_BINARY_DIR}/appdata/templates/cnet_validmeasure
        ${CMAKE_BINARY_DIR}/appdata/templates/controlnetworks
        ${CMAKE_BINARY_DIR}/appdata/export
        ${CMAKE_BINARY_DIR}/appdata/templates/hidtmgen
        ${CMAKE_BINARY_DIR}/appdata/import
        ${CMAKE_BINARY_DIR}/appdata/templates/findfeatures
        ${CMAKE_BINARY_DIR}/appdata/templates/fullcnetdiff
        ${CMAKE_BINARY_DIR}/appdata/templates/jigsaw
        ${CMAKE_BINARY_DIR}/appdata/templates/kernels
        ${CMAKE_BINARY_DIR}/appdata/templates/labels
	            ${CMAKE_BINARY_DIR}/appdata/templates/topds4
        ${CMAKE_BINARY_DIR}/appdata/templates/maps
        ${CMAKE_BINARY_DIR}/appdata/templates/photometry
        ${CMAKE_BINARY_DIR}/appdata/images/icons
@@ -554,9 +555,13 @@ add_custom_target(hidtmgen ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different
  ${CMAKE_SOURCE_DIR}/appdata/templates/hidtmgen/* ${CMAKE_BINARY_DIR}/appdata/templates/hidtmgen/)
add_dependencies(isis hidtmgen)

add_custom_target(topds4 ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different
  ${CMAKE_SOURCE_DIR}/appdata/templates/topds4/* ${CMAKE_BINARY_DIR}/appdata/templates/topds4)
add_dependencies(isis topds4)
add_custom_target(import ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different
  ${CMAKE_SOURCE_DIR}/appdata/import/* ${CMAKE_BINARY_DIR}/appdata/import)
add_dependencies(isis import)

add_custom_target(export ALL COMMAND ${CMAKE_COMMAND} -E copy_if_different
  ${CMAKE_SOURCE_DIR}/appdata/export/* ${CMAKE_BINARY_DIR}/appdata/export)
add_dependencies(isis export)

# Add a custom build target to clean out everything that gets added to the source
#  directory during the build process.
+303 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="http://pds.nasa.gov/pds4/geom/v1/PDS4_GEOM_1B00_1610.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-model href="http://pds.nasa.gov/pds4/cart/v1/PDS4_CART_1900.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-model href="http://pds.nasa.gov/pds4/img/v1/PDS4_IMG_1A10_1510.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-model href="http://pds.nasa.gov/pds4/disp/v1/PDS4_DISP_1B00.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-model href="http://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<Product_Observational xmlns:psa="http://psa.esa.int/psa/v1" xmlns:cas="http://psa.esa.int/psa/em16/cas/v1" xmlns:img="http://pds.nasa.gov/pds4/img/v1" xmlns="http://pds.nasa.gov/pds4/pds/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_1B00.xsd http://pds.nasa.gov/pds4/img/v1 http://pds.nasa.gov/pds4/img/v1/PDS4_IMG_1A10_1510.xsd http://pds.nasa.gov/pds4/cart/v1 http://pds.nasa.gov/pds4/cart/v1/PDS4_CART_1900.xsd http://psa.esa.int/psa/v1 http://psa.esa.int/psa/v1/PDS4_PSA_1000.xsd http://psa.esa.int/psa/em16/cas/v1 http://psa.esa.int/psa/em16/cas/v1/PDS4_PSA_EM16_CAS_1000.xsd http://pds.nasa.gov/pds4/geom/v1 http://pds.nasa.gov/pds4/geom/v1/PDS4_GEOM_1B00_1610.xsd" xmlns:disp="http://pds.nasa.gov/pds4/disp/v1" xmlns:cart="http://pds.nasa.gov/pds4/cart/v1" xmlns:geom="http://pds.nasa.gov/pds4/geom/v1">
{% if exists("MainLabel.IsisCube.Mosaic.ObservationId.Value") -%}
  {% set productId = MainLabel.IsisCube.Mosaic.ObservationId.Value -%}
  {% set sProductId = "MainLabel.IsisCube.Mosaic.ObservationId.Value" -%}
{% else if exists("MainLabel.IsisCube.Archive.ObservationId.Value") -%}
  {% set productId = MainLabel.IsisCube.Archive.ObservationId.Value -%}
  {% set sProductId = "MainLabel.IsisCube.Archive.ObservationId.Value" -%}
{% else -%}
  {% set sProductId = "None" -%}
{% endif -%}
{# Cassis Header is removed when converting back to PDS4 with tgocassisrdrgen
<CaSSIS_Header>
 <IDENTIFICATION_DATA/>
 <GEOMETRIC_DATA>
  <PREDICTED_MAXIMUM_EXPOSURE_TIME unit="{{MainLabel.IsisCube.Archive.PredictMaximumExposureTime.Units}}">{{MainLabel.IsisCube.Archive.PredictMaximumExposureTime.Value}}</PREDICTED_MAXIMUM_EXPOSURE_TIME>
  <CASSIS_OFF_NADIR_ANGLE unit="{{MainLabel.IsisCube.Archive.CassisOffNadirAngle.Units}}">{{MainLabel.IsisCube.Archive.CassisOffNadirAngle.Value}}</CASSIS_OFF_NADIR_ANGLE>
  <PREDICTED_REQUIRED_REPETITION_FREQUENCY unit="{{MainLabel.IsisCube.Archive.PredictedRepetitionFrequency.Units}}">{{MainLabel.IsisCube.Archive.PredictedRepetitionFrequency.Value}}</PREDICTED_REQUIRED_REPETITION_FREQUENCY>
  <TGO_GROUND_TRACK_VELOCITY unit="{{MainLabel.IsisCube.Archive.GroundTrackVelocity.Units}}">{{MainLabel.IsisCube.Archive.GroundTrackVelocity.Value}}</TGO_GROUND_TRACK_VELOCITY>
  <FORWARD_ROTATION_ANGLE_REQUIRED unit="{{MainLabel.IsisCube.Archive.ForwardRotationAngle.Units}}">{{MainLabel.IsisCube.Archive.ForwardRotationAngle.Value}}</FORWARD_ROTATION_ANGLE_REQUIRED>
  <SPICE_KERNEL_MISALIGNMENT_PREDICT unit="{{MainLabel.IsisCube.Archive.SpiceMisalignment.Units}}">{{MainLabel.IsisCube.Archive.SpiceMisalignment.Value}}</SPICE_KERNEL_MISALIGNMENT_PREDICT>
 </GEOMETRIC_DATA>
 <CaSSIS_General>
  <TELESCOPE_FOCAL_LENGTH unit="{{MainLabel.IsisCube.Archive.FocalLength.Units}}">{{MainLabel.IsisCube.Archive.FocalLength.Value}}</TELESCOPE_FOCAL_LENGTH>
  <TELESCOPE_F_NUMBER>{{MainLabel.IsisCube.Archive.FNumber.Value}}</TELESCOPE_F_NUMBER>
 </CaSSIS_General>
 <IMAGE_COMMAND/>
 <FSW_HEADER/>
 <PEHK_HEADER/>
 <DERIVED_HEADER_DATA>
   {% if exists("MainLabel.IsisCube.Archive.PixelsPossiblySaturated") -%}
  <PixelsPossiblySaturated>{{MainLabel.IsisCube.Archive.PixelsPossiblySaturated.Value}}</PixelsPossiblySaturated>
  {% endif -%}
  <Filter>{{MainLabel.IsisCube.BandBin.FilterName.Value}}</Filter>
 </DERIVED_HEADER_DATA>
</CaSSIS_Header> -#}
<Identification_Area>
  <logical_identifier>urn:esa:psa:em16_tgo_cas:{% if exists("MainLabel.IsisCube.Instrument") -%}
                                                  {% set targetGroup = MainLabel.IsisCube.Instrument -%}
                                                  {% set sTargetGroup = "MainLabel.IsisCube.Instrument" -%}
                                                  {% if exists("MainLabel.IsisCube.Mapping") -%}
                                                    data_projected:
                                                  {% else -%}
                                                    data_raw:
                                                  {% endif -%}
                                                {% else if exists("MainLabel.IsisCube.Mosaic") -%}
                                                  {% set targetGroup = MainLabel.IsisCube.Mosaic -%}
                                                  {% set sTargetGroup = "MainLabel.IsisCube.Mosaic" -%}
                                                  data_derived:
                                                {% else -%}
                                                  {% set sTargetGroup = "None" -%}
                                                  TBD:
                                                {% endif -%}
                                                {% if exists(sProductId) -%}{{lower(productId)-}}{% endif -%}
  </logical_identifier>
  <version_id>1.0</version_id>
  <title>PDS4 product exported from ISIS3 cube.</title>
  <information_model_version>1.8.0.0</information_model_version>
  <product_class>Product_Observational</product_class>
  <Alias_List>
   <Alias>
    <alternate_id>{% if exists(sProductId) -%}{{productId}}{% endif -%}</alternate_id>
    <comment>CaSSIS Internal Identifier</comment>
   </Alias>
  </Alias_List>
  <Modification_History>
  {# TODO - Loop through isis label History group? -#}
   <Modification_Detail>
    <modification_date>{{currentTime}}</modification_date>
    <version_id>1.0</version_id>
    <description>Created PDS4 output product from ISIS cube with the isisexport application from ISIS. </description>
   </Modification_Detail>
  </Modification_History>
 </Identification_Area>
 <Observation_Area>
  <Time_Coordinates>
   <start_date_time>{{targetGroup.StartTime.Value}}Z</start_date_time>
   {% if exists(sTargetGroup + ".StopTime") %}
   <stop_date_time>{{targetGroup.StopTime.Value}}Z</stop_date_time>
   {% else %}
   <stop_date_time>{{targetGroup.StartTime.Value}}Z</stop_date_time>
   {% endif %}
   {% if exists(sTargetGroup + ".LocalTime") %}
   <local_true_solar_time>{{targetGroup.LocalTime.Value}}</local_true_solar_time>
   {% endif %}
   {% if exists(sTargetGroup + ".SolarLongitude") %}
   <solar_longitude unit="deg">{{targetGroup.SolarLongitude.Value}}</solar_longitude>
   {% endif %}
  </Time_Coordinates>
  <Investigation_Area>
   <name>{{targetGroup.SpacecraftName.Value}}</name>
   <type>Mission</type>
   <Internal_Reference>
    <lid_reference>urn:esa:psa:context:investigation:mission.tgo</lid_reference>
    <reference_type>data_to_investigation</reference_type>
    <comment>This is the PDS4 logical identifier for the ExoMars Trace Gas Orbiter mission.</comment>
   </Internal_Reference>
  </Investigation_Area>
  <Observing_System>
   <name>{{targetGroup.SpacecraftName.Value}} {{targetGroup.InstrumentId.Value}}</name>
   <Observing_System_Component>
    <name>{{targetGroup.SpacecraftName.Value}}</name>
    <type>Spacecraft</type>
   </Observing_System_Component>
   <Observing_System_Component>
    <name>{{targetGroup.InstrumentId.Value}}</name>
    <type>Instrument</type>
   </Observing_System_Component>
  </Observing_System>
  <Target_Identification>
   <name>{{targetGroup.TargetName.Value}}</name>
   <type>Planet</type>
  </Target_Identification>
  {# TODO - seems like none of these values are consistently included in the Archive group. May require coordination with isisimport
  {% if exists("MainLabel.IsisCube.Archive") -%}
  <Mission_Area>
   <psa:Mission_Information>
    <psa:mission_phase_name>{{MainLabel.IsisCube.Archive.MissionPhase.Value}}</psa:mission_phase_name>
   </psa:Mission_Information>
   <psa:Sub-Instrument>
    <psa:identifier>SCI</psa:identifier>
    <psa:name>CASSIS Science</psa:name>
    <psa:type>Imager</psa:type>
   </psa:Sub-Instrument>
   <psa:Processing_Context>
    <psa:processing_software_title>Geometry_Pipeline</psa:processing_software_title>
    <psa:processing_software_version>1.0.1</psa:processing_software_version>
   </psa:Processing_Context>
   <psa:Observation_Context>
    <psa:instrument_pointing_mode>No pointing</psa:instrument_pointing_mode>
    <psa:instrument_pointing_description>No pointing</psa:instrument_pointing_description>
    <psa:observation_identifier>{{MainLabel.IsisCube.Archive.UID.Value}}</psa:observation_identifier>
   </psa:Observation_Context>
   <cas:CASSIS_Data>
    <cas:instrument_information>
     <cas:instrument_ifov>{{MainLabel.IsisCube.Archive.IFOV.Value}}</cas:instrument_ifov>
     <cas:instrument_ifov_unit>{{MainLabel.IsisCube.Archive.IFOVUnit.Value}}</cas:instrument_ifov_unit>
     <cas:filters_available>{{MainLabel.IsisCube.Archive.FiltersAvailable.Value}}</cas:filters_available>
    </cas:instrument_information>
    <cas:telescope_information>
     <cas:focal_length>{{MainLabel.IsisCube.Archive.FocalLength.Value}}</cas:focal_length>
     <cas:focal_length_unit>{{MainLabel.IsisCube.Archive.FocalLengthUnit.Value}}</cas:focal_length_unit>
     <cas:f_number>{{MainLabel.IsisCube.Archive.FNumber.Value}}</cas:f_number>
     <cas:telescope_type>{{MainLabel.IsisCube.Archive.TelescopeType.Value}}</cas:telescope_type>
    </cas:telescope_information>
    <cas:detector_information>
     <cas:description>{{MainLabel.IsisCube.Archive.TelescopeType.Value}}</cas:description>
     <cas:pixel_height>{{MainLabel.IsisCube.Archive.PixelHeight.Value}}</cas:pixel_height>
     <cas:pixel_height_unit>{{MainLabel.IsisCube.Archive.PixelHeightUnit.Value}}</cas:pixel_height_unit>
     <cas:pixel_width>{{MainLabel.IsisCube.Archive.PixelWidth.Value}}</cas:pixel_width>
     <cas:pixel_width_unit>{{MainLabel.IsisCube.Archive.PixelWidthUnit.Value}}</cas:pixel_width_unit>
     <cas:detector_type>{{MainLabel.IsisCube.Archive.DetectorType.Value}}</cas:detector_type>
     <cas:read_noise>{{MainLabel.IsisCube.Archive.ReadNoise.Value}}</cas:read_noise>
     <cas:read_noise_unit>{{MainLabel.IsisCube.Archive.ReadNoiseUnit.Value}}</cas:read_noise_unit>
    </cas:detector_information>
    <cas:geometry_information/>
   </cas:CASSIS_Data>
  </Mission_Area>
  {% endif -%}
  #}
  <Discipline_Area>
  <disp:Display_Settings>
  <Local_Internal_Reference>
    <local_identifier_reference>Array_3D_Image</local_identifier_reference>
    <local_reference_type>display_settings_to_array</local_reference_type>
  </Local_Internal_Reference>
  <disp:Display_Direction>
    <disp:horizontal_display_axis>Sample</disp:horizontal_display_axis>
    <disp:horizontal_display_direction>Left to Right</disp:horizontal_display_direction>
    <disp:vertical_display_axis>Line</disp:vertical_display_axis>
    <disp:vertical_display_direction>Top to Bottom</disp:vertical_display_direction>
  </disp:Display_Direction>
  </disp:Display_Settings>
  <img:Imaging>
    <img:Imaging_Instrument_Parameters>
     <img:exposure_duration unit="s">1.488e-003</img:exposure_duration>
    </img:Imaging_Instrument_Parameters>
    <Local_Internal_Reference>
     <local_identifier_reference>Image_Array_Object</local_identifier_reference>
     <local_reference_type>imaging_parameters_to_image_object</local_reference_type>
    </Local_Internal_Reference>
    <img:Image_Product_Information>
     <img:Filter>
      <img:filter_name>{{MainLabel.IsisCube.BandBin.FilterName.Value}}</img:filter_name>
      <img:filter_id>{{MainLabel.IsisCube.BandBin.FilterName.Value}}</img:filter_id>
      <img:bandwidth unit="{{MainLabel.IsisCube.BandBin.Width.Units}}">{{MainLabel.IsisCube.BandBin.Width.Value}}</img:bandwidth>
      {% if exists("MainLabel.IsisCube.BandBin.Venter") -%}
      <img:center_filter_wavelength unit="{{MainLabel.IsisCube.BandBin.Venter.Units}}">{{MainLabel.IsisCube.BandBin.Center.Value}}</img:center_filter_wavelength>
      {% endif -%}
     </img:Filter>
    </img:Image_Product_Information>
   </img:Imaging>
  {% if exists("MainLabel.IsisCube.Mapping") -%}
    {% include "mappingGroup.tpl" %}
  {% endif -%}
  {% if exists("MainLabel.IsisCube.Mosaic") -%}
  <geom:Geometry>
    <geom:Image_Display_Geometry>
     <geom:Display_Direction>
      <geom:horizontal_display_axis>Sample</geom:horizontal_display_axis>
      <geom:horizontal_display_direction>Left to Right</geom:horizontal_display_direction>
      <geom:vertical_display_axis>Line</geom:vertical_display_axis>
      <geom:vertical_display_direction>Top to Bottom</geom:vertical_display_direction>
     </geom:Display_Direction>
     <geom:Object_Orientation_North_East>
      <geom:north_azimuth unit="deg">{{MainLabel.IsisCube.Mosaic.NorthAzimuth.Value}}</geom:north_azimuth>
      <geom:east_azimuth unit="deg">0.0</geom:east_azimuth>
      <geom:Reference_Frame_Identification>
       <geom:name>J2000</geom:name>
      </geom:Reference_Frame_Identification>
     </geom:Object_Orientation_North_East>
    </geom:Image_Display_Geometry>
    <geom:Geometry_Orbiter>
     <geom:geometry_reference_time_utc>{{MainLabel.IsisCube.Mosaic.StartTime.Value}}Z</geom:geometry_reference_time_utc>
     <geom:Surface_Geometry>
      <geom:Surface_Geometry_Specific>
       <geom:subsolar_azimuth unit="deg">{{MainLabel.IsisCube.Mosaic.SubSolarAzimuth.Value}}</geom:subsolar_azimuth>
      </geom:Surface_Geometry_Specific>
     </geom:Surface_Geometry>
     <geom:Illumination_Geometry>
      <geom:Illumination_Specific>
       <geom:reference_pixel_location>Center</geom:reference_pixel_location>
       <geom:incidence_angle unit="deg">{{MainLabel.IsisCube.Mosaic.IncidenceAngle.Value}}</geom:incidence_angle>
       <geom:emission_angle unit="deg">{{MainLabel.IsisCube.Mosaic.EmissionAngle.Value}}</geom:emission_angle>
       <geom:phase_angle unit="deg">{{MainLabel.IsisCube.Mosaic.PhaseAngle.Value}}</geom:phase_angle>
      </geom:Illumination_Specific>
     </geom:Illumination_Geometry>
    </geom:Geometry_Orbiter>
    <geom:SPICE_Kernel_Files>
     <geom:SPICE_Kernel_Identification>
      <geom:spice_kernel_file_name>em16_cassis.tm</geom:spice_kernel_file_name>
     </geom:SPICE_Kernel_Identification>
    </geom:SPICE_Kernel_Files>
   </geom:Geometry>
  {% endif -%}
  </Discipline_Area>
 </Observation_Area>
 <File_Area_Observational>
  <File>
   <file_name>{{MainLabel.IsisCube.Archive.FileName.Value}}.img</file_name>
  </File>
  {# still need to include possible 3DArray
  <Array_3D_Image>
   <local_identifier>Array_3D_Image</local_identifier>
   <offset unit="byte">0</offset>
   <axes>3</axes>
   <axis_index_order>Last Index Fastest</axis_index_order>
   <Element_Array>
    <data_type>{{pixelType}}</data_type>
    <scaling_factor>1.0</scaling_factor>
    <value_offset>0.0</value_offset>
   </Element_Array>
   <Axis_Array>
    <axis_name>Band</axis_name>
    <elements>{{MainLabel.IsisCube.Core.Dimensions.Bands.Value}}</elements>
    <sequence_number>1</sequence_number>
   </Axis_Array>
   <Axis_Array>
    <axis_name>Line</axis_name>
    <elements>{{MainLabel.IsisCube.Core.Dimensions.Lines.Value}}</elements>
    <sequence_number>2</sequence_number>
   </Axis_Array>
   <Axis_Array>
    <axis_name>Sample</axis_name>
    <elements>{{MainLabel.IsisCube.Core.Dimensions.Samples.Value}}</elements>
    <sequence_number>3</sequence_number>
   </Axis_Array>
   <Special_Constants>
     <missing_constant>-3.40282265508890445e+38</missing_constant>
     <high_instrument_saturation>-3.40282326356119256e+38</high_instrument_saturation>
     <high_representation_saturation>-3.4028234663852886e+38</high_representation_saturation>
     <low_instrument_saturation>-3.40282306073709653e+38</low_instrument_saturation>
     <low_representation_saturation>-3.40282285791300049e+38</low_representation_saturation>
   </Special_Constants>
  </Array_3D_Image> #}
  <Array_2D_Image>
    <axes>2</axes>
    <Axis_Array>
      <axis_name>Sample</axis_name>
      <sequence_number>1</sequence_number>
      <elements>2048</elements>
    </Axis_Array>
    <Axis_Array>
      <axis_name>Line</axis_name>
      <sequence_number>2</sequence_number>
      <elements>256</elements>
    </Axis_Array>
    <Element_Array>
      <data_type>IEEE754LSBSingle</data_type>
      <idl_data_type>4</idl_data_type>
      <order>First_Index_Fastest</order>
      <unit>DN</unit>
      <scaling_factor> 1.00</scaling_factor>
      <offset> 0.00</offset>
    </Element_Array>
  </Array_2D_Image>
 </File_Area_Observational>
</Product_Observational>
+45 −0
Original line number Diff line number Diff line
<cart:Cartography>
<Local_Internal_Reference>
  <local_identifier_reference>Image_Array_Object</local_identifier_reference>
  <local_reference_type>cartography_parameters_to_image_object</local_reference_type>
</Local_Internal_Reference>
<cart:Spatial_Domain>
  <cart:Bounding_Coordinates>
  <cart:west_bounding_coordinate unit="deg">{{MainLabel.IsisCube.Mapping.MinimumLongitude.Value}}</cart:west_bounding_coordinate>
  <cart:east_bounding_coordinate unit="deg">{{MainLabel.IsisCube.Mapping.MaximumLongitude.Value}}</cart:east_bounding_coordinate>
  <cart:north_bounding_coordinate unit="deg">{{MainLabel.IsisCube.Mapping.MaximumLatitude.Value}}</cart:north_bounding_coordinate>
  <cart:south_bounding_coordinate unit="deg">{{MainLabel.IsisCube.Mapping.MinimumLatitude.Value}}</cart:south_bounding_coordinate>
  </cart:Bounding_Coordinates>
</cart:Spatial_Domain>
<cart:Spatial_Reference_Information>
  <cart:Horizontal_Coordinate_System_Definition>
  <cart:Planar>
      <cart:Map_Projection>
        <cart:map_projection_name>{{MainLabel.IsisCube.Mapping.ProjectionName.Value}}</cart:map_projection_name>
        <cart:{{MainLabel.IsisCube.Mapping.ProjectionName.Value}}>
        </cart:{{MainLabel.IsisCube.Mapping.ProjectionName.Value}}>
      </cart:Map_Projection>
    <cart:Planar_Coordinate_Information>
    <cart:planar_coordinate_encoding_method>Coordinate Pair</cart:planar_coordinate_encoding_method>
    <cart:Coordinate_Representation>
      <cart:pixel_resolution_x unit="m/pixel">{{MainLabel.IsisCube.Mapping.PixelResolution.Value}}</cart:pixel_resolution_x>
      <cart:pixel_resolution_y unit="m/pixel">{{MainLabel.IsisCube.Mapping.PixelResolution.Value}}</cart:pixel_resolution_y>
      <cart:pixel_scale_x unit="pixel/deg">{{MainLabel.IsisCube.Mapping.Scale.Value}}</cart:pixel_scale_x>
      <cart:pixel_scale_y unit="pixel/deg">{MainLabel.IsisCube.Mapping.Scale.Value}}</cart:pixel_scale_y>
    </cart:Coordinate_Representation>
    </cart:Planar_Coordinate_Information>
    <cart:Geo_Transformation>
    <cart:upperleft_corner_x unit="m">{{MainLabel.IsisCube.Mapping.UpperLeftCornerX.Value}}</cart:upperleft_corner_x>
    <cart:upperleft_corner_y unit="m">{{MainLabel.IsisCube.Mapping.UpperLeftCornerY.Value}}</cart:upperleft_corner_y>
    </cart:Geo_Transformation>
  </cart:Planar>
  <cart:Geodetic_Model>
    <cart:latitude_type>{{MainLabel.IsisCube.Mapping.LatitudeType.Value}}</cart:latitude_type>
    <cart:semi_major_radius unit="m">{{MainLabel.IsisCube.Mapping.EquatorialRadius.Value}}</cart:semi_major_radius>
    <cart:semi_minor_radius unit="m">{{MainLabel.IsisCube.Mapping.EquatorialRadius.Value}}</cart:semi_minor_radius>
    <cart:polar_radius unit="m">{{MainLabel.IsisCube.Mapping.PolarRadius.Value}}</cart:polar_radius>
    <cart:longitude_direction>{{MainLabel.IsisCube.Mapping.LongitudeDirection.Value}}</cart:longitude_direction>
  </cart:Geodetic_Model>
  </cart:Horizontal_Coordinate_System_Definition>
</cart:Spatial_Reference_Information>
</cart:Cartography>
 No newline at end of file
Loading