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

# Class SatelliteTracking

Object
FormattableObject
AbstractMathTransform
AbstractMathTransform2D
NormalizedProjection
SatelliteTracking

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

public class SatelliteTracking extends NormalizedProjection
Satellite-Tracking projection. This projection has been developed in 1977 by Snyder and has no associated EPSG code. This projection is neither conformal or equal-area, but has the property that ground tracks for satellites orbiting the Earth with the same orbital parameters are shown as straight lines on the map. Other properties are (Snyder 1987):

- All meridians are equally spaced straight lines. They are parallel on cylindrical form and converging to a common point on conical form.
- All parallels are straight but unequally spaced. They are parallel on cylindrical form and are concentric circular arcs on conical form.
- Conformality occurs along two chosen parallels. Scale is correct along one of these parameters on the conical form and along both on the cylindrical form.

## Limitations

This map projection supports only circular orbits. The Earth is assumed spherical. Areas close to poles can not be mapped.

## References

John P. Snyder., 1987. Map Projections - A Working Manual chapter 28: Satellite-tracking projections.

Since:
  1.1
See Also:
  - 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
  `SatelliteTracking(OperationMethod method, Parameters parameters)`
  Creates a Satellite Tracking projection from the given parameters.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff)`
  Transforms 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, createMapProjection, 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

  - ### SatelliteTracking

    public SatelliteTracking(OperationMethod method, Parameters parameters)
    Creates a Satellite Tracking projection from the given parameters.
    Parameters:
      `method` - description of the projection parameters.
      `parameters` - the parameter values of the projection to create.
    Throws:
      `InvalidParameterValueException` - if some parameters have incompatible values.

- ## Method Details

  - ### 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`. The results must be multiplied by the denormalization matrix before to get linear distances.

    The y axis lies along the central meridian λ₀, y increasing northerly, and x axis intersects perpendicularly at latitude of origin φ₀, x increasing easterly.

    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 coordinates 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
    Transforms 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 coordinates can not be converted.