Module org.apache.sis.referencing
Package org.apache.sis.referencing.cs

# Class DefaultEllipsoidalCS

Object
FormattableObject
AbstractIdentifiedObject
AbstractCS
DefaultEllipsoidalCS

All Implemented Interfaces:
  `Serializable`, `Formattable`, `Deprecable`, `LenientComparable`, `CoordinateSystem`, `EllipsoidalCS`, `IdentifiedObject`

public class DefaultEllipsoidalCS extends AbstractCS implements EllipsoidalCS
A 2- or 3-dimensional coordinate system for geodetic latitude and longitude, optionally with ellipsoidal height.

Permitted associations
Used with CRS | Permitted axis names
--- | ---
Geographic | “Geodetic latitude”, “Geodetic longitude”, “Ellipsoidal height” (if 3D)

## Immutability and thread safety

This class is immutable and thus thread-safe if the property values (not necessarily the map itself) and the `CoordinateSystemAxis` instances given to the constructor are also immutable. Unless otherwise noted in the javadoc, this condition holds if all components were created using only SIS factories and static constants.

Since:
  0.4
See Also:
  - `GeodeticAuthorityFactory​.createEllipsoidalCS(String)`
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class AbstractIdentifiedObject

  `DEPRECATED_KEY, LOCALE_KEY`

  ### Fields inherited from interface IdentifiedObject

  `ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `DefaultEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Constructs a two-dimensional coordinate system from a set of properties.
  ``
  `DefaultEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Constructs a three-dimensional coordinate system from a set of properties.
  `protected`
  `DefaultEllipsoidalCS(EllipsoidalCS cs)`
  Creates a new coordinate system with the same values than the specified one.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultEllipsoidalCS`
  `castOrCopy(EllipsoidalCS object)`
  Returns a SIS coordinate system implementation with the same values than the given arbitrary implementation.
  `DefaultEllipsoidalCS`
  `forConvention(AxesConvention convention)`
  Returns a coordinate system equivalent to this one but with axes rearranged according the given convention.
  `Class<? extends EllipsoidalCS>`
  `getInterface()`
  Returns the GeoAPI interface implemented by this class.

  ### Methods inherited from class AbstractCS

  `castOrCopy, computeHashCode, equals, formatTo, getAxis, getDimension`

  ### Methods inherited from class AbstractIdentifiedObject

  `castOrCopy, equals, formatTo, getAlias, getDescription, getDomains, getIdentifiers, getName, getRemarks, hashCode, isDeprecated, isHeuristicMatchForName`

  ### Methods inherited from class FormattableObject

  `print, toString, toString, toWKT`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface CoordinateSystem

  `getAxis, getDimension`

  ### Methods inherited from interface IdentifiedObject

  `getAlias, getIdentifiers, getName, getRemarks, toWKT`

- ## Constructor Details

  - ### DefaultEllipsoidalCS

    public DefaultEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)
    Constructs a two-dimensional coordinate system from a set of properties. The properties map is given unchanged to the super-class constructor. The following table is a reminder of main (not all) properties:

    Recognized properties (non exhaustive list)
    Property name | Value type | Returned by
    --- | --- | ---
    "name" | `ReferenceIdentifier` or `String` | `AbstractIdentifiedObject.getName()`
    "alias" | `GenericName` or `CharSequence` (optionally as array) | `AbstractIdentifiedObject.getAlias()`
    "identifiers" | `ReferenceIdentifier` (optionally as array) | `AbstractIdentifiedObject.getIdentifiers()`
    "remarks" | `InternationalString` or `String` | `AbstractIdentifiedObject.getRemarks()`

    Parameters:
      `properties` - the properties to be given to the identified object.
      `axis0` - the first axis (e.g. “Geodetic latitude”).
      `axis1` - the second axis (e.g. “Geodetic longitude”).
    See Also:
      - `GeodeticObjectFactory​.createEllipsoidalCS(Map, CoordinateSystemAxis, CoordinateSystemAxis)`

  - ### DefaultEllipsoidalCS

    public DefaultEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)
    Constructs a three-dimensional coordinate system from a set of properties. The properties map is given unchanged to the super-class constructor.
    Parameters:
      `properties` - the properties to be given to the identified object.
      `axis0` - the first axis (e.g. “Geodetic latitude”).
      `axis1` - the second axis (e.g. “Geodetic longitude”).
      `axis2` - the third axis (e.g. “Ellipsoidal height”).
    See Also:
      - `GeodeticObjectFactory​.createEllipsoidalCS(Map, CoordinateSystemAxis, CoordinateSystemAxis, CoordinateSystemAxis)`

  - ### DefaultEllipsoidalCS

    protected DefaultEllipsoidalCS(EllipsoidalCS cs)
    Creates a new coordinate system with the same values than the specified one. This copy constructor provides a way to convert an arbitrary implementation into a SIS 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:
      `cs` - the coordinate system to copy.
    See Also:
      - `castOrCopy(EllipsoidalCS)`

- ## Method Details

  - ### castOrCopy

    public static DefaultEllipsoidalCS castOrCopy(EllipsoidalCS object)
    Returns a SIS coordinate system implementation with the same values than the given arbitrary implementation. If the given object is `null`, then this method returns `null`. Otherwise if the given object is already a SIS implementation, then the given object is returned unchanged. Otherwise a new SIS implementation is created and initialized to the attribute values of the given object.
    Parameters:
      `object` - the object to get as a SIS implementation, or `null` if none.
    Returns:
      a SIS implementation containing the values of the given object (may be the given object itself), or `null` if the argument was null.

  - ### getInterface

    public Class<? extends EllipsoidalCS> getInterface()
    Returns the GeoAPI interface implemented by this class. The SIS implementation returns `EllipsoidalCS​.class`.

    #### Note for implementers

    Subclasses usually do not need to override this method since GeoAPI does not define `EllipsoidalCS` sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own set of interfaces.
    Overrides:
      `getInterface` in class `AbstractCS`
    Returns:
      `EllipsoidalCS​.class` or a user-defined sub-interface.

  - ### forConvention

    public DefaultEllipsoidalCS forConvention(AxesConvention convention)
    Returns a coordinate system equivalent to this one but with axes rearranged according the given convention. If this coordinate system is already compatible with the given convention, then this method returns `this`.
    Overrides:
      `forConvention` in class `AbstractCS`
    Parameters:
      `convention` - the axes convention for which a coordinate system is desired.
    Returns:
      a coordinate system compatible with the given convention (may be `this`).
    See Also:
      - `AbstractCRS​.forConvention(AxesConvention)`