# Interface CompoundCRS

All Superinterfaces:
  `CoordinateReferenceSystem, IdentifiedObject, ReferenceSystem`

All Known Implementing Classes:
  `DefaultCompoundCRS`

@UML(identifier="SC_CompoundCRS", specification=ISO_19111) public interface CompoundCRS extends CoordinateReferenceSystem
A coordinate reference system describing the position of points through two or more independent coordinate reference systems. Thus it is associated with two or more Coordinate Systems and Datums by defining the compound CRS as an ordered set of two or more instances of `CoordinateReferenceSystem`.

In general, a Compound CRS may contain any number of axes. The Compound CRS contains an ordered set of coordinate reference systems and the tuple order of a compound coordinate set shall follow that order, while the subsets of the tuple, described by each of the composing coordinate reference systems, follow the tuple order valid for their respective coordinate reference systems.

For spatial coordinates, a number of constraints exist for the construction of Compound CRSs. For example, the coordinate reference systems that are combined should not contain any duplicate or redundant axes. Valid combinations include:

- Geographic 2D + Vertical
- Geographic 2D + Engineering 1D (near vertical)
- Projected + Vertical
- Projected + Engineering 1D (near vertical)
- Engineering (horizontal 2D or 1D linear) + Vertical

Any coordinate reference system, or any of the above listed combinations of coordinate reference systems, can have a Temporal CRS added. More than one Temporal CRS may be added if these axes represent different time quantities. For example, the oil industry sometimes uses "4D seismic", by which is meant seismic data with the vertical axis expressed in milliseconds (signal travel time). A second time axis indicates how it changes with time (years), e.g. as a reservoir is gradually exhausted of its recoverable oil or gas).

Since:
  1.0

- ## Field Summary

  ### Fields inherited from interface IdentifiedObject

  `ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY`

  ### Fields inherited from interface ReferenceSystem

  `DOMAIN_OF_VALIDITY_KEY, SCOPE_KEY`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<CoordinateReferenceSystem>`
  `getComponents()`
  The ordered list of coordinate reference systems.

  ### Methods inherited from interface CoordinateReferenceSystem

  `getCoordinateSystem`

  ### Methods inherited from interface IdentifiedObject

  `getAlias, getIdentifiers, getName, getRemarks, toWKT`

  ### Methods inherited from interface ReferenceSystem

  `getDomainOfValidity, getScope`

- ## Method Details

  - ### getComponents

    @UML(identifier="componentReferenceSystem", obligation=MANDATORY, specification=ISO_19111) List<CoordinateReferenceSystem> getComponents()
    The ordered list of coordinate reference systems.
    Returns:
      The ordered list of coordinate reference systems.
    Since:
      2.3