# Class PositionableProjection

Object
CodeList<PositionableProjection>
PositionableProjection

All Implemented Interfaces:
  `Serializable`, `Comparable<PositionableProjection>`

public abstract class PositionableProjection extends CodeList<PositionableProjection>
Provider of map projections centered on a point of interest. The point of interest is typically determined by mouse location.

Since:
  1.1
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class CodeList

  `CodeList​.Filter`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final PositionableProjection`
  `AZIMUTHAL_EQUIDISTANT`
  Provides Azimuthal Equidistant projection centered on a point of interest.
  `static final PositionableProjection`
  `MERCATOR`
  Provides Mercator (variant C) projection centered on a point of interest.
  `static final PositionableProjection`
  `ORTHOGRAPHIC`
  Provides Orthographic projection centered on a point of interest.
  `static final PositionableProjection`
  `UTM`
  Provides Universal Transverse Mercator projection for the zone in the point of interest.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ProjectedCRS`
  `createProjectedCRS(DirectPosition center)`
  Creates a map projection centered on the given position.
  `protected abstract ProjectedCRS`
  `createProjectedCRS(GeographicCRS baseCRS, double latitude, double longitude)`
  Creates a map projection centered on the given latitude and longitude.
  `PositionableProjection[]`
  `family()`
  Returns the list of codes of the same kind as this code list element.
  `String`
  `identifier()`
  Disables the search for UML identifiers because we do not export this package to GeoAPI.
  `String`
  `toString()`
  Returns a name for this enumeration which can be used in a user interface.
  `static PositionableProjection[]`
  `values()`
  Returns the list of `PositionableProjection`s.

  ### Methods inherited from class CodeList

  `compareTo, name, names, ordinal, readResolve, valueOf, valueOf`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### ORTHOGRAPHIC

    public static final PositionableProjection ORTHOGRAPHIC
    Provides Orthographic projection centered on a point of interest.

  - ### AZIMUTHAL_EQUIDISTANT

    public static final PositionableProjection AZIMUTHAL_EQUIDISTANT
    Provides Azimuthal Equidistant projection centered on a point of interest. For projection on the ellipsoid, this is valid only under 800 km of the point of interest.

  - ### UTM

    public static final PositionableProjection UTM
    Provides Universal Transverse Mercator projection for the zone in the point of interest.

  - ### MERCATOR

    public static final PositionableProjection MERCATOR
    Provides Mercator (variant C) projection centered on a point of interest.

- ## Method Details

  - ### values

    public static PositionableProjection[] values()
    Returns the list of `PositionableProjection`s.
    Returns:
      the list of codes declared in the current JVM.

  - ### family

    public PositionableProjection[] family()
    Returns the list of codes of the same kind as this code list element. Invoking this method is equivalent to invoking `values()`, except that this method can be invoked on an instance of the parent `CodeList` class.
    Specified by:
      `family` in class `CodeList<PositionableProjection>`
    Returns:
      all code values for this code list.

  - ### identifier

    public String identifier()
    Disables the search for UML identifiers because we do not export this package to GeoAPI.
    Overrides:
      `identifier` in class `CodeList<PositionableProjection>`
    Returns:
      `null`.

  - ### toString

    public String toString()
    Returns a name for this enumeration which can be used in a user interface.
    Overrides:
      `toString` in class `CodeList<PositionableProjection>`
    Returns:
      a human-readable name for the projection created by this enumeration.

  - ### createProjectedCRS

    public ProjectedCRS createProjectedCRS(DirectPosition center) throws FactoryException, TransformException
    Creates a map projection centered on the given position. The position must have a coordinate reference system, but that CRS does not need to be geographic. The projection created by this method will use the same reference frame (datum) than the given position.

    The default implementation converts the position to latitude and longitude values and delegates to `createProjectedCRS(org​.opengis​.referencing​.crs​.GeographicCRS, double, double)`.

    Parameters:
      `center` - the position at the center of the projection to create.
    Returns:
      projection centered on the given position.
    Throws:
      `FactoryException` - if an error occurred while creating the projection.
      `TransformException` - if an error occurred while converting the given position.

  - ### createProjectedCRS

    protected abstract ProjectedCRS createProjectedCRS(GeographicCRS baseCRS, double latitude, double longitude) throws FactoryException
    Creates a map projection centered on the given latitude and longitude.
    Parameters:
      `baseCRS` - the base CRS of the projection to create.
      `latitude` - latitude of projection center in degrees.
      `longitude` - longitude of projection center in degrees.
    Returns:
      projection centered on the given position.
    Throws:
      `FactoryException` - if an error occurred while creating the projection.