Class ObliqueMercator

All Implemented Interfaces:
Serializable, Parameterized, Lenient­Comparable, Math­Transform, Math­Transform2D

public class ObliqueMercator extends NormalizedProjection
Oblique Mercator projection (EPSG codes 9812, 9815). The Oblique Mercator projection can be seen as a generalization of Mercator and Transverse­Mercator projections when the central line is not along the equator or a meridian, respectively. This class covers also the Rectified Skew Orthomorphic (RSO) case.

There is different ways to specify the projection parameters:

  • Variant A (EPSG:9812) uses false easting/northing defined at the natural origin of the coordinate system.
  • Variant B (EPSG:9815) uses false easting/northing defined at the projection center.
  • ESRI "Two Points" variant defines the central line with two points instead of with an azimuth angle.
Azimuth values of 0 and ±90 degrees are allowed, but for such cases the Mercator and Transverse­Mercator projections should be preferred, both for performance and accuracy reasons.
Since:
1.0
See Also:

Defined in the sis-referencing module

  • Constructor Details

    • ObliqueMercator

      public ObliqueMercator(OperationMethod method, Parameters parameters)
      Creates an Oblique Mercator projection from the given parameters. The method argument can be the description of one of the following:
      • "Hotine Oblique Mercator (variant A)".
      • "Hotine Oblique Mercator (variant B)".
      • "Hotine Oblique Mercator two point center" (from ESRI).
      • "Hotine Oblique Mercator two point natural origin" (from ESRI).
      • "Rectified Skew Orthomorphic".
      Parameters:
      method - description of the projection parameters.
      parameters - the parameter values of the projection to create.
  • 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 dst­Pts. In addition, opportunistically computes the projection derivative if derivate is true.
      Specified by:
      transform in class Normalized­Projection
      Parameters:
      src­Pts - the array containing the source point coordinate, as (longitude, latitude) angles in radians.
      src­Off - the offset of the single coordinate to be converted in the source array.
      dst­Pts - the array into which the converted coordinate is returned (may be the same than src­Pts). Coordinates will be expressed in a dimensionless unit, as a linear distance on a unit sphere or ellipse.
      dst­Off - 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:
      Projection­Exception - if the coordinate can not be converted.
      See Also:
    • 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 dst­Pts (angles in radians).
      Specified by:
      inverse­Transform in class Normalized­Projection
      Parameters:
      src­Pts - the array containing the source point coordinate, as linear distance on a unit sphere or ellipse.
      src­Off - the offset of the point to be converted in the source array.
      dst­Pts - the array into which the converted point coordinate is returned (may be the same than src­Pts). Coordinates will be (longitude, latitude) angles in radians.
      dst­Off - the offset of the location of the converted point that is stored in the destination array.
      Throws:
      Projection­Exception - if the point can not be converted.