Next: Contents

# Supporting Metadata and Coordinate Systems for Scientific Data in the Horizon Java Package

Raymond L. Plante
National Center for Supercomputing Applications
University of Illinois
405 North Mathews Ave.
Urbana, IL 61801, USA
`horizon@ncsa.uiuc.edu`

### Abstract:

When exploring scientific data with a data visualization tool, scientists are usually more interested where the data resides in physical or conceptual space than its position within some data array. Such a space, the data's domain, is often referred to as the data's World Coordinate System. This document describes how the Horizon Image Browser Java Package supports the mapping between a datum's position in a dataset and its position within its World Coordinate System. Because the parameters describing a coordinate system can be considered as metadata of the system, this document presents the support for world coordinates as a case study in the use of metadata within Horizon, beginning with a general description of Horizon's metadata model. This model allows data objects to conveniently carry with them a description of its data, allowing other objects to properly interpret the data. In the case of world coordinate systems, a world coordinate system object can therefore know how to determine a datum's coordinate position and even display that position in its conventional, application-specific format.

- Contents
- Motivation and Context
- The Horizon Metadata Model
  - What are Metadata?
  - The Horizon `Metadata` Class
    - Reserved Metadatum Names: schema and schemaVersion
    - Possible Pitfalls and Safety Nets
      - Use only `String` objects as keys.
      - Use Consistant Value Types When Reading and Writing Metadata.
      - Handle Updateable Metadata Values With Care.
  - Protecting Metadata Via Defaults
  - Handling Arrays: The Horizon `Metavector` Class
  - On-Demand Data Loading: The Horizon `Metarunner` Class
- The World Coordinate System Classes
  - Coordinate System Metadata
    - Using Metadata to Construct CoordinateSystems
    - The Horizon Schema for Coordinate Systems
  - Example Coordinate Systems
    - `CoordinateSystem`: the Simplest System
    - `LinearCoordinateSystem`: a System With Linear Axes
    - `LinSphCoordinateSystem`: Combining Spherical and Linear Coordinates
  - Converting Between Multiple Coordinate Systems
    - Basic Use
    - Use Outside of a `CoordinateSystem`
    - Implementing New `CoordTransform` Classes
      - `getInAxes(), getOutAxes()`
      - `determineConstraints(Metadata in, boolean forwards)`
      - `init(CoordinateSystem csys, boolean forward, int[] axisIndexList)`
      - `getMetadata(Metadata in, boolean forward, int[] axisIndices)`
  - Implementing a New Coordinate System
- Putting It All Together: the `CoordDemoApplet`
  - The Viewer: Getting and Displaying Positions
    - The `ImageDisplayMap` Class
    - Configuring the `ImageDisplayMap` Object
    - Updating the coordinate display
  - The Viewable: Loading the Proper Metadata
- Metadata Lexicons
  - Universal Metadata
  - The Horizon Schema
    - Viewable Metadata
    - Coordinate System Metadata
    - Coordinate Axis Metadata
- About this document ...