Coordinate System


Introduction

The GIPSY coordinate system is implemented in terms of a collection of mostly FITS-compatible GDS descriptor items. For each axis in a set there exists such a collection of descriptors.

The following keywords are used (i is the number of the axis):

NAXISi
the number of pixels along the axis
CTYPEi
the name of the axis. The axis name is uniquely related to the physical coordinates of the pixels along the axis. This name consists of several parts, separated by hyphens. The first part denotes the real axis name: the physical coordinate system. The second part is the type of projection (meaning that there are more ways to go from grid position to physical coordinates). At the moment only projections for spatial axes (like RA and DEC) and spectral axes (FREQ) are defined.
CRPIXi
the location of the reference pixel on the axis in file coordinates. The grid position of the reference pixel is always zero. For this position the physical coordinate is precisely defined in CRVALi, and therefore we call this position the projection centre.
CRVALi
holds the physical coordinate at the reference pixel location in some units. The units are defined in the non-standard FITS descriptor CUNITi.
CUNITi
holds the units of the physical coordinate at the reference pixel location, i.e. the units of CRVALi. When this descriptor item is not defined, the standard FITS units will be assumed.
CDELTi
holds the pixel separation in units specified in CUNITi along the axis. Note that CDELTi may be negative.
CROTAi
holds the rotation angle in degrees of the actual axis from the stated coordinate type in CTYPEi. This descriptor makes only sense for spatial axes. In GIPSY it is assumed that the spatial latitude axis carries the rotation information.
The descriptors above are called the primary axis descriptors, and they relate grid positions to physical coordinates as defined in CTYPEi. The GIPSY coordinate system also recognizes secondary axis descriptors, which relate grid positions to a different type of physical units. At the moment a secondary axis is only used for the FREQ primary axis to relate frequencies to velocities. Secondary descriptors are similar to primary axis descriptor, except that they all start with D instead of C.

Accessing coordinate information

In order to read coordinate information from a set, the programmer has the choice between reading the descriptor items directly using one of the GDS read routines, or, in the case of items NAXISi, CTYPEi and CRPIXi, calling one of the special routines GDSC_SIZE, GDSC_NAME or GDSC_ORIGIN.

When writing, the items NAXISi, CTYPEi and CRPIXi may never be modified using GDS write routines. This may only be done using the routine GDS_EXTEND. This is because this information is referenced so frequently that it has to be maintained separately for efficiency reasons.

Coordinate Types

GIPSY supports the following coordinate types:

Sky Coordinates

There following five sky systems are implemented:
  1. Equatorial (1950.0)
  2. Galactic
  3. Ecliptic (1950.0)
  4. Supergalactic
  5. Equatorial (2000.0)
Function SKYCO can be used to transform from one sky system to another.

For sky systems the rotation angle of the sky plane with respect to the axes is stored in CROTAn, where n is the number of the latitude axis. The epoch of the coordinate system in stored in the FITS descriptor EPOCH.

There following projection systems are implemented:

  1. Aitoff Equal Area projection, AIT
  2. Equivalent Cylindrical projection, CYL
  3. Flat projection, FLT
  4. Gnomonic projection, TAN
  5. Orthographic projection, SIN
  6. Rectangular projection, ARC
  7. Transversal projection, GLS
  8. North Celestial Pole projection, NCP
  9. Stereographic projection, STG
  10. Mercator projection, MER
The projection of sky coordinates onto grids is done with function PROCO; transformation of equatorial coordinates from one epoch to another are done with subroutine EPOCO.

Spectral Coordinates

Spectral coordinates have axis names FREQ or VELO. The transformation from frequency to velocity is not straightforward, since the frequencies are usually the observed frequencies. For this reason a secondary axis is introduced in GIPSY. This axis holds the velocity at the reference pixel in descriptor DRVALi. The velocity of a certain grid position g along the FREQ axis can now be obtained with the following formulae:

V(radio) = DRVALi - g.CDELTi.c / f0
V(optical) = DRVALi + (1 / (CRVALi + g.CDELTi) - 1 / CRVALi).f0.c

Where c is the speed of light and f0 the rest frequency of the spectral line. GIPSY uses for the grid separation in velocity the following:

DDELTi(radio) = -CDELTi.c / f0
DDELTi(optical) ~= -CDELTi. c/f0 . (f0)^2/(CRVALi)^2

The rest frequency is stored in descriptor FREQ0 in units of Hz.

The different velocity systems are encoded in the following way:

VELSYS  CTYPEi     Meaning
------  ---------  -----------------------------
  1     FREQ-OHEL  Optical definition w.r.t. SUN
  1     FREQ-OLSR  Optical definition w.r.t. LSR
  2     FREQ-RHEL  Radio definition, w.r.t. SUN
  2     FREQ-RLSR  Radio definition, w.r.t. LSR
The function VELPRO does the velocity - grid transformations.

Other Coordinates

Other coordinate axes, with their CTYPE's, are listed in the table below: For these axes there are no special routines available yet, so conversion from grid g to physical coordinate p goes in the standard FITS way:

p = CRVALi + g . CDELTi
g = p - CRVALi / CDELTi

General Coordinate Transformations

The routine which does the general coordinate transformations is called COTRANS. This routine converts grids into the physical coordinates as stated by the CTYPE's and vice versa. The function AXUNIT returns the units of the physical values input/output to/by COTRANS.

For determining the axis type, the function AXTYPE can be used. Note that natural units are usually S.I. units. In GIPSY the routines involved in coordinate transformations use these units! In case other units are stated in CUNITi or BUNITi the conversion factor can be obtained with function FACTOR.

Hidden Axes

Documentation not yet available.
Programming GIPSY