A general character of scientific data is that they represent measurements or estimates of some physical quantity (e.g. temperature, brightness, voltage, magnetic field, etc.). The measurements are made under certain quantifiable conditions, some of which may be made to vary. For example, one might measure temperature over a range of pressures or brightness from different positions within an area of the sky. Thus, the data have a context, or in mathematical terms, a domain which provides them with relevance. This context can be described as a multidimensional space in which each axis is a quantifiable parameter describing the condition under which each measurement was made. If the space is well-defined (i.e. its axes are orthogonal), then each datum can be mapped to a single position within that space. This domain space is often referred to as the data's world coordinate system.
The Horizon Image Data Browser Java package supports a special type of
scientific data it refers to as an image. In a scientific
context, an image is a set of data that regularly samples a volume of
N-dimensional space.
Data points that make up
an image are often referred to as pixels; this term, however,
connatates two dimensions, so to reflect the N-dimensional nature
of the data, the more general term of voxel will be used
instead. Within a computer application, the data are usually
represented as an N-dimensional array in which each position in the
array maps to a position in the dataset's world coordinate space.
When visualizing this data, the scientist is usually more interested
in a datum's position within the coordinate system than its absolute
position within some data array. So, by way of example, a useful
visualizing tool displaying a satalite image of a patch of the earth
might display the longitude and latitude of any voxel in the image
whenever it is selected with a mouse.
Implicit to displaying coordinate positions is a conversion from the positions in the data array to positions in the coordinate system. The function mapping the two spaces might be described by a variety of parameters. The parameters can be considered as metadata of the coordinate system. Horizon's support of world coordinate systems relies heavily on its support for the notion of metadata; thus, this document takes some time to describe Horizon's metadata model (§2) and shows how it is well suited for handling coordinate systems.
Horizon's object model for coordinate systems tries to be flexible enough to handle a wide variety of scientific applications. Features of the model include:
As our definition of an image suggests, the Horizon world coordinate system model does not explicitly support irregularly sampled data. In most cases, one should be able to ``squeeze'' such data into Horizon's image model and make use of Horizon tools to visualize the data; however, given that such data lies at least in part outside of Horizon's image model, the user may eventually encounter a limit to the usefulness of using Horizon to visualize this type of data.
When it comes to ``ease of use'', the Horizon design tries to favor the application programmer. That is, when working with a fully supported data format, one can in a few lines instantiate full-featured objects with access to all the data necessary for visualization and analysis; the programmer does not need to concern him- or herself so much with how the data is read or where it is coming from. The programmer wishing write a reader to support a new data format needs to understand a little more about the Horizon model; however, a number of tools are provided to make this easier. This document covers both levels of detail.