Package org.apache.sis.referencing.operation.projection

# Class PolarStereographic

Object
FormattableObject
AbstractMathTransform
AbstractMathTransform2D
NormalizedProjection
PolarStereographic

All Implemented Interfaces:
  `Serializable`, `Parameterized`, `LenientComparable`, `MathTransform`, `MathTransform2D`

public class PolarStereographic extends NormalizedProjection
Polar Stereographic projection (EPSG codes 9810, 9829, 9830). This is a special case of `ObliqueStereographic` when the projection origin is at a pole.

EPSG defines three variants for this projection, A, B and C, which differ by the way the parameters are specified. The "Polar Stereographic (variant B)" projection includes a "Latitude of standard parallel" parameter where is effective the scale factor (normally 1). The "Polar Stereographic (variant A)" forces its "Latitude of natural origin" parameter to ±90°, depending on the hemisphere.

Since:
  0.6
See Also:
  - `ObliqueStereographic`
  - Serialized Form

Defined in the `sis-referencing` module

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class NormalizedProjection

  `NormalizedProjection​.ParameterRole`

- ## Field Summary

  ### Fields inherited from class NormalizedProjection

  `eccentricity, eccentricitySquared`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PolarStereographic(OperationMethod method, Parameters parameters)`
  Creates a Polar Stereographic projection from the given parameters.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `MathTransform`
  `createMapProjection(MathTransformFactory factory)`
  Returns the sequence of normalization → `this` → denormalization transforms as a whole.
  `protected void`
  `inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff)`
  Converts the specified (x,y) coordinates and stores the result in `dstPts` (angles in radians).
  `Matrix`
  `transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate)`
  Converts the specified (θ,φ) coordinate (units in radians) and stores the result in `dstPts`.

  ### Methods inherited from class NormalizedProjection

  `computeHashCode, equals, getContextualParameters, getParameterDescriptors, getParameterValues, inverse, tryConcatenate`

  ### Methods inherited from class AbstractMathTransform2D

  `createTransformedShape, derivative, getSourceDimensions, getTargetDimensions, transform`

  ### Methods inherited from class AbstractMathTransform

  `derivative, equals, formatTo, hashCode, isIdentity, transform, transform, transform, transform, transform`

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

  `derivative, isIdentity, toWKT, transform, transform, transform, transform, transform`

- ## Constructor Details

  - ### PolarStereographic

    public PolarStereographic(OperationMethod method, Parameters parameters)
    Creates a Polar Stereographic projection from the given parameters. The `method` argument can be the description of one of the following:
    - "Polar Stereographic (Variant A)".
    - "Polar Stereographic (Variant B)".
    - "Polar Stereographic (Variant C)".
    Parameters:
      `method` - description of the projection parameters.
      `parameters` - the parameter values of the projection to create.

- ## Method Details

  - ### createMapProjection

    public MathTransform createMapProjection(MathTransformFactory factory) throws FactoryException
    Returns the sequence of normalization → `this` → denormalization transforms as a whole. The transform returned by this method expects (longitude, latitude) coordinates in degrees and returns (x,y) coordinates in metres.

    The non-linear part of the returned transform will be `this` transform, except if the ellipsoid is spherical. In the later case, `this` transform will be replaced by a simplified implementation.

    Overrides:
      `createMapProjection` in class `NormalizedProjection`
    Parameters:
      `factory` - the factory to use for creating the transform.
    Returns:
      the map projection from (λ,φ) to (x,y) coordinates.
    Throws:
      `FactoryException` - if an error occurred while creating a transform.
    See Also:
      - `ContextualParameters​.completeTransform(MathTransformFactory, MathTransform)`

  - ### transform

    public Matrix transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, boolean derivate) throws ProjectionException
    Converts the specified (θ,φ) coordinate (units in radians) and stores the result in `dstPts`. In addition, opportunistically computes the projection derivative if `derivate` is `true`.
    Specified by:
      `transform` in class `NormalizedProjection`
    Parameters:
      `srcPts` - the array containing the source point coordinate, as (longitude, latitude) angles in radians.
      `srcOff` - the offset of the single coordinate to be converted in the source array.
      `dstPts` - the array into which the converted coordinate is returned (may be the same than `srcPts`). Coordinates will be expressed in a dimensionless unit, as a linear distance on a unit sphere or ellipse.
      `dstOff` - the offset of the location of the converted coordinate that is stored in the destination array.
      `derivate` - `true` for computing the derivative, or `false` if not needed.
    Returns:
      the matrix of the projection derivative at the given source position, or `null` if the `derivate` argument is `false`.
    Throws:
      `ProjectionException` - if the coordinate can not be converted.
    See Also:
      - `AbstractMathTransform​.derivative(DirectPosition)`
      - `AbstractMathTransform​.transform(DirectPosition, DirectPosition)`
      - `MathTransforms​.derivativeAndTransform(MathTransform, double[], int, double[], int)`

  - ### inverseTransform

    protected void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff) throws ProjectionException
    Converts the specified (x,y) coordinates and stores the result in `dstPts` (angles in radians).
    Specified by:
      `inverseTransform` in class `NormalizedProjection`
    Parameters:
      `srcPts` - the array containing the source point coordinate, as linear distance on a unit sphere or ellipse.
      `srcOff` - the offset of the point to be converted in the source array.
      `dstPts` - the array into which the converted point coordinate is returned (may be the same than `srcPts`). Coordinates will be (longitude, latitude) angles in radians.
      `dstOff` - the offset of the location of the converted point that is stored in the destination array.
    Throws:
      `ProjectionException` - if the point can not be converted.