Class AbstractCoordinateOperation

  • All Implemented Interfaces:
    Serializable, IdentifiedObject, CoordinateOperation
    Direct Known Subclasses:
    DefaultConcatenatedOperation, DefaultSingleOperation

    public class AbstractCoordinateOperation
    extends AbstractIdentifiedObject
    implements CoordinateOperation
    Establishes an association between a source and a target coordinate reference system, and provides a transform for transforming coordinates in the source CRS to coordinates in the target CRS. 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.

    This class is conceptually abstract, even if it is technically possible to instantiate it. Typical applications should create instances of the most specific subclass with Default prefix instead. An exception to this rule may occurs when it is not possible to identify the exact type.

    Since:
    2.1
    Author:
    Martin Desruisseaux (IRD)
    See Also:
    Serialized Form
    • Method Detail

      • getOperationVersion

        public 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.
        Specified by:
        getOperationVersion in interface CoordinateOperation
        Returns:
        The coordinate operation version, or null in none.
      • getCoordinateOperationAccuracy

        public 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.
        Specified by:
        getCoordinateOperationAccuracy in interface CoordinateOperation
        Returns:
        The position error estimates, or an empty collection if not available.
        Since:
        2.4
        See Also:
        getAccuracy()
      • getAccuracy

        public double getAccuracy()
        Convenience method returning the accuracy in meters. The default implementation delegates to getAccuracy(this). Subclasses should override this method if they can provide a more accurate algorithm.
        Returns:
        The accuracy in meters, or NaN if unknown.
        Since:
        2.2
      • getAccuracy

        public static double getAccuracy​(CoordinateOperation operation)
        Convenience method returning the accuracy in meters for the specified operation. This method try each of the following procedures and returns the first successful one:
        • If a quantitative positional accuracy is found with a linear unit, then this accuracy estimate is converted to meters and returned.
        • Otherwise, if the operation is a conversion, then returns 0 since a conversion is by definition accurates up to rounding errors.
        • Otherwise, if the operation is a transformation, then checks if the datum shift were applied with the help of Bursa-Wolf parameters. This procedure looks for Geotools-specific DATUM_SHIFT_APPLIED and DATUM_SHIFT_OMITTED metadata. If a datum shift has been applied, returns 25 meters. If a datum shift should have been applied but has been omitted, returns 1000 meters. The 1000 meters value is higher than the highest value (999 meters) found in the EPSG database version 6.7. The 25 meters value is the next highest value found in the EPSG database for a significant number of transformations.
        • Otherwise, if the operation is a concatenated one, returns the sum of the accuracy of all components.
        Parameters:
        operation - The operation to inspect for accuracy.
        Returns:
        The accuracy estimate (always in meters), or NaN if unknow.
        Since:
        2.2
      • getDomainOfValidity

        public Extent getDomainOfValidity()
        Area or region or timeframe in which this coordinate operation is valid. Returns null if not available.
        Specified by:
        getDomainOfValidity in interface CoordinateOperation
        Returns:
        The coordinate operation valid domain, or null if not available.
        Since:
        2.4
      • getScope

        public InternationalString getScope()
        Description of domain of usage, or limitations of usage, for which this operation is valid.
        Specified by:
        getScope in interface CoordinateOperation
        Returns:
        A description of domain of usage, or null if none.
      • getType

        public static Class<? extends CoordinateOperation> getType​(CoordinateOperation object)
        Returns the most specific GeoAPI interface implemented by the specified operation.
        Parameters:
        object - A coordinate operation.
        Returns:
        The most specific GeoAPI interface (e.g. Transformation.class ).
      • equals

        public boolean equals​(AbstractIdentifiedObject object,
                              boolean compareMetadata)
        Compares this coordinate operation with the specified object for equality. If compareMetadata is true, then all available properties are compared including domain of validity and scope.
        Overrides:
        equals in class AbstractIdentifiedObject
        Parameters:
        object - The object to compare to this.
        compareMetadata - true for performing a strict comparaison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both objects are equal.
      • hashCode

        public int hashCode()
        Returns a hash code value for this coordinate operation.
        Overrides:
        hashCode in class AbstractIdentifiedObject
        Returns:
        The hash code value. This value doesn't need to be the same in past or future versions of this class.
      • formatWKT

        protected String formatWKT​(Formatter formatter)
        Format this operation as a pseudo-WKT format. No WKT format were defined for coordinate operation at the time this method was written. This method may change in any future version until a standard format is found.
        Overrides:
        formatWKT in class Formattable
        Parameters:
        formatter - The formatter to use.
        Returns:
        The WKT element name.
        See Also:
        Formattable.toWKT(), Formattable.toString()