org.geotoolkit.referencing.crs
Class AbstractSingleCRS

Object
  extended by FormattableObject
      extended by AbstractIdentifiedObject
          extended by AbstractReferenceSystem
              extended by AbstractCRS
                  extended by AbstractSingleCRS
All Implemented Interfaces:
Serializable, Formattable, LenientComparable, CoordinateReferenceSystem, SingleCRS, IdentifiedObject, ReferenceSystem
Direct Known Subclasses:
AbstractDerivedCRS, DefaultEngineeringCRS, DefaultGeocentricCRS, DefaultGeographicCRS, DefaultImageCRS, DefaultTemporalCRS, DefaultVerticalCRS

@Immutable
public class AbstractSingleCRS
extends AbstractCRS
implements SingleCRS

Abstract coordinate reference system, consisting of a single coordinate system and a single datum (as opposed to compound CRS).

A coordinate reference system consists of an ordered sequence of coordinate system axes that are related to the earth through a datum. A coordinate reference system is defined by one datum and by one coordinate system. Most coordinate reference system do not move relative to the earth, except for engineering coordinate reference systems defined on moving platforms such as cars, ships, aircraft, and spacecraft.

Coordinate reference systems are commonly divided into sub-types. The common classification criterion for sub-typing of coordinate reference systems is the way in which they deal with earth curvature. This has a direct effect on the portion of the earth's surface that can be covered by that type of CRS with an acceptable degree of error. The exception to the rule is the subtype "Temporal" which has been added by analogy.

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
Version:
3.18
Author:
Martin Desruisseaux (IRD, Geomatys)
See Also:
AbstractCS, AbstractDatum, Serialized Form
Module:
referencing/geotk-referencing (download)    View source code for this class

Field Summary
 
Fields inherited from class FormattableObject
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE
 
Fields inherited from interface ReferenceSystem
DOMAIN_OF_VALIDITY_KEY, SCOPE_KEY
 
Fields inherited from interface IdentifiedObject
ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY
 
Constructor Summary
AbstractSingleCRS(Map<String,?> properties, Datum datum, CoordinateSystem cs)
          Constructs a coordinate reference system from a set of properties.
AbstractSingleCRS(SingleCRS crs)
          Constructs a new coordinate reference system with the same values than the specified one.
 
Method Summary
protected  int computeHashCode()
          Computes a hash value for this identified object.
 boolean equals(Object object, ComparisonMode mode)
          Compares this coordinate reference system with the specified object for equality.
 CoordinateSystemAxis getAxis(int dimension)
          Returns the axis for the underlying coordinate system at the specified dimension.
 Datum getDatum()
          Returns the datum.
 int getDimension()
          Returns the dimension of the underlying coordinate system.
 
Methods inherited from class AbstractCRS
distance, formatWKT, getCoordinateSystem
 
Methods inherited from class AbstractReferenceSystem
getDomainOfValidity, getScope
 
Methods inherited from class AbstractIdentifiedObject
equals, getAlias, getIdentifier, getIdentifiers, getName, getName, getRemarks, hashCode, nameMatches
 
Methods inherited from class FormattableObject
getDefaultIndentation, print, setDefaultIndentation, toString, toWKT, toWKT, toWKT
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface SingleCRS
getCoordinateSystem
 
Methods inherited from interface ReferenceSystem
getDomainOfValidity, getScope
 
Methods inherited from interface IdentifiedObject
getAlias, getIdentifiers, getName, getRemarks, toWKT
 

Constructor Detail

AbstractSingleCRS

public AbstractSingleCRS(SingleCRS crs)
Constructs a new coordinate reference system with the same values than the specified one. This copy constructor provides a way to convert an arbitrary implementation into a Geotk one or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API. This constructor performs a shallow copy, i.e. the properties are not cloned.

Parameters:
crs - The coordinate reference system to copy.
Since:
2.2

AbstractSingleCRS

public AbstractSingleCRS(Map<String,?> properties,
                         Datum datum,
                         CoordinateSystem cs)
Constructs a coordinate reference system from a set of properties. The properties are given unchanged to the base-class constructor.

Parameters:
properties - Set of properties. Should contains at least "name".
datum - The datum.
cs - The coordinate system.
Method Detail

getDatum

public Datum getDatum()
Returns the datum.

Specified by:
getDatum in interface SingleCRS
Returns:
The datum.

getDimension

public int getDimension()
Returns the dimension of the underlying coordinate system. This is equivalent to AbstractCRS.coordinateSystem.getDimension().

Returns:
The dimension of this coordinate reference system.

getAxis

public CoordinateSystemAxis getAxis(int dimension)
                             throws IndexOutOfBoundsException
Returns the axis for the underlying coordinate system at the specified dimension. This is equivalent to AbstractCRS.coordinateSystem.getAxis(dimension).

Parameters:
dimension - The zero based index of axis.
Returns:
The axis at the specified dimension.
Throws:
IndexOutOfBoundsException - if dimension is out of bounds.

equals

public boolean equals(Object object,
                      ComparisonMode mode)
Compares this coordinate reference system with the specified object for equality. If the mode argument value is STRICT or BY_CONTRACT, then all available properties are compared including the domain of validity and the scope.

Specified by:
equals in interface LenientComparable
Overrides:
equals in class AbstractCRS
Parameters:
object - The object to compare to this.
mode - STRICT for performing a strict comparison, or IGNORE_METADATA for comparing only properties relevant to transformations.
Returns:
true if both objects are equal.

computeHashCode

protected int computeHashCode()
Computes a hash value for this identified object. This method is invoked by AbstractIdentifiedObject.hashCode() when first needed.

Implementation specific feature
In the Geotk implementation, the name, identifiers and remarks are not used for hash code computation. Consequently two identified objects will return the same hash value if they are equal in the sense of equals(…, ComparisonMode.IGNORE_METADATA). This feature allows users to implement metadata-insensitive HashMap.

Overrides:
computeHashCode in class AbstractCRS
Returns:
The hash code value. This value may change between different execution of the Geotk library.


Copyright © 2009-2011 Geotoolkit.org. All Rights Reserved.