# Interface CoordinateOperation

All Superinterfaces:
  `IdentifiedObject`

All Known Subinterfaces:
  `ConcatenatedOperation, ConicProjection, Conversion, CylindricalProjection, PassThroughOperation, PlanarProjection, Projection, SingleOperation, Transformation`

All Known Implementing Classes:
  `AbstractCoordinateOperation, DefaultConversion, DefaultPassThroughOperation, DefaultTransformation`

@UML(identifier="CC_CoordinateOperation", specification=ISO_19111) public interface CoordinateOperation extends IdentifiedObject
A mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. Many but not all coordinate operations (from coordinate reference system A to coordinate reference system B) also uniquely define the inverse operation (from coordinate reference system B to coordinate reference system A). In some cases, the operation method algorithm for the inverse operation is the same as for the forward algorithm, but the signs of some operation parameter values must be reversed. In other cases, different algorithms are required for the forward and inverse operations, but the same operation parameter values are used. If (some) entirely different parameter values are needed, a different coordinate operation shall be defined.

Since:
  1.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `COORDINATE_OPERATION_ACCURACY_KEY`
  Key for the `"coordinateOperationAccuracy"` property.
  `static final String`
  `DOMAIN_OF_VALIDITY_KEY`
  Key for the `"domainOfValidity"` property.
  `static final String`
  `OPERATION_VERSION_KEY`
  Key for the `"operationVersion"` property.
  `static final String`
  `SCOPE_KEY`
  Key for the `"scope"` property.

  ### Fields inherited from interface IdentifiedObject

  `ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Collection<PositionalAccuracy>`
  `getCoordinateOperationAccuracy()`
  Estimate(s) of the impact of this operation on point accuracy.
  `Extent`
  `getDomainOfValidity()`
  Area or region or timeframe in which this coordinate operation is valid.
  `MathTransform`
  `getMathTransform()`
  Gets the math transform.
  `String`
  `getOperationVersion()`
  Version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters).
  `InternationalString`
  `getScope()`
  Description of domain of usage, or limitations of usage, for which this operation is valid.
  `CoordinateReferenceSystem`
  `getSourceCRS()`
  Returns the source CRS.
  `CoordinateReferenceSystem`
  `getTargetCRS()`
  Returns the target CRS.

  ### Methods inherited from interface IdentifiedObject

  `getAlias, getIdentifiers, getName, getRemarks, toWKT`

- ## Field Details

  - ### OPERATION_VERSION_KEY

    static final String OPERATION_VERSION_KEY
    Key for the `"operationVersion"` property. This is used for setting the value to be returned by `getOperationVersion()`.
    See Also:
      - `getOperationVersion()`
      - Constant Field Values

  - ### COORDINATE_OPERATION_ACCURACY_KEY

    static final String COORDINATE_OPERATION_ACCURACY_KEY
    Key for the `"coordinateOperationAccuracy"` property. This is used for setting the value to be returned by `getCoordinateOperationAccuracy()`.
    Since:
      2.1
    See Also:
      - `getCoordinateOperationAccuracy()`
      - Constant Field Values

  - ### DOMAIN_OF_VALIDITY_KEY

    static final String DOMAIN_OF_VALIDITY_KEY
    Key for the `"domainOfValidity"` property. 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. This is used for setting the value to be returned by `getScope()`.
    See Also:
      - `getScope()`
      - Constant Field Values

- ## Method Details

  - ### getSourceCRS

    @UML(identifier="sourceCRS", obligation=CONDITIONAL, specification=ISO_19111) CoordinateReferenceSystem getSourceCRS()
    Returns the source CRS. The source CRS is mandatory for transformations only. Conversions may have a source CRS that is not specified here, but through `GeneralDerivedCRS​.getBaseCRS()` instead.
    Returns:
      The source CRS, or `null` if not available.
    See Also:
      - `Conversion​.getSourceCRS()`
      - `Transformation​.getSourceCRS()`

  - ### getTargetCRS

    @UML(identifier="targetCRS", obligation=CONDITIONAL, specification=ISO_19111) CoordinateReferenceSystem getTargetCRS()
    Returns the target CRS. The target CRS is mandatory for transformations only. Conversions may have a target CRS that is not specified here, but through `GeneralDerivedCRS` instead.
    Returns:
      The target CRS, or `null` if not available.
    See Also:
      - `Conversion​.getTargetCRS()`
      - `Transformation​.getTargetCRS()`

  - ### getOperationVersion

    @UML(identifier="operationVersion", obligation=CONDITIONAL, specification=ISO_19111) String getOperationVersion()
    Version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters). Mandatory when describing a transformation, and should not be supplied for a conversion.
    Returns:
      The coordinate operation version, or `null` in none.

  - ### getCoordinateOperationAccuracy

    @UML(identifier="coordinateOperationAccuracy", obligation=OPTIONAL, specification=ISO_19111) Collection<PositionalAccuracy> getCoordinateOperationAccuracy()
    Estimate(s) of the impact of this operation on point accuracy. Gives position error estimates for target coordinates of this coordinate operation, assuming no errors in source coordinates.
    Returns:
      The position error estimates, or an empty collection if not available.
    Since:
      2.1

  - ### getDomainOfValidity

    @UML(identifier="domainOfValidity", obligation=OPTIONAL, specification=ISO_19111) Extent getDomainOfValidity()
    Area or region or timeframe in which this coordinate operation is valid.
    Returns:
      The coordinate operation 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 operation is valid.
    Returns:
      A description of domain of usage, or `null` if none.

  - ### getMathTransform

    @UML(identifier="CT_CoordinateTransformation.getMathTransform", specification=OGC_01009) MathTransform getMathTransform()
    Gets the math transform. The math transform will transform positions in the source coordinate reference system into positions in the target coordinate reference system. It may be `null` in the case of defining conversions.
    Returns:
      The transform from source to target CRS, or `null` if not applicable.