Package org.apache.sis.referencing.cs

## Class DefaultEllipsoidalCS

- Object
- - FormattableObject
  - - AbstractIdentifiedObject
    - - AbstractCS
      - - DefaultEllipsoidalCS

- All Implemented Interfaces:
    `Serializable`, `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

  Defined in the `sis-referencing` module

- - ### 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

    All Methods Static Methods Instance Methods Concrete Methods
    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, getAlias, getDescription, 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 Detail

    - #### 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 Detail

    - #### 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)`