# Interface Datum

All Superinterfaces:
  `IdentifiedObject`

All Known Subinterfaces:
  `EngineeringDatum, GeodeticDatum, ImageDatum, TemporalDatum, VerticalDatum`

All Known Implementing Classes:
  `AbstractDatum, DefaultDatumEnsemble, DefaultEngineeringDatum, DefaultGeodeticDatum, DefaultGeodeticDatum​.Dynamic, DefaultParametricDatum, DefaultTemporalDatum, DefaultVerticalDatum, DefaultVerticalDatum​.Dynamic`

@UML(identifier="CD_Datum", specification=ISO_19111) public interface Datum extends IdentifiedObject
Specifies the relationship of a coordinate system to the earth, thus creating a coordinate reference system. A datum uses a parameter or set of parameters that determine the location of the origin of the coordinate reference system. Each datum subtype can be associated with only specific types of coordinate systems.

Since:
  1.0
See Also:
  - `CoordinateSystem`
  - `CoordinateReferenceSystem`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ANCHOR_POINT_KEY`
  Key for the `"anchorPoint"` property to be given to the datum factory `createFoo(…)` methods.
  `static final String`
  `DOMAIN_OF_VALIDITY_KEY`
  Key for the `"domainOfValidity"` property to be given to the datum factory `createFoo(…)` methods.
  `static final String`
  `REALIZATION_EPOCH_KEY`
  Key for the `"realizationEpoch"` property to be given to the datum factory `createFoo(…)` methods.
  `static final String`
  `SCOPE_KEY`
  Key for the `"scope"` property to be given to the datum factory `createFoo(…)` methods.

  ### Fields inherited from interface IdentifiedObject

  `ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `InternationalString`
  `getAnchorPoint()`
  Description, possibly including coordinates, of the point or points used to anchor the datum to the Earth.
  `Extent`
  `getDomainOfValidity()`
  Area or region or timeframe in which this datum is valid.
  `Date`
  `getRealizationEpoch()`
  The time after which this datum definition is valid.
  `InternationalString`
  `getScope()`
  Description of domain of usage, or limitations of usage, for which this datum object is valid.

  ### Methods inherited from interface IdentifiedObject

  `getAlias, getIdentifiers, getName, getRemarks, toWKT`

- ## Field Details

  - ### ANCHOR_POINT_KEY

    static final String ANCHOR_POINT_KEY
    Key for the `"anchorPoint"` property to be given to the datum factory `createFoo(…)` methods. This is used for setting the value to be returned by `getAnchorPoint()`.
    See Also:
      - `getAnchorPoint()`
      - Constant Field Values

  - ### REALIZATION_EPOCH_KEY

    static final String REALIZATION_EPOCH_KEY
    Key for the `"realizationEpoch"` property to be given to the datum factory `createFoo(…)` methods. This is used for setting the value to be returned by `getRealizationEpoch()`.
    See Also:
      - `getRealizationEpoch()`
      - Constant Field Values

  - ### DOMAIN_OF_VALIDITY_KEY

    static final String DOMAIN_OF_VALIDITY_KEY
    Key for the `"domainOfValidity"` property to be given to the datum factory `createFoo(…)` methods. This is used for setting the value to be returned by `getDomainOfValidity()`.
    Since:
      2.1
    See Also:
      - `getDomainOfValidity()`
      - Constant Field Values

  - ### SCOPE_KEY

    static final String SCOPE_KEY
    Key for the `"scope"` property to be given to the datum factory `createFoo(…)` methods. This is used for setting the value to be returned by `getScope()`.
    See Also:
      - `getScope()`
      - Constant Field Values

- ## Method Details

  - ### getAnchorPoint

    @UML(identifier="anchorPoint", obligation=OPTIONAL, specification=ISO_19111) InternationalString getAnchorPoint()
    Description, possibly including coordinates, of the point or points used to anchor the datum to the Earth. Also known as the "origin", especially for Engineering and Image Datums.

    - For a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the "fundamental point" may consist of a number of points. In those cases, the parameters defining the geoid/ellipsoid relationship have then been averaged for these points, and the averages adopted as the datum definition.
    - For an engineering datum, the anchor point may be a physical point, or it may be a point with defined coordinates in another CRS.
    - For an image datum, the anchor point is usually either the centre of the image or the corner of the image.
    - For a temporal datum, this attribute is not defined. Instead of the anchor point, a temporal datum carries a separate time origin of type `Date`.
    Returns:
      A description of the anchor point, or `null` if none.

  - ### getRealizationEpoch

    @UML(identifier="realizationEpoch", obligation=OPTIONAL, specification=ISO_19111) Date getRealizationEpoch()
    The time after which this datum definition is valid. This time may be precise (e.g. 1997 for IRTF97) or merely a year (e.g. 1983 for NAD83). In the latter case, the epoch usually refers to the year in which a major recalculation of the geodetic control network, underlying the datum, was executed or initiated. An old datum can remain valid after a new datum is defined. Alternatively, a datum may be superseded by a later datum, in which case the realization epoch for the new datum defines the upper limit for the validity of the superseded datum.

    Warning: The return type of this method may change in GeoAPI 3.1 release. It may be replaced by a type matching more closely either ISO 19108 (Temporal Schema) or ISO 19103.

    Returns:
      The datum realization epoch, or `null` if not available.

  - ### getDomainOfValidity

    @UML(identifier="domainOfValidity", obligation=OPTIONAL, specification=ISO_19111) Extent getDomainOfValidity()
    Area or region or timeframe in which this datum is valid.
    Returns:
      The datum valid domain, or `null` if not available.
    Since:
      2.1

  - ### getScope

    @UML(identifier="scope", obligation=OPTIONAL, specification=ISO_19111) InternationalString getScope()
    Description of domain of usage, or limitations of usage, for which this datum object is valid.
    Returns:
      A description of domain of usage, or `null` if none.