# Interface CSFactory

All Superinterfaces:
  `Factory, ObjectFactory`

All Known Implementing Classes:
  `GeodeticObjectFactory`

public interface CSFactory extends ObjectFactory
Builds up complex coordinate systems from simpler objects or values. `CSFactory` allows applications to make coordinate systems that cannot be created by a `CSAuthorityFactory`. This factory is very flexible, whereas the authority factory is easier to use. So `CSAuthorityFactory` can be used to make "standard" coordinate systems, and `CSFactory` can be used to make "special" coordinate systems.

Since:
  1.0
See Also:
  - `CRSFactory`
  - `DatumFactory`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `AffineCS`
  `createAffineCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Creates a two dimensional coordinate system from the given pair of axis.
  `AffineCS`
  `createAffineCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates a three dimensional coordinate system from the given set of axis.
  `CartesianCS`
  `createCartesianCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Creates a two dimensional cartesian coordinate system from the given pair of axis.
  `CartesianCS`
  `createCartesianCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates a three dimensional cartesian coordinate system from the given set of axis.
  `CoordinateSystemAxis`
  `createCoordinateSystemAxis(Map<String,?> properties, String abbreviation, AxisDirection direction, Unit<?> unit)`
  Creates a coordinate system axis from an abbreviation and a unit.
  `CylindricalCS`
  `createCylindricalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates a cylindrical coordinate system from the given set of axis.
  `EllipsoidalCS`
  `createEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Creates an ellipsoidal coordinate system without ellipsoidal height.
  `EllipsoidalCS`
  `createEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates an ellipsoidal coordinate system with ellipsoidal height.
  `LinearCS`
  `createLinearCS(Map<String,?> properties, CoordinateSystemAxis axis)`
  Creates a linear coordinate system.
  `PolarCS`
  `createPolarCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Creates a polar coordinate system from the given pair of axis.
  `SphericalCS`
  `createSphericalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates a spherical coordinate system from the given set of axis.
  `TimeCS`
  `createTimeCS(Map<String,?> properties, CoordinateSystemAxis axis)`
  Creates a time coordinate system.
  `UserDefinedCS`
  `createUserDefinedCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1)`
  Creates a two-dimensional user defined coordinate system.
  `UserDefinedCS`
  `createUserDefinedCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2)`
  Creates a three-dimensional user defined coordinate system.
  `VerticalCS`
  `createVerticalCS(Map<String,?> properties, CoordinateSystemAxis axis)`
  Creates a vertical coordinate system.

  ### Methods inherited from interface Factory

  `getVendor`

- ## Method Details

  - ### createCoordinateSystemAxis

    CoordinateSystemAxis createCoordinateSystemAxis(Map<String,?> properties, String abbreviation, AxisDirection direction, Unit<?> unit) throws FactoryException
    Creates a coordinate system axis from an abbreviation and a unit.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `abbreviation` - The coordinate axis abbreviation.
      `direction` - The axis direction.
      `unit` - The coordinate axis unit.
    Returns:
      The axis for the given properties.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createCartesianCS

    CartesianCS createCartesianCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1) throws FactoryException
    Creates a two dimensional cartesian coordinate system from the given pair of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createCartesianCS

    CartesianCS createCartesianCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates a three dimensional cartesian coordinate system from the given set of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createAffineCS

    AffineCS createAffineCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1) throws FactoryException
    Creates a two dimensional coordinate system from the given pair of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createAffineCS

    AffineCS createAffineCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates a three dimensional coordinate system from the given set of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createPolarCS

    PolarCS createPolarCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1) throws FactoryException
    Creates a polar coordinate system from the given pair of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createCylindricalCS

    CylindricalCS createCylindricalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates a cylindrical coordinate system from the given set of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createSphericalCS

    SphericalCS createSphericalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates a spherical coordinate system from the given set of axis.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createEllipsoidalCS

    EllipsoidalCS createEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1) throws FactoryException
    Creates an ellipsoidal coordinate system without ellipsoidal height.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createEllipsoidalCS

    EllipsoidalCS createEllipsoidalCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates an ellipsoidal coordinate system with ellipsoidal height.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createVerticalCS

    VerticalCS createVerticalCS(Map<String,?> properties, CoordinateSystemAxis axis) throws FactoryException
    Creates a vertical coordinate system.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis` - The axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createTimeCS

    TimeCS createTimeCS(Map<String,?> properties, CoordinateSystemAxis axis) throws FactoryException
    Creates a time coordinate system.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis` - The axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createLinearCS

    LinearCS createLinearCS(Map<String,?> properties, CoordinateSystemAxis axis) throws FactoryException
    Creates a linear coordinate system.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis` - The axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createUserDefinedCS

    UserDefinedCS createUserDefinedCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1) throws FactoryException
    Creates a two-dimensional user defined coordinate system.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.

  - ### createUserDefinedCS

    UserDefinedCS createUserDefinedCS(Map<String,?> properties, CoordinateSystemAxis axis0, CoordinateSystemAxis axis1, CoordinateSystemAxis axis2) throws FactoryException
    Creates a three-dimensional user defined coordinate system.
    Parameters:
      `properties` - Name and other properties to give to the new object. Available properties are listed there.
      `axis0` - The first axis.
      `axis1` - The second axis.
      `axis2` - The third axis.
    Returns:
      The coordinate system for the given properties and axes.
    Throws:
      `FactoryException` - if the object creation failed.