The UA::HiRISE::Observation software was developed at the Planetary Image Research Laboratory (PIRL) of the University of Arizona Department of Planetary Sciences for the purpose of managing observation data sets produced by the High Resolution Imaging Science Experiment (HiRISE) instrument, part of the Mars Reconnaissance Orbiter (MRO) mission.
The principle purpose of the UA::HiRISE::Observation software is to generate EDR files (described in the EDR Software Interface Specification) that meet the Planetary Data System (PDS) standards for mission data products used by the science community and the general public. This software is being distributed to assist users of the EDR data products in managing the data components for their applications. The library software (libObservation) is composed of a set of C++ classes and utility functions:
The Observation class abstracts the entire set of channel data components, which it contains. It is associated with a data stream for reading and/or writing the data components. It also provides the method to generate from the data components the PDS standard label that is attached to the EDR data product.
A Data_Component provides a common interface for all HiRISE observation channel data components. It provides for detailed identification of any component, including printing a complete listing of its structure and contents. It also offers generalized access to the component data, as a binary data block or by specific data elements. A pure virtual data verification check method ensures that each component will implement its self-verification operations which are used during data reconciliation. Associated with this class are a set of functions to help manage label parameters and time values.
There are four implementations of Data_Component:
he Science_Channel_Header encapsulates the primary science data that describes the HiRISE instrument settings used to obtain the observation data. Each of the 125 data elements is individually identified and directly accessible. Methods are provided to access complex values - such as specific bit fields and time encodings - symbolically, and to convert sensor values to real world units as well as identify their units.
Each EDR data product contains a LUT (lookup table) immediately following the Science Channel Header. The LUT is used by the HiRISE instrument to map two byte observation data to single byte data for downlink by the spacecraft. All single byte image data has been mapped through its LUT. The LUT class provides the method to generate the table (the LOOKUP_CONVERSION_TABLE in the EDR label) that describes the reverse mapping from single image bytes back to their two byte observation values. When the LUT is not used it is empty (zero-filled) and the image data remains as two bytes per pixel.
This small data component contains six key observation data description values. It is a convenient and quick way to get the information for the observation image definition.
The Image_Line class is used by the Observation class as a cache of the current line of observation image data. It provides methods to directly, and symbolically, access all elements of an image line including those in the identifying header, the black and buffer pixels and, of course, the image pixels. Methods are also provided to manipulate the image data; e.g. lookup table conversion.
The classes of libObservation are employed in the HiRISE_Observation application, the program used to generate EDR product files.
The Instrument class carries constants that characterize the HiRISE instrument for the observation data components.
The Observation_ID class encapsulates the understanding of the 32-bit observation identification value and its various text representations. This value is the key to identifying exactly which observation data set is being used and with it relating to all of the metadata for the observation stored in the HiCat database. The Observation_ID is extended by its CCD_ID and Channel_ID subclasses which allow for detailed discrimination of each data set within the context of any identified observation. The fully qualified observation data set identification is contained in the EDR filename, PVL label, and in the Science Channel Header data component.
The libHiRISE software is included with the UA::HiRISE distribution.
The PIRL C++ class library (PIRL++) includes a Data_Block class that is subclassed by the Data_Component class. This class is used to specify the detailed structure definition of a binary data block and provides independence from the host architecture data ordering relative to the ordering in the data block. The difficulties of odd byte alignments and problems of correct data order for all HiRISE Data_Components are thus reliably and transparently managed regardless of the host architecture where the software and data sets are used.
The PVL (Parameter Value Language, a form of ODL; Consultative Committee for Space Data Systems [CCSDS0006,8] and ISO [ISO/CD 14961:2002] standards) C++ classes developed at the idaeim studio are free software that provide comprehensive management of PVL information. A tolerant PVL syntax Parser and a multi-mode PVL syntax Lister provide input and output capabilities for the Parameter and Value virtual classes. Parameter Assignment and Aggregate (collections of Parameters) classes, and classes for all types of Values including Arrays (collections of Values) completely encompass all aspects of PVL management. Parameter finding, sorting, bidirectional hierarchy iteration, automatic type casting and boolean operators are amongst some of the features available. This package was used to create the EDR data products PDS label. It offers direct access to the EDR product metadata.
For those who would prefer to use the C language to access the PDS EDR label the PIRL Parameter Value Logic (PPVL) package is available. And for those who would prefer to use the Java language the PIRL Java Packages offers a PVL package.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA.