#
Coordinate System Networks (FrameSets)

We saw in §12 how astConvertastConvert could be used to find a MappingMapping that inter-relates a pair of coordinate systems represented by Frames. There is a limitation to this, however, in that it can only be applied to coordinate systems that are inter-related by suitable conventions. In the case of celestial coordinates, the relevant conventions are standards set out by the International Astronomical Union, and others, that define what these coordinate systems mean. In practice, however, the relationships between many other coordinate systems are also of practical importance.

Consider, for example, the focal plane of a telescope upon which an image of the sky is falling. We could measure positions in this focal plane in millimetres or, if there were a detector system such as a CCD present, we could count pixels. We could also use celestial coordinates of many different kinds. All of these systems are equivalent in their effectiveness at specifying positions in the focal plane, but some are more convenient than others for particular purposes.

Although we could, in principle, convert between all of these focal plane coordinate systems, there is no pre-defined convention for doing so. This is because the conversions required depend on where the telescope is pointing and how the CCD is mounted in the focal plane. Clearly, knowledge about this cannot be built into the AST library and must be supplied in some other way. Note that this is exactly the same problem as we met in §7.12 when discussing the DomainDomain attribute—i.e. coordinate systems that apply to different physical domains require that extra information be supplied before we can convert between them.

What we need, therefore, is a general way to describe how coordinate systems are inter-related, so that when there is no convention already in place, we can define our own. We can then look forward to converting, say, from pixels into galactic coordinates and vice versa. In AST, the FrameSetFrameSet class provides this capability.

Subsections

- The FrameSet Model
- Creating a FrameSet
- Adding New Frames to a FrameSet
- The Base and Current Frames
- Referring to the Base and Current Frames
- Using a FrameSet as a Mapping
- Extracting a Mapping from a FrameSet
- Using a FrameSet as a Frame
- Extracting a Frame from a FrameSet
- Removing a Frame from a FrameSet