WCS Transform Model

Table of Contents

1.     model: trans
2.     Packages and Types
2.1     [root package]
2.1.1     objectType:EulerAngle
2.1.2     objectType:EulerRotation
2.1.3     enumeration:InterpolationMethod
2.1.4     objectType:Lookup
2.1.5     objectType:LookupEntry
2.1.6     objectType:Matrix
2.1.7     objectType:MatrixElement
2.1.8     objectType:NumericEntry
2.1.9     objectType:NumericEntry2D
2.1.10     objectType:Permute
2.1.11     objectType:PermuteAxis
2.1.12     objectType:PolyCoeff1D
2.1.13     objectType:PolyCoeff2D
2.1.14     objectType:Polynomial
2.1.15     objectType:Polynomial1D
2.1.16     objectType:Polynomial2D
2.1.17     objectType:Projection
2.1.18     objectType:ProjectionParam
2.1.19     objectType:Rotate2D
2.1.20     objectType:Scale
2.1.21     objectType:Shift
2.1.22     objectType:SkyProjRotate
2.1.23     objectType:SkyProjection
2.1.24     enumeration:SkyProjectionType
2.1.25     enumeration:SpectralCoordType
2.1.26     objectType:SpectralProjection
2.1.27     enumeration:SpectralProjectionType
2.1.28     objectType:StringEntry
2.1.29     objectType:TAtomic
2.1.30     objectType:TCompose
2.1.31     objectType:TCompound
2.1.32     objectType:TConcatenate
2.1.33     objectType:TForward
2.1.34     objectType:TFunction
2.1.35     objectType:TInverse
2.1.36     objectType:TMapping
2.1.37     objectType:TOperation
2.1.38     objectType:Unit
3.     vodml-id-s
4.     Imported Models
4.1     ivoa

1. Model: WCS Transform Model (trans)

Authors : Arnold Rots, Mark Cresitello-Dittmar, David Berry, Steven Crawford, Nadia Dencheva, Perry Greenfield, Tim Jenness, Omar Laurino, Stuart Mumford, Erik Tollerud
Date : 2019-09-16T08:14:30
Version : 1.0
Previous version: : 0.0
Abstract : The transform model defines a set of operations which can be used to construct expressions mapping coordinates and other objects defined in one coordinate space to a different coordinate space. For many applications, this mapping should work in either direction. One option would be to define entirely separate mapping sequences to describe these two transformations. However, this approach is bulky and requires more maintanence as any change to one object would require equivalent changes be made to the other. Since many operations have a natural inverse, a safer, more compact and flexible approach is to use a single object to describe both transformations. With this approach, a change to the one transform automatically applies to both directions. This model defines operations with sufficient information to define both forward and inverse transformations wherever possible. For cases where a natural inverse cannot be defined, we provide a means of explicitly assigning separate operation specifications for the forward and inverse directions. In this model, we describe two flavors of operations: * Arithmatic operations performing a particular action * Workflow operations to build and link complex operations - combine operations in parallel or series - combine operations for explicit forward and inverse flow - manage axis sets between steps
Diagram : The following diagram has been generated from the model using the GraphViz tool.
The classes and packages in the diagram can be clicked and are mapped to the descriptions of the corresponding element elsewhere in the document.

2.Model contents: Packages and Types

The following sub-sections present all packages in the model with their types. The packages are listed here in alphabetical order. Each sub-section contains a description of the package and a table containing its various features.

2.1 [root package]

Model trans
Object types EulerAngle EulerRotation Lookup LookupEntry Matrix MatrixElement NumericEntry NumericEntry2D Permute PermuteAxis PolyCoeff1D PolyCoeff2D Polynomial Polynomial1D Polynomial2D Projection ProjectionParam Rotate2D Scale Shift SkyProjRotate SkyProjection SpectralProjection StringEntry TAtomic TCompose TCompound TConcatenate TForward TFunction TInverse TMapping TOperation Unit
Enumerations InterpolationMethod SkyProjectionType SpectralCoordType SpectralProjectionType

2.1.1 objectType: EulerAngle

vodml-id EulerAngle
description Angular rotation about a particular axis of a 3-dimensional cartesian coordinate space.
attributes
name feature value
rotationAxis type ivoa:string
vodml-id EulerAngle.rotationAxis
multiplicity 1
description Identifies the axis of rotation. MUST be 'x', 'y', or 'z'.
angle type ivoa:real
vodml-id EulerAngle.angle
multiplicity 1
description Angle of rotation, in degrees. Angle sign follows the right-hand rule, where positive values indicate clockwise rotation (looking in +axis direction), negative values for counter-clockwise.

2.1.2 objectType: EulerRotation

vodml-id EulerRotation
description Defines a rotation operation in a 3-dimensional cartesian coordinate space, defined as a series of rotations about the native axes (x,y,z).
extends TFunction [trans:TFunction]
compositions
name feature value
eulerAngle type EulerAngle [trans:EulerAngle]
vodml-id EulerRotation.eulerAngle
multiplicity 1..*
isOrdered false
description Rotation angle about specified axis.

2.1.3 enumeration: InterpolationMethod

vodml-id InterpolationMethod
description Enumeration of interpolation methods to control the interpretation of data between known points in operations such as Lookup.
literals
name feature value
None vodml-id InterpolationMethod.None
description No interpolation method specified, interpretation between points is undefined.
Nearest vodml-id InterpolationMethod.Nearest
description Nearest neighbor is selected
Linear vodml-id InterpolationMethod.Linear
description Assume a linear progression between points.
Spline vodml-id InterpolationMethod.Spline
description Perform a spline interpolation through the points. 2-dimensional only.

2.1.4 objectType: Lookup

vodml-id Lookup
description Defines a lookup table operation. The Lookup is comprised of a series of value pairs (LookupEntry). All members of the series MUST be of the same type. Handling Enumerated data: A common usage of a Lookup operation is to map image pixel index to an enumeration, such as a Polarization state. This can be handled by two means: 1) Define a numeric equivalent for each enumeration literal, and use NumericEntry types. Casting to the corresponding literal occurs outside of the operation. 2) Your local model can define a LookupEntry extension which maps the native value directly the target EnumerationLiteral. The details of either approach for particular enumerations is considered outside the scope of this document.
extends TFunction [trans:TFunction]
attributes
name feature value
interpolation type InterpolationMethod [trans:InterpolationMethod]
vodml-id Lookup.interpolation
multiplicity 0..1
description Specifies the form of interpolation, if any, prescribed to be performed.
bounds_error type ivoa:boolean
vodml-id Lookup.bounds_error
multiplicity 0..1
description Flag to specify behaviour outside the lookup table data bounds. True indicates an error condition, False indicates that the associated "fill" entry should be returned. If no "fill" entry is provided, the value should be extrapolated.
compositions
name feature value
entry type LookupEntry [trans:LookupEntry]
vodml-id Lookup.entry
multiplicity 1..*
isOrdered true
description Set of lookup table entries forming a discrete mapping from the native space to the target space.

2.1.5 objectType: LookupEntry

vodml-id LookupEntry
description This is an abstract head of lookup table entry objects. Each entry provides a discrete translation of a 'native' value to the corresponding 'target' value.
abstract True
Subclasses in this model NumericEntry NumericEntry2D StringEntry
attributes
name feature value
fill type ivoa:boolean
vodml-id LookupEntry.fill
multiplicity 0..1
description When TRUE, the entry provides values to be used outside the Lookup table data domain. MUST only appear first or last in the sequence. If missing, it is considered to be FALSE.

2.1.6 objectType: Matrix

vodml-id Matrix
description An M x N matrix operation. Each cell of the matrix is provided by a MatrixElement object. Missing elements should be considered to equal 0.
extends TFunction [trans:TFunction]
attributes
name feature value
M type ivoa:nonnegativeInteger
vodml-id Matrix.M
multiplicity 1
description Number of rows in the matrix.
N type ivoa:nonnegativeInteger
vodml-id Matrix.N
multiplicity 1
description Number of columns in the matrix.
compositions
name feature value
element type MatrixElement [trans:MatrixElement]
vodml-id Matrix.element
multiplicity 0..*
isOrdered false
description Collection of MatrixElements which define each cell of the matrix. The total number of elements MUST NOT exceed M*N, any missing elements result in a cell with value=0.0.
constraints
element maxlength = M*N

2.1.7 objectType: MatrixElement

vodml-id MatrixElement
description The value of cell m,n in an M x N matrix.
attributes
name feature value
m type ivoa:nonnegativeInteger
vodml-id MatrixElement.m
multiplicity 1
description Matrix cell row number.
n type ivoa:nonnegativeInteger
vodml-id MatrixElement.n
multiplicity 1
description Matrix cell column number.
value type ivoa:real
vodml-id MatrixElement.value
multiplicity 1
description Matrix cell value.

2.1.8 objectType: NumericEntry

vodml-id NumericEntry
description A 1-Dimensional discrete mapping of numeric values.
extends LookupEntry [trans:LookupEntry]
attributes
name feature value
nativeValue type ivoa:real
vodml-id NumericEntry.nativeValue
multiplicity 1
description The native, or reference, value of the lookup entry.
targetValue type ivoa:real
vodml-id NumericEntry.targetValue
multiplicity 1
description The target, or resulting, value of the lookup entry.

2.1.9 objectType: NumericEntry2D

vodml-id NumericEntry2D
description A 2-Dimensional discrete mapping of numeric values.
extends LookupEntry [trans:LookupEntry]
attributes
name feature value
nativeValue type ivoa:real
vodml-id NumericEntry2D.nativeValue
multiplicity 2
description The native, or reference, value of the lookup entry.
targetValue type ivoa:real
vodml-id NumericEntry2D.targetValue
multiplicity 2
description The target, or resulting, value of the lookup entry.

2.1.10 objectType: Permute

vodml-id Permute
description Permute the order and possibly number of dimensions between operations. This operation facilitates the workflow through the operation sequence. It is comprised of an ordered axismap list defining the output axis sequence in terms of the source (input) axes. It supports the reorder, duplication, and dropping of dimensions. Reorder Example: We have a 3-dimensional coordinate (x,y,z) and wish to perform a 2-dimensional transform on the (x,z) plane. Define a Permute operation to reorder the axes from (x,y,z) to (y,x,z) using an axismap list specifying the new axis order, [2,1,3]. The results feed into the next step ( 1D + 2D operations ). Duplicate Example: We have 2-dimensional coordinate (x,y) feeding two Polynomial2D operations to form (x',y'). Define a Permute operation with axismap list specifying sourceAxis set [1,2,1,2]. The result feeds into the next step ( Polynomial2D + Polynomial2D operations). Drop Example: We have a 5-dimensional input feeding into a 3x3 Matrix operation. Define a Permute operation selecting the relevant axis set [1,3,5], the remaining axes, [2,4], are dropped. Add Example: We have a 2-dimensional operation feeding into axes [1,3] of a 3-dimensional operation. Define a Permute operation with numSourceAxes=2; and sourceAxis set [1,0,2] where output axis 2 also specifies the fixed seed value.
extends TFunction [trans:TFunction]
attributes
name feature value
numSourceAxes type ivoa:nonnegativeInteger
vodml-id Permute.numSourceAxes
multiplicity 1
description The number of input axes. Used to verify dimensional coverage in forward and inverse directions. For example, numSourceAxes=4 with axismap=[1,3] indicates that axes [2,4] have been dropped.
compositions
name feature value
axismap type PermuteAxis [trans:PermuteAxis]
vodml-id Permute.axismap
multiplicity 0..*
isOrdered true
description Ordered list defining the number and order of the resulting axis set. Each entry provides the source (input) dimension for that output dimension.

2.1.11 objectType: PermuteAxis

vodml-id PermuteAxis
description Entry for the Permute operation, this object defines the mapping of input dimension to output dimension. The output dimension is determined from its order in the axismap list.
attributes
name feature value
sourceAxis type ivoa:nonnegativeInteger
vodml-id PermuteAxis.sourceAxis
multiplicity 1
description Source (input) dimension number, 1 based.
seedValue type ivoa:real
vodml-id PermuteAxis.seedValue
multiplicity 0..1
description Value to assign for the new dimensional axis.

2.1.12 objectType: PolyCoeff1D

vodml-id PolyCoeff1D
description A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p.
attributes
name feature value
coeff type ivoa:real
vodml-id PolyCoeff1D.coeff
multiplicity 1
description Multiplicitive coefficient of the term.
power type ivoa:nonnegativeInteger
vodml-id PolyCoeff1D.power
multiplicity 1
description The power to raise the value for this term.

2.1.13 objectType: PolyCoeff2D

vodml-id PolyCoeff2D
description A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p[0]*Y**p[1].
attributes
name feature value
coeff type ivoa:real
vodml-id PolyCoeff2D.coeff
multiplicity 1
description Multiplicitive coefficient of the term.
power type ivoa:nonnegativeInteger
vodml-id PolyCoeff2D.power
multiplicity 2
description The power to raise the values for this term in each dimension.

2.1.14 objectType: Polynomial

vodml-id Polynomial
description Abstract head of a family of Polynomial distortion operations.
extends TFunction [trans:TFunction]
abstract True
Subclasses in this model Polynomial1D Polynomial2D
attributes
name feature value
order type ivoa:nonnegativeInteger
vodml-id Polynomial.order
multiplicity 1
description The order, or degree, of the polynomial expression.

2.1.15 objectType: Polynomial1D

vodml-id Polynomial1D
description A 1-Dimensional Polynomial transform represented by the expression: X' = SUM( Ci*X**i), i=0..order. Each term is provided by a PolyCoeff1D object. Missing terms are considered to have a coefficient of 0.0.
extends Polynomial [trans:Polynomial]
compositions
name feature value
term type PolyCoeff1D [trans:PolyCoeff1D]
vodml-id Polynomial1D.term
multiplicity 1..*
isOrdered false
description A term in the polynomial expression.

2.1.16 objectType: Polynomial2D

vodml-id Polynomial2D
description A 2-Dimensional Polynomial transform represented by the expression: X' = SUMi,j( Cij*X**i*Y**j), i+j<=order. Each term is provided by a PolyCoeff2D object. Missing terms are considered to have a coefficient of 0.0.
extends Polynomial [trans:Polynomial]
compositions
name feature value
term type PolyCoeff2D [trans:PolyCoeff2D]
vodml-id Polynomial2D.term
multiplicity 1..*
isOrdered false
description A term in the polynomial expression.

2.1.17 objectType: Projection

vodml-id Projection
description Abstract head of World Coordinate System (WCS) projection operations. We do not attempt to define the operations here, but instead, provide extensions which support the transforms described in the FITS WCS papers II and III.
extends TFunction [trans:TFunction]
abstract True
Subclasses in this model SkyProjection SpectralProjection
compositions
name feature value
param type ProjectionParam [trans:ProjectionParam]
vodml-id Projection.param
multiplicity 0..*
isOrdered false
description Set of 0 or more parameters providing supplemental metadata required to execute a particular projection algorithm. The number and meaning of the parameters depends on the algorithm. They are typically in the from of keyword/value pairs, so we provide a simple ProjectionParam element to accommodate these. The detailed content specification is left to the WCS paper.

2.1.18 objectType: ProjectionParam

vodml-id ProjectionParam
description Simple parameter specification for WCS Projections. The parameter is modeled as a simple name/value pair. The details of expectations for the various projection algorithms is left to the WCS paper describing the algorithm.
attributes
name feature value
name type ivoa:string
vodml-id ProjectionParam.name
multiplicity 1
description The parameter name as described in the WCS papers for each operation type.
value type ivoa:real
vodml-id ProjectionParam.value
multiplicity 1
description The value for the parameter.

2.1.19 objectType: Rotate2D

vodml-id Rotate2D
description A 2-Dimensional rotation operation.
extends TFunction [trans:TFunction]
attributes
name feature value
angle type ivoa:real
vodml-id Rotate2D.angle
multiplicity 1
description Rotation angle, in degrees, from the positive direction of axis 1 toward the positive direction of axis 2.

2.1.20 objectType: Scale

vodml-id Scale
description A 1-Dimensional operator for simple scaling. ( X' = factor*X )
extends TFunction [trans:TFunction]
attributes
name feature value
factor type ivoa:real
vodml-id Scale.factor
multiplicity 1
description The scale factor.

2.1.21 objectType: Shift

vodml-id Shift
description A 1-Dimensional operation defining a simple offset. ( X' = X + offset )
extends TFunction [trans:TFunction]
attributes
name feature value
offset type ivoa:real
vodml-id Shift.offset
multiplicity 1
description The amount of offset to apply.

2.1.22 objectType: SkyProjRotate

vodml-id SkyProjRotate
description This class extends SkyProjection to include the Spherical Rotation component of the FITS WCS paper II. This operation describes the mapping between the "Native Spherical" and "Celestial" coordinate systems. The reference values are provided at the appropriate attribute, while all other parameters (e.g. LONPOLE, LATPOLE) are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
extends SkyProjection [trans:SkyProjection]
attributes
name feature value
referenceValue type ivoa:real
vodml-id SkyProjRotate.referenceValue
multiplicity 2
description The target reference values in each dimension. Equivalent to 'crval' in FITS WCS representations.

2.1.23 objectType: SkyProjection

vodml-id SkyProjection
description This class corresponds to the Spherical Projection component of the FITS WCS paper II. As in the paper, this operation describes the mapping between the intermediate "Projection Plane" and the "Native Spherical" coordinate systems. This model supports all defined projection types, where the appropriate code is specified in the algorithm attribute. All projection parameters are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
extends Projection [trans:Projection]
Subclasses in this model SkyProjRotate
attributes
name feature value
algorithm type SkyProjectionType [trans:SkyProjectionType]
vodml-id SkyProjection.algorithm
multiplicity 1
description The projection algorithm to apply. The value MUST be taken from the enumeration of standard sky projection algorithms. Extracted from 'ctype' in the FITS WCS representations.

2.1.24 enumeration: SkyProjectionType

vodml-id SkyProjectionType
description Enumeration of non-linear celestial projection algorithm codes as listed in Table 13 of the FITS WCS paper II.
literals
name feature value
AZP vodml-id SkyProjectionType.AZP
description Zenithal perspective
SZP vodml-id SkyProjectionType.SZP
description Slant zenithal perspective
TAN vodml-id SkyProjectionType.TAN
description Gnomonic (Tangent plane projection)
STG vodml-id SkyProjectionType.STG
description Stereographic
SIN vodml-id SkyProjectionType.SIN
description Slant orthographic (Sine projection)
ARC vodml-id SkyProjectionType.ARC
description Zenithal equidistant
ZPN vodml-id SkyProjectionType.ZPN
description Zenithal polynomial
ZEA vodml-id SkyProjectionType.ZEA
description Zenithal equal-area
AIR vodml-id SkyProjectionType.AIR
description Airy
CYP vodml-id SkyProjectionType.CYP
description Cylindrical perspective
CEA vodml-id SkyProjectionType.CEA
description Cylindrical equal-area
CAR vodml-id SkyProjectionType.CAR
description Plate carree
MER vodml-id SkyProjectionType.MER
description Mercator
SFL vodml-id SkyProjectionType.SFL
description Sanson-Flamsteed
PAR vodml-id SkyProjectionType.PAR
description Parabolic
MOL vodml-id SkyProjectionType.MOL
description Mollweide
AIT vodml-id SkyProjectionType.AIT
description Hammer-Aitoff
COP vodml-id SkyProjectionType.COP
description Conic perspective
COE vodml-id SkyProjectionType.COE
description Conic equal-area
COD vodml-id SkyProjectionType.COD
description Conic equidistant
COO vodml-id SkyProjectionType.COO
description Conic orthomorphic
BON vodml-id SkyProjectionType.BON
description Bonne equal-area
PCO vodml-id SkyProjectionType.PCO
description Polyconic
TSC vodml-id SkyProjectionType.TSC
description Tangential spherical cube
CSC vodml-id SkyProjectionType.CSC
description COBE Quadrilateralized spherical cube
QSC vodml-id SkyProjectionType.QSC
description Quadrilateralized spherical cube

2.1.25 enumeration: SpectralCoordType

vodml-id SpectralCoordType
description Enumeration of spectral coordinate types as listed in Table 1 of the FITS WCS paper III.
literals
name feature value
FREQ vodml-id SpectralCoordType.FREQ
description Frequency
ENER vodml-id SpectralCoordType.ENER
description Energy
WAVN vodml-id SpectralCoordType.WAVN
description Wavenumber
VRAD vodml-id SpectralCoordType.VRAD
description Radio velocity
WAVE vodml-id SpectralCoordType.WAVE
description Vacuum wavelength
VOPT vodml-id SpectralCoordType.VOPT
description Optical velocity
ZOPT vodml-id SpectralCoordType.ZOPT
description Redshift
AWAV vodml-id SpectralCoordType.AWAV
description Air wavelength
VELO vodml-id SpectralCoordType.VELO
description Apparent radial velocity
BETA vodml-id SpectralCoordType.BETA
description Beta factor (v/c)

2.1.26 objectType: SpectralProjection

vodml-id SpectralProjection
description This class represents a nonlinear one-dimensional spectral transform as detailed in the FITS WCS paper III.
extends Projection [trans:Projection]
attributes
name feature value
referenceValue type ivoa:real
vodml-id SpectralProjection.referenceValue
multiplicity 1
description The target reference value for the axis. Equivalent to 'crval' in FITS WCS representations.
algorithm type SpectralProjectionType [trans:SpectralProjectionType]
vodml-id SpectralProjection.algorithm
multiplicity 1
description The projection algorithm to apply. The value MUST be taken from the enumeration of non-linear spectral projection algorithms. Extracted from 'ctype' in FITS WCS representations.
coordType type SpectralCoordType [trans:SpectralCoordType]
vodml-id SpectralProjection.coordType
multiplicity 1
description The resulting spectral coordinate type code. Values MUST be taken from the enumerated list of spectral coordinate types. Extracted from 'ctype' in FITS WCS representations.

2.1.27 enumeration: SpectralProjectionType

vodml-id SpectralProjectionType
description Enumeration of non-linear spectral projection algorithm codes as listed in Table 2 of the FITS WCS paper III. NOTE: We exclude the TAB code from this list, that type is handled by the Lookup operation in this model.
literals
name feature value
F2W vodml-id SpectralProjectionType.F2W
description Frequency - Wavelength
F2V vodml-id SpectralProjectionType.F2V
description Frequency - Apparent radial velocity
F2A vodml-id SpectralProjectionType.F2A
description Frequency - Air wavelength
W2F vodml-id SpectralProjectionType.W2F
description Wavelength - Frequency
W2V vodml-id SpectralProjectionType.W2V
description Wavelength - Apparent radial velocity
W2A vodml-id SpectralProjectionType.W2A
description Wavelength - Air wavelength
V2F vodml-id SpectralProjectionType.V2F
description Apparent radial velocity - Frequency
V2W vodml-id SpectralProjectionType.V2W
description Apparent radial velocity - Wavelength
V2A vodml-id SpectralProjectionType.V2A
description Apparent radial velocity - Air wavelength
A2F vodml-id SpectralProjectionType.A2F
description Air wavelength - Frequency
A2W vodml-id SpectralProjectionType.A2W
description Air wavelength - Wavelength
A2V vodml-id SpectralProjectionType.A2V
description Air wavelength - Apparent radial velocity
LOG vodml-id SpectralProjectionType.LOG
description Logarithm
GRI vodml-id SpectralProjectionType.GRI
description Grism
GRA vodml-id SpectralProjectionType.GRA
description Grism in air

2.1.28 objectType: StringEntry

vodml-id StringEntry
description A 1-Dimensional discrete mapping of an integer counter to a corresponding string form. Since the result is non-numeric, a Lookup operation with StringEntry-s can only be used at the end of a Transform sequence.
extends LookupEntry [trans:LookupEntry]
attributes
name feature value
nativeValue type ivoa:integer
vodml-id StringEntry.nativeValue
multiplicity 1
description The native, or reference, value of the lookup entry.
targetValue type ivoa:string
vodml-id StringEntry.targetValue
multiplicity 1
description The target, or resulting, value of the lookup entry.

2.1.29 objectType: TAtomic

vodml-id TAtomic
description Single stage bi-directional mapping.
extends TMapping [trans:TMapping]
compositions
name feature value
forward type TForward [trans:TForward]
vodml-id TAtomic.forward
multiplicity 1
isOrdered false
description The forward transform operation specification.
inverse type TInverse [trans:TInverse]
vodml-id TAtomic.inverse
multiplicity 0..1
isOrdered false
description The inverse transform operation specification.

2.1.30 objectType: TCompose

vodml-id TCompose
description A complex operation which executes the component maps in sequence. This allows the building of multi-stage transforms such as a Matrix operation followed by a WCS Projection.
extends TCompound [trans:TCompound]

2.1.31 objectType: TCompound

vodml-id TCompound
description Abstract class to facilitate the combination of Mappings in various ways.
extends TMapping [trans:TMapping]
abstract True
Subclasses in this model TCompose TConcatenate
compositions
name feature value
map type TMapping [trans:TMapping]
vodml-id TCompound.map
multiplicity 1..*
isOrdered true
description Components of the complex operation. Depending on how the operations are combined, the interpretation of the components will change.

2.1.32 objectType: TConcatenate

vodml-id TConcatenate
description Combines operations in parallel. This class enables the building of an operation which covers the full dimension space of the input. Axes are distributed to the component operations in order. For example, to perform a shift on a 2-dimensional coordinate (x,y), one would join two Shift operations giving the offset in x and y respectively. Since this class is an operation itself, it can be used as a component in other complex operations.
extends TCompound [trans:TCompound]

2.1.33 objectType: TForward

vodml-id TForward
description Defines the forward transform operation of the mapping.
extends TOperation [trans:TOperation]

2.1.34 objectType: TFunction

vodml-id TFunction
description Transform Function (TFunction) defines a mathematical operation to be performed on its inputs.
abstract True
Subclasses in this model EulerRotation Lookup Matrix Permute Polynomial Projection Rotate2D Scale Shift Unit

2.1.35 objectType: TInverse

vodml-id TInverse
description Defines the inverse transform operation of the mapping.
extends TOperation [trans:TOperation]

2.1.36 objectType: TMapping

vodml-id TMapping
description Bi-directional mapping, contains the forward and inverse transform operation specifications. Many operations, such as a shift, rotation, and many matrix operations, have a natural inverse. For these cases, it is not necessary to define and propogate both the forward and inverse operations since the inverse can be easily derived from the forward. In other cases, an explicit inverse specification may be needed. This class serves as the building block, from which arbitrarily complex operations can be built.
abstract True
Subclasses in this model TAtomic TCompound
attributes
name feature value
invert type ivoa:boolean
vodml-id TMapping.invert
multiplicity 0..1
description Boolean flag indicating that the inverse operation should be applied. If missing, it is assumed to be "False". For many operations, the inverse transformation can be directly derived from the forward transform. For instance, the inverse of a transform that simply adds a constant to each input is a transform of the same type, with a negated constant. However, there are potentially operations for which this cannot be done. For instance, a transform that maps 3D Cartesian coodinates to spherical coordinates cannot be re-written to represent its inverse. This flag indicates that it should be used in its inverse sense. In addition, the invert flag allows a complex compound transformation to be be inverted simply by toggling its invert flag. Without such a flag each component would need to be re-written to represent its inverse (if possible), and the order of serial transformations would need to be reversed - a much more complex and error prone process.

2.1.37 objectType: TOperation

vodml-id TOperation
description Uni-directional transform operation, executes the contained function.
abstract True
Subclasses in this model TForward TInverse
compositions
name feature value
operation type TFunction [trans:TFunction]
vodml-id TOperation.operation
multiplicity 1
isOrdered false
description Transform operation specification.

2.1.38 objectType: Unit

vodml-id Unit
description A 1-Dimensional operation which makes no change to the inputs. ( X' = X )
extends TFunction [trans:TFunction]


3.Element Identifiers/VO-DMLrefs

The following table shows all fully qualified vodml-ids for this data model. It is ordered alphabetically and the identifiers are hyper-linked to the location in the document where the actual element is fully defined.
vodml-id feature type description
vo-dml:model The transform model defines a set of operations which can be used to construct expressions mapping coordinates and other objects defined in one coordinate space to a different coordinate space. For many applications, this mapping should work in either direction. One option would be to define entirely separate mapping sequences to describe these two transformations. However, this approach is bulky and requires more maintanence as any change to one object would require equivalent changes be made to the other. Since many operations have a natural inverse, a safer, more compact and flexible approach is to use a single object to describe both transformations. With this approach, a change to the one transform automatically applies to both directions. This model defines operations with sufficient information to define both forward and inverse transformations wherever possible. For cases where a natural inverse cannot be defined, we provide a means of explicitly assigning separate operation specifications for the forward and inverse directions. In this model, we describe two flavors of operations: * Arithmatic operations performing a particular action * Workflow operations to build and link complex operations - combine operations in parallel or series - combine operations for explicit forward and inverse flow - manage axis sets between steps
EulerAngle objectType Angular rotation about a particular axis of a 3-dimensional cartesian coordinate space.
EulerAngle.angle attribute Angle of rotation, in degrees. Angle sign follows the right-hand rule, where positive values indicate clockwise rotation (looking in +axis direction), negative values for counter-clockwise.
EulerAngle.rotationAxis attribute Identifies the axis of rotation. MUST be 'x', 'y', or 'z'.
EulerRotation objectType Defines a rotation operation in a 3-dimensional cartesian coordinate space, defined as a series of rotations about the native axes (x,y,z).
EulerRotation.eulerAngle composition Rotation angle about specified axis.
InterpolationMethod enumeration Enumeration of interpolation methods to control the interpretation of data between known points in operations such as Lookup.
InterpolationMethod.Linear literal Assume a linear progression between points.
InterpolationMethod.Nearest literal Nearest neighbor is selected
InterpolationMethod.None literal No interpolation method specified, interpretation between points is undefined.
InterpolationMethod.Spline literal Perform a spline interpolation through the points. 2-dimensional only.
Lookup objectType Defines a lookup table operation. The Lookup is comprised of a series of value pairs (LookupEntry). All members of the series MUST be of the same type. Handling Enumerated data: A common usage of a Lookup operation is to map image pixel index to an enumeration, such as a Polarization state. This can be handled by two means: 1) Define a numeric equivalent for each enumeration literal, and use NumericEntry types. Casting to the corresponding literal occurs outside of the operation. 2) Your local model can define a LookupEntry extension which maps the native value directly the target EnumerationLiteral. The details of either approach for particular enumerations is considered outside the scope of this document.
Lookup.bounds_error attribute Flag to specify behaviour outside the lookup table data bounds. True indicates an error condition, False indicates that the associated "fill" entry should be returned. If no "fill" entry is provided, the value should be extrapolated.
Lookup.entry composition Set of lookup table entries forming a discrete mapping from the native space to the target space.
Lookup.interpolation attribute Specifies the form of interpolation, if any, prescribed to be performed.
LookupEntry objectType This is an abstract head of lookup table entry objects. Each entry provides a discrete translation of a 'native' value to the corresponding 'target' value.
LookupEntry.fill attribute When TRUE, the entry provides values to be used outside the Lookup table data domain. MUST only appear first or last in the sequence. If missing, it is considered to be FALSE.
Matrix objectType An M x N matrix operation. Each cell of the matrix is provided by a MatrixElement object. Missing elements should be considered to equal 0.
Matrix.M attribute Number of rows in the matrix.
Matrix.N attribute Number of columns in the matrix.
Matrix.element composition Collection of MatrixElements which define each cell of the matrix. The total number of elements MUST NOT exceed M*N, any missing elements result in a cell with value=0.0.
MatrixElement objectType The value of cell m,n in an M x N matrix.
MatrixElement.m attribute Matrix cell row number.
MatrixElement.n attribute Matrix cell column number.
MatrixElement.value attribute Matrix cell value.
NumericEntry objectType A 1-Dimensional discrete mapping of numeric values.
NumericEntry.nativeValue attribute The native, or reference, value of the lookup entry.
NumericEntry.targetValue attribute The target, or resulting, value of the lookup entry.
NumericEntry2D objectType A 2-Dimensional discrete mapping of numeric values.
NumericEntry2D.nativeValue attribute The native, or reference, value of the lookup entry.
NumericEntry2D.targetValue attribute The target, or resulting, value of the lookup entry.
Permute objectType Permute the order and possibly number of dimensions between operations. This operation facilitates the workflow through the operation sequence. It is comprised of an ordered axismap list defining the output axis sequence in terms of the source (input) axes. It supports the reorder, duplication, and dropping of dimensions. Reorder Example: We have a 3-dimensional coordinate (x,y,z) and wish to perform a 2-dimensional transform on the (x,z) plane. Define a Permute operation to reorder the axes from (x,y,z) to (y,x,z) using an axismap list specifying the new axis order, [2,1,3]. The results feed into the next step ( 1D + 2D operations ). Duplicate Example: We have 2-dimensional coordinate (x,y) feeding two Polynomial2D operations to form (x',y'). Define a Permute operation with axismap list specifying sourceAxis set [1,2,1,2]. The result feeds into the next step ( Polynomial2D + Polynomial2D operations). Drop Example: We have a 5-dimensional input feeding into a 3x3 Matrix operation. Define a Permute operation selecting the relevant axis set [1,3,5], the remaining axes, [2,4], are dropped. Add Example: We have a 2-dimensional operation feeding into axes [1,3] of a 3-dimensional operation. Define a Permute operation with numSourceAxes=2; and sourceAxis set [1,0,2] where output axis 2 also specifies the fixed seed value.
Permute.axismap composition Ordered list defining the number and order of the resulting axis set. Each entry provides the source (input) dimension for that output dimension.
Permute.numSourceAxes attribute The number of input axes. Used to verify dimensional coverage in forward and inverse directions. For example, numSourceAxes=4 with axismap=[1,3] indicates that axes [2,4] have been dropped.
PermuteAxis objectType Entry for the Permute operation, this object defines the mapping of input dimension to output dimension. The output dimension is determined from its order in the axismap list.
PermuteAxis.seedValue attribute Value to assign for the new dimensional axis.
PermuteAxis.sourceAxis attribute Source (input) dimension number, 1 based.
PolyCoeff1D objectType A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p.
PolyCoeff1D.coeff attribute Multiplicitive coefficient of the term.
PolyCoeff1D.power attribute The power to raise the value for this term.
PolyCoeff2D objectType A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p[0]*Y**p[1].
PolyCoeff2D.coeff attribute Multiplicitive coefficient of the term.
PolyCoeff2D.power attribute The power to raise the values for this term in each dimension.
Polynomial objectType Abstract head of a family of Polynomial distortion operations.
Polynomial.order attribute The order, or degree, of the polynomial expression.
Polynomial1D objectType A 1-Dimensional Polynomial transform represented by the expression: X' = SUM( Ci*X**i), i=0..order. Each term is provided by a PolyCoeff1D object. Missing terms are considered to have a coefficient of 0.0.
Polynomial1D.term composition A term in the polynomial expression.
Polynomial2D objectType A 2-Dimensional Polynomial transform represented by the expression: X' = SUMi,j( Cij*X**i*Y**j), i+j<=order. Each term is provided by a PolyCoeff2D object. Missing terms are considered to have a coefficient of 0.0.
Polynomial2D.term composition A term in the polynomial expression.
Projection objectType Abstract head of World Coordinate System (WCS) projection operations. We do not attempt to define the operations here, but instead, provide extensions which support the transforms described in the FITS WCS papers II and III.
Projection.param composition Set of 0 or more parameters providing supplemental metadata required to execute a particular projection algorithm. The number and meaning of the parameters depends on the algorithm. They are typically in the from of keyword/value pairs, so we provide a simple ProjectionParam element to accommodate these. The detailed content specification is left to the WCS paper.
ProjectionParam objectType Simple parameter specification for WCS Projections. The parameter is modeled as a simple name/value pair. The details of expectations for the various projection algorithms is left to the WCS paper describing the algorithm.
ProjectionParam.name attribute The parameter name as described in the WCS papers for each operation type.
ProjectionParam.value attribute The value for the parameter.
Rotate2D objectType A 2-Dimensional rotation operation.
Rotate2D.angle attribute Rotation angle, in degrees, from the positive direction of axis 1 toward the positive direction of axis 2.
Scale objectType A 1-Dimensional operator for simple scaling. ( X' = factor*X )
Scale.factor attribute The scale factor.
Shift objectType A 1-Dimensional operation defining a simple offset. ( X' = X + offset )
Shift.offset attribute The amount of offset to apply.
SkyProjRotate objectType This class extends SkyProjection to include the Spherical Rotation component of the FITS WCS paper II. This operation describes the mapping between the "Native Spherical" and "Celestial" coordinate systems. The reference values are provided at the appropriate attribute, while all other parameters (e.g. LONPOLE, LATPOLE) are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
SkyProjRotate.referenceValue attribute The target reference values in each dimension. Equivalent to 'crval' in FITS WCS representations.
SkyProjection objectType This class corresponds to the Spherical Projection component of the FITS WCS paper II. As in the paper, this operation describes the mapping between the intermediate "Projection Plane" and the "Native Spherical" coordinate systems. This model supports all defined projection types, where the appropriate code is specified in the algorithm attribute. All projection parameters are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
SkyProjection.algorithm attribute The projection algorithm to apply. The value MUST be taken from the enumeration of standard sky projection algorithms. Extracted from 'ctype' in the FITS WCS representations.
SkyProjectionType enumeration Enumeration of non-linear celestial projection algorithm codes as listed in Table 13 of the FITS WCS paper II.
SkyProjectionType.AIR literal Airy
SkyProjectionType.AIT literal Hammer-Aitoff
SkyProjectionType.ARC literal Zenithal equidistant
SkyProjectionType.AZP literal Zenithal perspective
SkyProjectionType.BON literal Bonne equal-area
SkyProjectionType.CAR literal Plate carree
SkyProjectionType.CEA literal Cylindrical equal-area
SkyProjectionType.COD literal Conic equidistant
SkyProjectionType.COE literal Conic equal-area
SkyProjectionType.COO literal Conic orthomorphic
SkyProjectionType.COP literal Conic perspective
SkyProjectionType.CSC literal COBE Quadrilateralized spherical cube
SkyProjectionType.CYP literal Cylindrical perspective
SkyProjectionType.MER literal Mercator
SkyProjectionType.MOL literal Mollweide
SkyProjectionType.PAR literal Parabolic
SkyProjectionType.PCO literal Polyconic
SkyProjectionType.QSC literal Quadrilateralized spherical cube
SkyProjectionType.SFL literal Sanson-Flamsteed
SkyProjectionType.SIN literal Slant orthographic (Sine projection)
SkyProjectionType.STG literal Stereographic
SkyProjectionType.SZP literal Slant zenithal perspective
SkyProjectionType.TAN literal Gnomonic (Tangent plane projection)
SkyProjectionType.TSC literal Tangential spherical cube
SkyProjectionType.ZEA literal Zenithal equal-area
SkyProjectionType.ZPN literal Zenithal polynomial
SpectralCoordType enumeration Enumeration of spectral coordinate types as listed in Table 1 of the FITS WCS paper III.
SpectralCoordType.AWAV literal Air wavelength
SpectralCoordType.BETA literal Beta factor (v/c)
SpectralCoordType.ENER literal Energy
SpectralCoordType.FREQ literal Frequency
SpectralCoordType.VELO literal Apparent radial velocity
SpectralCoordType.VOPT literal Optical velocity
SpectralCoordType.VRAD literal Radio velocity
SpectralCoordType.WAVE literal Vacuum wavelength
SpectralCoordType.WAVN literal Wavenumber
SpectralCoordType.ZOPT literal Redshift
SpectralProjection objectType This class represents a nonlinear one-dimensional spectral transform as detailed in the FITS WCS paper III.
SpectralProjection.algorithm attribute The projection algorithm to apply. The value MUST be taken from the enumeration of non-linear spectral projection algorithms. Extracted from 'ctype' in FITS WCS representations.
SpectralProjection.coordType attribute The resulting spectral coordinate type code. Values MUST be taken from the enumerated list of spectral coordinate types. Extracted from 'ctype' in FITS WCS representations.
SpectralProjection.referenceValue attribute The target reference value for the axis. Equivalent to 'crval' in FITS WCS representations.
SpectralProjectionType enumeration Enumeration of non-linear spectral projection algorithm codes as listed in Table 2 of the FITS WCS paper III. NOTE: We exclude the TAB code from this list, that type is handled by the Lookup operation in this model.
SpectralProjectionType.A2F literal Air wavelength - Frequency
SpectralProjectionType.A2V literal Air wavelength - Apparent radial velocity
SpectralProjectionType.A2W literal Air wavelength - Wavelength
SpectralProjectionType.F2A literal Frequency - Air wavelength
SpectralProjectionType.F2V literal Frequency - Apparent radial velocity
SpectralProjectionType.F2W literal Frequency - Wavelength
SpectralProjectionType.GRA literal Grism in air
SpectralProjectionType.GRI literal Grism
SpectralProjectionType.LOG literal Logarithm
SpectralProjectionType.V2A literal Apparent radial velocity - Air wavelength
SpectralProjectionType.V2F literal Apparent radial velocity - Frequency
SpectralProjectionType.V2W literal Apparent radial velocity - Wavelength
SpectralProjectionType.W2A literal Wavelength - Air wavelength
SpectralProjectionType.W2F literal Wavelength - Frequency
SpectralProjectionType.W2V literal Wavelength - Apparent radial velocity
StringEntry objectType A 1-Dimensional discrete mapping of an integer counter to a corresponding string form. Since the result is non-numeric, a Lookup operation with StringEntry-s can only be used at the end of a Transform sequence.
StringEntry.nativeValue attribute The native, or reference, value of the lookup entry.
StringEntry.targetValue attribute The target, or resulting, value of the lookup entry.
TAtomic objectType Single stage bi-directional mapping.
TAtomic.forward composition The forward transform operation specification.
TAtomic.inverse composition The inverse transform operation specification.
TCompose objectType A complex operation which executes the component maps in sequence. This allows the building of multi-stage transforms such as a Matrix operation followed by a WCS Projection.
TCompound objectType Abstract class to facilitate the combination of Mappings in various ways.
TCompound.map composition Components of the complex operation. Depending on how the operations are combined, the interpretation of the components will change.
TConcatenate objectType Combines operations in parallel. This class enables the building of an operation which covers the full dimension space of the input. Axes are distributed to the component operations in order. For example, to perform a shift on a 2-dimensional coordinate (x,y), one would join two Shift operations giving the offset in x and y respectively. Since this class is an operation itself, it can be used as a component in other complex operations.
TForward objectType Defines the forward transform operation of the mapping.
TFunction objectType Transform Function (TFunction) defines a mathematical operation to be performed on its inputs.
TInverse objectType Defines the inverse transform operation of the mapping.
TMapping objectType Bi-directional mapping, contains the forward and inverse transform operation specifications. Many operations, such as a shift, rotation, and many matrix operations, have a natural inverse. For these cases, it is not necessary to define and propogate both the forward and inverse operations since the inverse can be easily derived from the forward. In other cases, an explicit inverse specification may be needed. This class serves as the building block, from which arbitrarily complex operations can be built.
TMapping.invert attribute Boolean flag indicating that the inverse operation should be applied. If missing, it is assumed to be "False". For many operations, the inverse transformation can be directly derived from the forward transform. For instance, the inverse of a transform that simply adds a constant to each input is a transform of the same type, with a negated constant. However, there are potentially operations for which this cannot be done. For instance, a transform that maps 3D Cartesian coodinates to spherical coordinates cannot be re-written to represent its inverse. This flag indicates that it should be used in its inverse sense. In addition, the invert flag allows a complex compound transformation to be be inverted simply by toggling its invert flag. Without such a flag each component would need to be re-written to represent its inverse (if possible), and the order of serial transformations would need to be reversed - a much more complex and error prone process.
TOperation objectType Uni-directional transform operation, executes the contained function.
TOperation.operation composition Transform operation specification.
Unit objectType A 1-Dimensional operation which makes no change to the inputs. ( X' = X )

4.Imported Models

This section lists the external models imported by the current data model. For each imported model we list URLs to the VO-DML and HTML representations and the prefix used for vodml-ids from inside the model.

4.1 ivoa

Model vodml-id ivoa
url http://www.ivoa.net/xml/VODML/20180519/IVOA-v1.0.vo-dml.xml
documentation url http://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/ivoa/vo-dml/IVOA-v1.0.html