HiRISE
 PDS_JP2

Public Member Functions | Static Public Attributes | List of all members
HiPrecision_PDS_Converter Class Reference

A HiRISE_PDS_Converter is used to convert a HiRISE image data product PDS label between its attached PDS form and its detached PDS/JP2 form. More...

#include <HiPrecision_PDS_Converter.hh>

Inheritance diagram for HiPrecision_PDS_Converter:
Inheritance graph
[legend]
Collaboration diagram for HiPrecision_PDS_Converter:
Collaboration graph
[legend]

Public Member Functions

 HiPrecision_PDS_Converter ()
 Constructs an empty HiPrecision_PDS_Converter. More...
 
 HiPrecision_PDS_Converter (const std::string &pathname, const char **excluded_names=NULL, const char **image_names=NULL)
 Constructs a HiRISE_PDS_Converter from a named file. More...
 
bool label_recognized () const
 Test whether the label parameters are recognized by this converter. More...
 
void write_PDS_JP2_label (const std::string &PDS_label_pathname, const std::string &JP2_pathname, const char **removed_parameter_names=NULL, PDS_Data *additional_parameters=NULL)
 Write a detached PDS/JP2 label file. More...
 
void write_PDS_label (const std::string &PDS_label_pathname, const Rectangle *image_region=NULL, unsigned int resolution_level=1, const char **removed_parameter_names=NULL, PDS_Data *additional_parameters=NULL)
 Write a PDS label for image data to be appended. More...
 
std::string product_names () const
 Get the name of the product types that this converter is intended to process. More...
 
void data_set_version (PDS_Data *additional_parameters)
 Adjust the data set version parameters. More...
 
void adjust_image_map_projection (idaeim::PVL::Aggregate *image_map_projection, const Rectangle &image_region, unsigned int ratio)
 Adjust the IMAGE_MAP_PROJECTION_GROUP_NAME of parameters. More...
 
- Public Member Functions inherited from Generic_PDS_Converter
 Generic_PDS_Converter ()
 Constructs an empty Generic_PDS_Converter. More...
 
 Generic_PDS_Converter (const std::string &pathname, const char **excluded_names=NULL, const char **image_names=NULL)
 Constructs a Generic_PDS_Converter from a named file. More...
 
- Public Member Functions inherited from PDS_Converter
 PDS_Converter ()
 Constructs an empty PDS_Converter. More...
 
 PDS_Converter (const std::string &pathname, const char **excluded_names=NULL, const char **image_names=NULL)
 Constructs a PDS_Converter from a named file. More...
 
 PDS_Converter (const PDS_Converter &converter)
 Copies a PDS_Converter. More...
 
virtual PDS_Converteroperator= (const PDS_Converter &converter)
 Assigns another PDS_Converter to this PDS_Converter. More...
 
virtual ~PDS_Converter ()
 Frees the PDS_Data::PDS_Data_Block_List and its contents. More...
 
PDS_Converterlabel_size (unsigned int size)
 Set the preferred size of a label file. More...
 
unsigned int label_size () const
 Get the preferred size of a label file. More...
 
PDS_Data::PDS_Data_Block_Listdata_blocks () const
 Get the list of data blocks in the PDS label. More...
 
void refresh_data_blocks ()
 Refresh the list of data blocks. More...
 
Image_Data_Blockimage_data ()
 Get the Image_Data_Block from the PDS_Data::PDS_Data_Block_List. More...
 
PDS_Converterexcluded_data_block_names (const char **names)
 Set the names of parameters to be excluded from the data block list. More...
 
const char ** excluded_data_block_names () const
 Get the names of parameters to be excluded from the data block list. More...
 
PDS_Converterimage_data_block_names (const char **names)
 Set the parameter names of image data blocks. More...
 
const char ** image_data_block_names () const
 Get the parameter names of image data blocks. More...
 
idaeim::PVL::AggregatePDS_JP2_image_parameters (const std::string &JP2_pathname)
 Assemble PDS/JP2 image file description parameters. More...
 
unsigned int write_label (const std::string &pathname, PDS_Data &label, idaeim::PVL::Lister *lister=NULL, bool pad_label=false)
 Write a label file. More...
 
- Public Member Functions inherited from PDS_Data
 PDS_Data ()
 Construct PDS_Data with no parameters. More...
 
 PDS_Data (const idaeim::PVL::Aggregate &parameters)
 Construct PDS_Data from a PVL Parameter Aggregate. More...
 
 PDS_Data (const idaeim::PVL::Aggregate &parameters, const std::string &detached)
 Construct PDS_Data from a PVL Parameter Aggregate. More...
 
 PDS_Data (const std::string &pathname)
 Construct PDS_Data from a named file. More...
 
PDS_Data_Block_Listdata_blocks (const char **excluded=NULL, const char **image_block_names=NULL)
 Get a list of all binary data blocks in the PDS data. More...
 
idaeim::PVL::Parameterfind_parameter (const std::string &pathname, bool case_sensitive=false, int skip=0, Parameter_Class_Selection parameter_class=ANY_PARAMETER) const
 Find a named Parameter. More...
 
virtual PDS_Dataparameters (const std::string &pathname)
 Set the parameters from a source file. More...
 
virtual PDS_Dataparameters (const idaeim::PVL::Aggregate &parameters)
 Set the parameters from a Parameter Aggregate. More...
 
idaeim::PVL::Parameterremove_parameter (const std::string &pathname, bool case_sensitive=false, int skip=0, Parameter_Class_Selection parameter_class=ANY_PARAMETER)
 Removes a named Parameter. More...
 
template<typename T >
bool parameter_value (const std::string &pathname, T &value, bool case_sensitive=false, int skip=0)
 Set the value of a named parameter. More...
 
double numeric_value (const std::string &pathname, bool case_sensitive=false, int skip=0) const
 Get the numeric value of a named parameter. More...
 
std::string string_value (const std::string &pathname, bool case_sensitive=false, int skip=0) const
 Get the string value of a named parameter. More...
 
- Public Member Functions inherited from Aggregate
Aggregateadd (const Parameter &parameter)
 
Aggregateadd (Parameter *parameter)
 
 Aggregate (const Aggregate &aggregate)
 
 Aggregate (Parser &parser, const std::string name="")
 
 Aggregate (const std::string name="", const idaeim::PVL::Parameter::Type type_code=Default_Subtype)
 
 Aggregate (const Parameter &parameter)
 
Depth_Iterator begin_depth ()
 
Aggregateclone () const
 
int compare (const Parameter &parameter) const
 
Aggregatecopy_in (const Aggregate &aggregate)
 
Depth_Iterator end_depth ()
 
void entering (Parameter *parameter)
 
Parameterfind (const std::string &pathname, bool case_sensitive=false, int skip=0, idaeim::PVL::Parameter::Type type=(Type)(ASSIGNMENT|AGGREGATE)) const
 
bool is (const Type type) const
 
bool is_Aggregate () const
 
bool is_Group () const
 
bool is_Object () const
 
Aggregatemove_in (Aggregate &aggregate)
 
Aggregateoperator= (const Parameter &parameter)
 
Aggregateoperator= (const Aggregate &parameter)
 
Aggregateoperator= (const Assignment &parameter)
 
Aggregateoperator= (const Value &value)
 
const Parameteroperator[] (unsigned int index) const
 
Parameteroperator[] (unsigned int index)
 
void read (std::istream &in=std::cin)
 
void read (Parser &parser)
 
Parameterremove (size_type index)
 
Parameterremove (Parameter *parameter)
 
Parameterremove (iterator position)
 
Parameterremove_depth (Parameter *parameter)
 
void removing (Parameter *parameter)
 
size_type total_size ()
 
Aggregatetype (const int type)
 
Type type () const
 
std::string type_name () const
 
Valuevalue () const
 
 ~Aggregate ()
 
- Public Member Functions inherited from Parameter
bool at_pathname (std::string pathname, bool case_sensitive, const Parameter *root=NULL) const
 
bool at_pathname (std::string pathname) const
 
bool at_pathname (std::string pathname, bool case_sensitive, const Parameter &root) const
 
std::string comment () const
 
Parametercomment (const std::string &comment)
 
bool has_children () const
 
Parameterindenting (const MODE_STATE state, const WHICH_MODE which=LOCAL_MODE_SET)
 
Parameterindenting (const bool enable)
 
MODE_STATE indenting (const WHICH_MODE which=RECURSIVE_MODE_SET) const
 
virtual bool is_Assignment () const
 
virtual bool is_Token () const
 
Parametermode_state (const MODE mode, const MODE_STATE state, const WHICH_MODE which=LOCAL_MODE_SET)
 
const MODE_STATEmode_state (const WHICH_MODE which=LOCAL_MODE_SET) const
 
MODE_STATE mode_state (const MODE mode, const WHICH_MODE which=RECURSIVE_MODE_SET) const
 
Parametermode_state (const MODE_STATE *const modes, const WHICH_MODE which=LOCAL_MODE_SET)
 
std::string name () const
 
Parametername (const std::string &name)
 
bool operator!= (const Parameter &parameter) const
 
bool operator< (const Parameter &parameter) const
 
bool operator<= (const Parameter &parameter) const
 
bool operator== (const Parameter &parameter) const
 
bool operator> (const Parameter &parameter) const
 
bool operator>= (const Parameter &parameter) const
 
 Parameter (const Parameter &parameter)
 
 Parameter (const std::string &name="")
 
Aggregateparent () const
 
std::string pathname (const Parameter *root=NULL) const
 
std::string pathname (const Parameter &root) const
 
std::string pathname_to (const Parameter *root=NULL) const
 
std::string pathname_to (const Parameter &root) const
 
std::ostream & print (std::ostream &out=std::cout) const
 
Aggregateroot () const
 
MODE_STATE verbatim_strings (const WHICH_MODE which=RECURSIVE_MODE_SET) const
 
Parameterverbatim_strings (const bool enable)
 
Parameterverbatim_strings (const MODE_STATE state, const WHICH_MODE which=LOCAL_MODE_SET)
 
unsigned int write (std::ostream &out=std::cout, int depth=0) const
 
virtual ~Parameter ()
 
- Public Member Functions inherited from Vectal< Parameter >
void assign (size_type number, const_reference value)
 
void assign (Iterator start, Iterator stop)
 
reference at (size_type index)
 
const_reference at (size_type index) const
 
reference back ()
 
const_reference back () const
 
Iterator begin ()
 
Const_Iterator begin () const
 
void clear ()
 
Iterator end ()
 
Const_Iterator end () const
 
void erase (size_type index)
 
iterator erase (iterator start, iterator stop)
 
iterator erase (iterator position)
 
reference front ()
 
const_reference front () const
 
iterator insert (iterator position, const_reference value)
 
void insert (size_type index, const_reference value)
 
void insert (iterator position, size_type number, const_reference value)
 
void insert (iterator position, InputIterator start, InputIterator stop)
 
Vectaloperator= (const Vectal< value_type > &vectal)
 
const_reference operator[] (size_type index) const
 
reference operator[] (size_type index)
 
pointer peek (const iterator &position)
 
pointer peek (const const_iterator &position) const
 
pointer peek_back ()
 
pointer peek_back () const
 
iterator poke (iterator position, pointer value_pointer)
 
void poke (size_type index, pointer value_pointer)
 
iterator poke (iterator position, const_iterator start, const_iterator stop)
 
void poke_back (pointer value_pointer)
 
void pop_back ()
 
iterator pull (iterator position)
 
iterator pull (iterator start, iterator stop)
 
pointer pull_back ()
 
pointer pull_out (size_type index)
 
pointer pull_out (iterator position)
 
void push_back (const_reference value)
 
Reverse_Iterator rbegin ()
 
Const_Reverse_Iterator rbegin () const
 
Const_Reverse_Iterator rend () const
 
Reverse_Iterator rend ()
 
pointer replace (iterator position, pointer value_pointer)
 
void resize (size_type new_size)
 
void resize (size_type new_size, const_reference value)
 
 Vectal (Iterator start, Iterator stop)
 
 Vectal (const Vectal &vectal)
 
 Vectal ()
 
 Vectal (size_type size, const_reference value)
 
Basevector_base ()
 
void wipe ()
 
virtual ~Vectal ()
 

Static Public Attributes

static const char *const ID
 Class identification name with source code version and date. More...
 
static const char * PRODUCT_TYPE_PARAMETER_NAME = "INSTRUMENT_ID"
 Name of the parameter whose value is the product name being converted. More...
 
static const char * HIPRECISION_PRODUCT_TYPE = "HIRISE_IDEAL_CAMERA"
 Default product name if the PRODUCT_TYPE_PARAMETER_NAME is not found. More...
 
static const char * EXCLUDED_DATA_BLOCK_NAMES []
 Names of data blocks to be ignored (redundant with other data blocks). More...
 
static const char * IMAGE_DATA_BLOCK_NAMES []
 Names of additional Image_Data_Block parameter aggregates. More...
 
static const int DEFAULT_PDS_LABEL_SIZE = 32768
 Default size (bytes) of an attached PDS label. More...
 
static const char * UPDATE_VERSION_PARAMETER_NAMES []
 
static const int DATA_SET_VERSION_MINOR_VALUE = 1
 DATA_SET_xxx version minor value. More...
 
static const char * IMAGE_HEIGHT_PARAMETER_NAME
 Image height. More...
 
static const char * IMAGE_WDITH_PARAMETER_NAME
 Image width. More...
 
- Static Public Attributes inherited from Generic_PDS_Converter
static const char *const ID
 Class identification name with source code version and date. More...
 
static const char * PRODUCT_TYPE = "generic"
 The PDS product type name. More...
 
static const char * DATA_POINTER_PARAMETER_UNITS = "BYTES"
 Units of parameters pointing to data blocks. More...
 
static const char * REMOVED_PDS_PARAMETER_NAMES []
 Names of parameters to be removed from the copy of the source PDS label when generating the converted PDS/JP2 label. More...
 
static const char * REMOVED_PDS_JP2_PARAMETER_NAMES []
 Names of parameters to be removed from the copy of the source PDS/JP2 label when generating the converted PDS label. More...
 
static const int DEFAULT_PDS_LABEL_SIZE = 2048
 Default size (bytes) of an attached PDS label. More...
 
- Static Public Attributes inherited from PDS_Converter
static const char *const ID
 Class identification name with source code version and date. More...
 
static const char * DEFAULT_PRODUCT_TYPE = "unspecified"
 Default product name. More...
 
static const char * UNCOMPRESSED_FILE_PARAMETERS_GROUP = "UNCOMPRESSED_FILE"
 Name of the PDS/JP2 label parameter group describing the source uncompressed file. More...
 
static const char * COMPRESSED_FILE_PARAMETERS_GROUP = "COMPRESSED_FILE"
 Names of the PDS/JP2 label parameter group describing the destination compressed file. More...
 
static const char * GeoTIFF_PARAMETER_NAME = "GeoTIFF_Included"
 GeoTIFF included. More...
 
static const char * GML_PARAMETER_NAME = "GML_Included"
 GML included. More...
 
static const char * NO_VERSION_CHANGE_PARAMETER_NAME = "No_Version_Change"
 No Version number change. More...
 
- Static Public Attributes inherited from PDS_Data
static const char *const ID
 Class identification name with source code version and date. More...
 
static const char * PDS_ID_PARAMETER_NAME = "PDS_VERSION_ID"
 Name of the parameter providing the PDS ID. More...
 
static const char * RECORD_TYPE_PARAMETER_NAME = "RECORD_TYPE"
 Name of the parameter specifying the type of label records. More...
 
static const char * BYTE_RECORD_TYPE = "UNDEFINED"
 The record type used to define byte count based records. More...
 
static const char * FIXED_LENGTH_RECORD_TYPE = "FIXED_LENGTH"
 The record type used to define fixed length records. More...
 
static const char * LABEL_RECORDS_PARAMETER_NAME = "LABEL_RECORDS"
 Name of the parameter specifying the number of records in the label. More...
 
static const char * RECORD_BYTES_PARAMETER_NAME = "RECORD_BYTES"
 Name of the parameter specifying the number of bytes per record. More...
 
static const char * FILE_RECORDS_PARAMETER_NAME = "FILE_RECORDS"
 Name of the parameter specifying the number of records in the file. More...
 
static const char * INTERCHANGE_FORMAT_PARAMETER_NAME = "INTERCHANGE_FORMAT"
 Name of the parameter indicating the data format. More...
 
static const char * IMAGE_DATA_BLOCK_NAME = "IMAGE"
 Name of the Image_Data_Block parameter group. More...
 
static const char * BYTES_UNITS = "BYTES"
 Units name for storage measured in bytes. More...
 
static const char RECORD_POINTER_PARAMETER_MARKER = '^'
 Record pointer parameter prefix. More...
 
- Static Public Attributes inherited from Parameter
static const bool DEFAULT_CASE_SENSITIVITY
 
static const char DEFAULT_PATHNAME_DELIMITER
 
static const char *const ID
 
- Static Public Attributes inherited from Vectal_ID
static const char *const ID
 

Additional Inherited Members

- Public Types inherited from PDS_Data
enum  Parameter_Class_Selection {
  AGGREGATE_PARAMETER = -1 ,
  ANY_PARAMETER = 0 ,
  ASSIGNMENT_PARAMETER = 1
}
 Selects the class of parameter to find. More...
 
typedef std::vector< PDS_Data_Block * > PDS_Data_Block_List
 A vector of PDS_Data_Block object pointers. More...
 
- Public Types inherited from Aggregate
typedef Parameter_List::const_iterator const_iterator
 
typedef Depth_Iterator depth_iterator
 
typedef Parameter_List::iterator iterator
 
typedef Vectal< ParameterParameter_List
 
- Public Types inherited from Parameter
enum  MODE
 
enum  MODE_STATE
 
enum  Type
 
enum  WHICH_MODE
 
typedef Integer Default_Value
 
- Public Types inherited from Vectal< Parameter >
typedef Base::allocator_type allocator_type
 
typedef std::vector< Parameter * > Base
 
typedef Base::const_iterator Base_const_iterator
 
typedef Base::const_reverse_iterator Base_const_reverse_iterator
 
typedef Base::iterator Base_iterator
 
typedef Base::reverse_iterator Base_reverse_iterator
 
typedef Const_Iterator const_iterator
 
typedef const pointer const_pointer
 
typedef const value_typeconst_reference
 
typedef Const_Reverse_Iterator const_reverse_iterator
 
typedef const value_type const_value_type
 
typedef Base::difference_type difference_type
 
typedef Iterator iterator
 
typedef value_typepointer
 
typedef value_typereference
 
typedef Reverse_Iterator reverse_iterator
 
typedef Base::size_type size_type
 
typedef Parameter value_type
 
- Static Public Member Functions inherited from PDS_Data
static Image_Data_Blockimage_data (PDS_Data_Block_List *data_block_list)
 Get the Image_Data_Block from a PDS_Data::PDS_Data_Block_List. More...
 
- Static Public Member Functions inherited from Aggregate
static Type default_type ()
 
static Type default_type (const int type)
 
- Static Public Member Functions inherited from Parameter
static bool case_sensitive ()
 
static bool case_sensitive (bool enable)
 
static char path_delimiter (const char delimiter)
 
static char path_delimiter ()
 
static std::string type_name (const Type type)
 
- Public Attributes inherited from Aggregate
 CASE_INSENSITIVE
 
 CASE_SENSITIVE
 
- Public Attributes inherited from Parameter
 Verbatim_Strings
 
 Indenting
 
 TOTAL_LOCAL_MODES
 
 MODE_FALSE
 
 MODE_TRUE
 
 MODE_INHERITED
 
 ASSIGNMENT
 
 TOKEN
 
 AGGREGATE
 
 GROUP
 
 OBJECT
 
 END
 
 END_GROUP
 
 END_OBJECT
 
 LOCAL_MODE_SET
 
 DEFAULT_MODE_SET
 
 RECURSIVE_MODE_SET
 
- Protected Member Functions inherited from Generic_PDS_Converter
Parameterparameter_of (idaeim::PVL::Aggregate &parameters, const char *name, bool throw_unless_found=true)
 Convenience parameter finder function that may throw an exception on failure. More...
 
- Protected Member Functions inherited from PDS_Converter
void clear_data_blocks ()
 Clear the data blocks list. More...
 
- Protected Member Functions inherited from Vectal< Parameter >
virtual void entering (pointer value_pointer)
 
virtual void removing (pointer value_pointer)
 
- Protected Attributes inherited from PDS_Converter
const char ** Excluded_Data_Block_Names
 Names (NULL-terminated array) of data blocks to be exluded from the list of data blocks (probably because they are redundant with other data blocks). More...
 
PDS_Data::PDS_Data_Block_ListData_Blocks
 Pointer to the list of data blocks found in the PDS label. More...
 
const char ** Image_Data_Block_Names
 Names (NULL-terminated array) of data blocks that are Image_Data_Blocks. More...
 
Image_Data_BlockIMAGE_Data_Block
 Pointer to the IMAGE data block in the Data_Blocks list. More...
 
unsigned int Label_Size
 The preferred size of the attached PDS label. More...
 
- Protected Attributes inherited from Parameter
std::string Comment
 
MODE_STATE Modes [TOTAL_LOCAL_MODES]
 
std::string Name
 
AggregateParent
 
- Static Protected Attributes inherited from Parameter
static bool Case_Sensitive
 
static MODE_STATE DEFAULT_MODES [TOTAL_LOCAL_MODES]
 
static char Path_Delimiter
 

Detailed Description

A HiRISE_PDS_Converter is used to convert a HiRISE image data product PDS label between its attached PDS form and its detached PDS/JP2 form.

This class provides the HiRISE product-specific implementation of a PDS_Converter.

Author
Bradford Castalia, UA/HiROC
Version
1.1
See also
PDS_Converter

Constructor & Destructor Documentation

◆ HiPrecision_PDS_Converter() [1/2]

Constructs an empty HiPrecision_PDS_Converter.

◆ HiPrecision_PDS_Converter() [2/2]

HiPrecision_PDS_Converter ( const std::string &  pathname,
const char **  excluded_names = NULL,
const char **  image_names = NULL 
)
explicit

Constructs a HiRISE_PDS_Converter from a named file.

The PDS file may contain an attached PDS label or be a detached PDS/JP2 label file. Either the write_PDS_label or write_PDS_JP2_label methods can be used to convert either source, respectively.

Parameters
pathnameThe pathname to the source file containing the PDS label.
excluded_namesThe NULL-terminated array of character strings naming data blocks to be excluded from conversion consideration. May be NULL.
image_namesThe NULL-terminated array of character strings naming data blocks that describe image data. N.B.: The PDS_Data::IMAGE_DATA_BLOCK_NAME is always implicitly included. May be NULL.

References HiPrecision_PDS_Converter::DEFAULT_PDS_LABEL_SIZE, and PDS_Converter::label_size().

Member Function Documentation

◆ label_recognized()

bool label_recognized ( ) const
virtual

Test whether the label parameters are recognized by this converter.

The test will succeed if an image data block can be found in the source file label and a PRODUCT_TYPE_PARAMETER_NAME is found with the HIRISE_PRODUCT_TYPE value.

Returns
true if the label parameters are recognized by this converter; false otherwise.

Reimplemented from Generic_PDS_Converter.

References PDS_Data::find_parameter(), HiPrecision_PDS_Converter::HIPRECISION_PRODUCT_TYPE, PDS_Converter::image_data(), HiPrecision_PDS_Converter::PRODUCT_TYPE_PARAMETER_NAME, and Parameter::value().

◆ write_PDS_JP2_label()

void write_PDS_JP2_label ( const std::string &  PDS_label_pathname,
const std::string &  JP2_pathname,
const char **  removed_parameter_names = NULL,
PDS_Data additional_parameters = NULL 
)
virtual

Write a detached PDS/JP2 label file.

A copy is made of the source label represented by the Parameter Aggregate of the PDS_Converter base class. The original parameters are then have data set version updates applied if appropriate.

Then the base class write_PDS_JP2_label method is called to apply the generic label modifications and write the label file. Finally the copy of the original parameters is restored to the content of this converter.

Parameters
PDS_label_pathnameThe pathname for the detached label file.
JP2_pathnameThe name of the JP2 image data file referened by the label file.
removed_parameter_namesA NULL terminated array of character strings that are the names of parameters to be removed from the source label before being written. May be NULL.
additional_parametersA pointer to PDS_Data that contains additional parameters with product-specific label conversion information. May be NULL.
Exceptions
ios::failureIf the label file could no be created.
See also
Generic_PDS_Converter::write_PDS_JP2_label(const std::string&, const std::string&, const char**, PDS_Data*)

Reimplemented from Generic_PDS_Converter.

References HiPrecision_PDS_Converter::data_set_version(), PDS_Data::parameters(), and Generic_PDS_Converter::write_PDS_JP2_label().

◆ write_PDS_label()

void write_PDS_label ( const std::string &  PDS_label_pathname,
const Rectangle image_region = NULL,
unsigned int  resolution_level = 1,
const char **  removed_parameter_names = NULL,
PDS_Data additional_parameters = NULL 
)
virtual

Write a PDS label for image data to be appended.

A copy is made of the source label represented by the Parameter Aggregate of the PDS_Converter base class. The original parameters then have their image map projection parameters adjusted to be consistent with the selected image region and rendering resolution.

Then the base class write_PDS_label method is called to apply the generic label modifications and write the label file. Finally the copy of the original parameters is restored to the content of this converter.

Parameters
PDS_label_pathnameThe pathname for the file that begins with the converted PDS label.
image_regionA Rectangle pointer that specifies a region within the image that was rendered. N.B.: The rendered image region is specifed after any resolution change has been applied (don't just shift the full resolution image region by the resolution level, which may be inaccurate, get the rendered image size from the JP2 decoder). If NULL, the entire image was selected.
resolution_levelThe resolution level at which the image is rendereed from the JP2 codestream is rendered. 1 is full resolution, 2 is half resolution, 3 is quarter resolution, etc.; i.e. the rendering scale is 1 / (2**(L - 1)).
removed_parameter_namesA NULL terminated array of character strings that are the names of parameters to be removed from the source label before being written. May be NULL.
additional_parametersA pointer to PDS_Data that contains additional parameters with product-specific label conversion information. May be NULL.
Exceptions
runtime_errorIf the source label does not contain the expected parameters required to achieve the conversion.
ios::failureIf the label file could no be created.
See also
adjust_image_map_projection(idaeim::PVL::Aggregate*, const Rectangle&, unsigned int)
Generic_PDS_Converter::write_PDS_label(const std::string&, const Rectangle*, unsigned int, const char**, PDS_Data*)

Reimplemented from Generic_PDS_Converter.

References PDS_Data::parameters(), and Generic_PDS_Converter::write_PDS_label().

◆ product_names()

string product_names ( ) const
virtual

Get the name of the product types that this converter is intended to process.

The value of the INSTRUMENT_ID parameter is used.

Returns
A string used to identify the type of products recognized by this PDS_Converter.

Reimplemented from Generic_PDS_Converter.

References PDS_Data::find_parameter(), HiPrecision_PDS_Converter::HIPRECISION_PRODUCT_TYPE, HiPrecision_PDS_Converter::PRODUCT_TYPE_PARAMETER_NAME, and Parameter::value().

◆ data_set_version()

void data_set_version ( PDS_Data additional_parameters)

Adjust the data set version parameters.

Unless the additional_parameters are non-null and contain a GeoTIFF_PARAMETER_NAME or GML_PARAMETER_NAME parameter with a value of "TRUE" or "1", nothing is done.

For each of the UPDATE_VERSION_PARAMETER_NAMES the parameter value has its minor version number set to the DATA_SET_VERSION_MINOR_VALUE if it is less than that value. The version number is expected to be at the end of the parameter value string in the format "Vm.n", where m is the major version number and n is the minor version number. If any of the UPDATE_VERSION_PARAMETER_NAMES can not be found or a minor version number is not found in its value, it is left unchanged.

Parameters
additional_parametersA pointer to PDS_Data that contains additional parameters with product-specific label conversion information. May be NULL.

References PDS_Data::ASSIGNMENT_PARAMETER, HiPrecision_PDS_Converter::DATA_SET_VERSION_MINOR_VALUE, UA::HiRISE::find_parameter(), PDS_Converter::GeoTIFF_PARAMETER_NAME, PDS_Converter::GML_PARAMETER_NAME, Parameter::name(), PDS_Converter::NO_VERSION_CHANGE_PARAMETER_NAME, PDS_Data::parameter_value(), PDS_Data::string_value(), UA::HiRISE::to_uppercase(), HiPrecision_PDS_Converter::UPDATE_VERSION_PARAMETER_NAMES, Aggregate::value(), and Parameter::value().

Referenced by HiPrecision_PDS_Converter::write_PDS_JP2_label().

◆ adjust_image_map_projection()

void adjust_image_map_projection ( idaeim::PVL::Aggregate image_map_projection,
const Rectangle image_region,
unsigned int  ratio 
)

Adjust the IMAGE_MAP_PROJECTION_GROUP_NAME of parameters.

This method is only used during the write_PDS_label PDS/JP2 to PDS label conversion.

N.B.: The parameters are modified in place.

The following parameters are adjusted to be consistent with a selected subarea and/or reduced resolution rendering of the image:

Image size

The size, in pixels, of the image. The values of these parameters will be set to the image region width and height and are expected to be identical to the size of the rendered image listed in the IMAGE parameters group.

Projection offsets

Key values used to map image locations (sample,line) to to real world (longitude,latitude) locations. The values of these parameters are relative to the image origin (upper-left corner).

  • #HORIZONATAL_OFFSET_PARAMETER_NAME (SAMPLE_PROJECTION_OFFSET)
  • #VERTICAL_OFFSET_PARAMETER_NAME (LINE_PROJECTION_OFFSET)

Image resolution

Defines the size of a pixel in real world units which are specified by the parameter. The values of these parameters are adjusted by the rendering ratio.

  • #METERS_PER_PIXEL_PARAMETER_NAME (MAP_SCALE)
  • #PIXELS_PER_DEGREE_PARAMETER_NAME (MAP_RESOLUTION)

Image boundaries
Specifies the real world (longitude and latitude degrees) location of the image edges. The values of these parameters are re-mapped to the boundaries of the image region.
  • #WESTERN_LONGITUDE_PARAMETER_NAME (WESTERNMOST_LONGITUDE)
  • #EASTERN_LONGITUDE_PARAMETER_NAME (EASTERNMOST_LONGITUDE)
  • #MINIMUM_LATITUDE_PARAMETER_NAME (MINIMUM_LATITUDE)
  • #MAXIMUM_LATITUDE_PARAMETER_NAME (MAXIMUM_LATITUDE)
<b>N.B.</b>: If the #IMAGE_MAP_PROJECTION_GROUP_NAME parameter
value specifies that a stereographicp projection was used and the image
region is not the entire image then the image boundary parameters
will be removed from the converted label because the linear re-mapping
normally used would not be reliable for the non-linear projection.
<i>An implementation of the non-linear projection algorithm is needed
to correct this defect.</i> These parameters are not necessary to
perform mappings between image (sample, line) and real world
(longitude,latitude) locations using the appropriate projection
algorithm.

@param  image_map_projection    A pointer to the Parameter
    Aggregate that contains the IMAGE_MAP_PROJECTION parameters.
@param  image_region    The Rectangle of image data that will be
    rendered relative to the scaled image pixel grid. The size of the
    rectangle is the size of the output image to be described. The
    origin of the rectangle is the position of the upper-left corner
    of the output image on the scaled image grid.
@param  ratio   The ratio of full resolution image grid to the the
    scaled image grid. The ratio will always be a power of 2
    corresponding to the selected image rendering resolution level. A
    ratio of 1 means the image was not scaled, 2 means the size of
    the scaled resolution grid is half the size of the full
    resolution image grid, 4 when the grid is quarter scale, etc.

References Size_2D::Height, PDS_Converter::image_data(), Image_Data_Block::image_height(), Image_Data_Block::image_width(), Size_2D::Width, Point_2D::X, and Point_2D::Y.

Member Data Documentation

◆ ID

const char *const ID
static
Initial value:
=
"UA::HiRISE::HiPrecision_PDS_Converter (1.2 2013/03/14 21:00:43)"

Class identification name with source code version and date.

◆ PRODUCT_TYPE_PARAMETER_NAME

const char * PRODUCT_TYPE_PARAMETER_NAME = "INSTRUMENT_ID"
static

Name of the parameter whose value is the product name being converted.

See also
product_names() const

Referenced by HiPrecision_PDS_Converter::label_recognized(), and HiPrecision_PDS_Converter::product_names().

◆ HIPRECISION_PRODUCT_TYPE

const char * HIPRECISION_PRODUCT_TYPE = "HIRISE_IDEAL_CAMERA"
static

Default product name if the PRODUCT_TYPE_PARAMETER_NAME is not found.

See also
product_names() const

Referenced by HiPrecision_PDS_Converter::label_recognized(), and HiPrecision_PDS_Converter::product_names().

◆ EXCLUDED_DATA_BLOCK_NAMES

const char * EXCLUDED_DATA_BLOCK_NAMES
static
Initial value:
=
{
"INSTRUMENT_POINTING_TABLE",
"INSTRUMENT_POSITION_TABLE",
"BODY_ROTATION_TABLE",
"SUN_POSITION_TABLE",
0
}

Names of data blocks to be ignored (redundant with other data blocks).

◆ IMAGE_DATA_BLOCK_NAMES

const char * IMAGE_DATA_BLOCK_NAMES
static
Initial value:
=
{
"IMAGE",
0
}

Names of additional Image_Data_Block parameter aggregates.

◆ DEFAULT_PDS_LABEL_SIZE

const int DEFAULT_PDS_LABEL_SIZE = 32768
static

Default size (bytes) of an attached PDS label.

Referenced by HiPrecision_PDS_Converter::HiPrecision_PDS_Converter().

◆ UPDATE_VERSION_PARAMETER_NAMES

const char * UPDATE_VERSION_PARAMETER_NAMES
static
Initial value:
=
{
"DATA_SET_ID",
"DATA_SET_NAME",
NULL
}

Referenced by HiPrecision_PDS_Converter::data_set_version().

◆ DATA_SET_VERSION_MINOR_VALUE

const int DATA_SET_VERSION_MINOR_VALUE = 1
static

DATA_SET_xxx version minor value.

Referenced by HiPrecision_PDS_Converter::data_set_version().

◆ IMAGE_HEIGHT_PARAMETER_NAME

const char* IMAGE_HEIGHT_PARAMETER_NAME
static

Image height.

◆ IMAGE_WDITH_PARAMETER_NAME

const char* IMAGE_WDITH_PARAMETER_NAME
static

Image width.


The documentation for this class was generated from the following files: