|
The information contained in the PDS and VICAR embedded labels are identical, by definition. Either label may be used interchangeably, for any purpose in the mission. Any software that modifies one label must also modify the other. This is often most easily accomplished by stripping off one of the headers, processing the remaining label as desired locally, and then running a conversion tool to recreate the missing header. Such tools are provided by MIPL.
It is important to note that these files are simultaneously valid PDS images, and valid VICAR images, and may be processed equally by tools of either system. It is critical for the integrity of the data that both labels be maintained, as described above.
The mapping between PDS keywords is straightforward. The mapping rules are as follows:
| • | Keyword values are identical in both cases. The only changes to values are those mandated by the file format itself, such as quoting rules. See the respective PDS and VICAR documents for details, but in general, PDS uses double quotes (") while VICAR uses single quotes ('). Neither require quotes around values with no embedded spaces. |
| • | With the exception of keywords defining the file format itself (described below), keyword names are identical in both cases. Any PDS group maps 1-to-1 to a VICAR property set with the same name (group name = property set name). All contained keywords are identical in both cases. The GROUP and END-GROUP keywords are omitted from the VICAR label; PROPERTY keywords are used instead (as per the VICAR file format definition). |
| • | Any set of PDS keywords not in a group (in PDS terms, a class) is identified by an introductory comment (e.g. /* IDENTIFICATION DATA ELEMENTS */ ). Such classes map 1-to-1 to a VICAR property set. The name of the VICAR property set and the name of the PDS introductory comment map as follows: |

| • | PDS comments (i.e., /* string */) are stored in a VICAR keyword named "PDS_COMMENT". This keyword appears in the VICAR property containing the elements immediately following the comment. When converting from VICAR to PDS, the comment is placed immediately before the group or class. Blank lines should surround the comment. Note that multiple comment lines in a section are not supported. |
| • | The PDS objects IMAGE_HEADER and IMAGE, as well as the keywords in /* FILE DATA ELEMENTS */ and /* POINTERS TO DATA OBJECTS */ in the table above, do not map directly to VICAR. They all describe the layout of the file and the image data. The VICAR equivalent for all of these items is the VICAR System label. Information maps between these in a straightforward way. It should be trivial to construct a VICAR system label and the above-referenced PDS entities after referring to the respective file-format-definition documents. Note that the /* FILE DATA ELEMENTS */ and /* POINTERS TO DATA OBJECTS */ comments are constant and so are not mapped to PDS_COMMENT keywords in the VICAR label. They are inserted automatically as part of the system label conversion process. |
| • | The statistics-related keywords in the PDS IMAGE object are MEAN, MEDIAN, MAXIMUM, MINIMUM, STANDARD_DEVIATION, and CHECKSUM. These keywords are never transferred to the VICAR label. For VICAR -> PDS conversion, they can be computed from the image, or simply omitted from the PDS image (for RDRs only - EDRs require them). |
| • | A few remaining items in the PDS_IMAGE object are treated specially. The FIRST_LINE, FIRST_LINE_SAMPLE, INVALID_CONSTANT, and MISSING_CONSTANT keywords are transferred to the VICAR IMAGE_DATA property set. |
| • | Any PDS keyword with a <unit> tag after the value is transferred to the VICAR label without the unit tag. A VICAR keyword with the same name, but with "__UNIT" (two underscores) appended to the end, is added with the value of the unit. So for example, the PDS keyword "EXPOSURE_TIME = 1.5 <s>" would translate to two VICAR keywords: "EXPOSURE_TIME = 1.5" and "EXPOSURE_TIME__UNIT = SEC". Note that because of this, any PDS keyword that can support a unit is limited to 26 characters. If there is more than one value (an array), a unit is associated with each. In this case, the "__UNIT" VICAR keyword becomes multi-valued also, with each unit copied in sequence. If one of the elements does not have a unit (but others do), the corresponding entry is "N/A" (which is not copied to the PDS label). So for example, PDS "CONTRIVED_ANGLE = (1.2 <rad>, 22.0, 54.1 <deg>)" would map to VICAR "CONTRIVED_ANGLE = (1.2, 22.0, 54.1)" and "CONTRIVED_ANGLE__UNIT = (RAD, N/A, DEG)". |
| • | The VICAR history label is omitted from the PDS header. |
|