org.geotoolkit.referencing.operation.projection
Class Mercator

Object
  extended by FormattableObject
      extended by AbstractMathTransform
          extended by AbstractMathTransform2D
              extended by UnitaryProjection
                  extended by Mercator
All Implemented Interfaces:
Serializable, Formattable, Parameterized, LenientComparable, MathTransform, MathTransform2D

@Immutable
public class Mercator
extends UnitaryProjection

Mercator Cylindrical Projection (EPSG codes 9804, 9805). See the Mercator projection on MathWorld for an overview. See any of the following providers for a list of programmatic parameters:


Description
The parallels and the meridians are straight lines and cross at right angles; this projection thus produces rectangular charts. The scale is true along the equator (by default) or along two parallels equidistant of the equator (if a scale factor other than 1 is used).

This projection is used to represent areas close to the equator. It is also often used for maritime navigation because all the straight lines on the chart are loxodrome lines, i.e. a ship following this line would keep a constant azimuth on its compass.

This implementation handles both the 1 and 2 standard parallel cases. For Mercator_1SP (EPSG code 9804), the line of contact is the equator. For Mercator_2SP (EPSG code 9805) lines of contact are symmetrical about the equator.


Behavior at poles
The projection of 90°N gives positive infinity. The projection of 90°S gives negative infinity. Projection of a latitude outside the [-90-ε ... 90+ε]° range produces NaN.


References

Since:
1.0
Version:
3.18
Author:
André Gosselin (MPO), Martin Desruisseaux (MPO, IRD, Geomatys), Rueben Schulz (UBC), Simon Reynard (Geomatys), Rémi Maréchal (Geomatys)
See Also:
TransverseMercator, ObliqueMercator, Serialized Form
Module:
referencing/geotk-referencing (download)    View source code for this class

Nested Class Summary
 
Nested classes/interfaces inherited from class UnitaryProjection
UnitaryProjection.Parameters
 
Field Summary
 
Fields inherited from class UnitaryProjection
excentricity, excentricitySquared
 
Fields inherited from class FormattableObject
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE
 
Constructor Summary
protected Mercator(UnitaryProjection.Parameters parameters)
          Constructs a new map projection from the supplied parameters.
 
Method Summary
static MathTransform2D create(ParameterDescriptorGroup descriptor, ParameterValueGroup values)
          Creates a Mercator projection from the given parameters.
 Matrix derivative(Point2D point)
          Gets the derivative of this transform at a point.
 ParameterDescriptorGroup getParameterDescriptors()
          Returns the parameter descriptors for this unitary projection.
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).
protected  void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff)
          Transforms the specified (λ,φ) coordinates (units in radians) and stores the result in dstPts (linear distance on a unit sphere).
 void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          Converts a list of coordinate point ordinal values.
 
Methods inherited from class UnitaryProjection
computeHashCode, equals, finish, getParameterValues, getUnmarshalledParameters, inverse, resetWarnings, rollLongitude, unrollLongitude
 
Methods inherited from class AbstractMathTransform2D
getSourceDimensions, getTargetDimensions, transform
 
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, ensureNonNull, equals, formatWKT, getName, hashCode, isIdentity, rollLongitude, transform, transform, transform, transform
 
Methods inherited from class FormattableObject
getDefaultIndentation, print, setDefaultIndentation, toString, toWKT, toWKT, toWKT
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface MathTransform2D
createTransformedShape
 
Methods inherited from interface MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform
 

Constructor Detail

Mercator

protected Mercator(UnitaryProjection.Parameters parameters)
Constructs a new map projection from the supplied parameters.

Parameters:
parameters - The parameters of the projection to be created.
Method Detail

create

public static MathTransform2D create(ParameterDescriptorGroup descriptor,
                                     ParameterValueGroup values)
Creates a Mercator projection from the given parameters. The descriptor argument is usually one of the PARAMETERS constants defined in Mercator1SP or Mercator2SP, but is not restricted to. If a different descriptor is supplied, it is user's responsibility to ensure that it is suitable to a Mercator projection.

Parameters:
descriptor - Typically one of Mercator1SP.PARAMETERS, Mercator2SP.PARAMETERS or MillerCylindrical.PARAMETERS.
values - The parameter values of the projection to create.
Returns:
The map projection.
Since:
3.00

getParameterDescriptors

public ParameterDescriptorGroup getParameterDescriptors()
Returns the parameter descriptors for this unitary projection. Note that the returned descriptor is about the unitary projection, not the full one. Consequently the current implementation returns the descriptor of Mercator1SP in all cases, because the 2SP case is implemented as 1SP with a different scale factor.

Specified by:
getParameterDescriptors in interface Parameterized
Overrides:
getParameterDescriptors in class AbstractMathTransform2D
Returns:
The parameter descriptors for this math transform, or null.
See Also:
OperationMethod.getParameters()

transform

protected void transform(double[] srcPts,
                         int srcOff,
                         double[] dstPts,
                         int dstOff)
                  throws ProjectionException
Transforms the specified (λ,φ) coordinates (units in radians) and stores the result in dstPts (linear distance on a unit sphere).

Specified by:
transform in class UnitaryProjection
Parameters:
srcPts - The array containing the source point coordinate, as (longitude, latitude) angles in radians.
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). Ordinates will be in a dimensionless unit, as a linear distance on a unit sphere or ellipse.
dstOff - The offset of the location of the converted point that is stored in the destination array.
Throws:
ProjectionException - if the point can't be converted.

transform

public void transform(double[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
               throws TransformException
Converts a list of coordinate point ordinal values.
Note: We override the super-class method only as an optimization in the special case where the target coordinates are written at the same locations than the source coordinates. In such case, we can take advantage of the fact that the λ value is not modified by the unitary Mercator projection.

Specified by:
transform in interface MathTransform
Overrides:
transform in class UnitaryProjection
Parameters:
srcPts - The array containing the source point coordinates.
srcOff - The offset to the first point to be converted in the source array.
dstPts - The array into which the converted point coordinates are returned. May be the same than srcPts.
dstOff - The offset to the location of the first converted point that is stored in the destination array.
numPts - The number of point objects to be converted.
Throws:
TransformException - if a point can't be converted.

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 UnitaryProjection
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). Ordinates 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't be converted.

derivative

public Matrix derivative(Point2D point)
                  throws ProjectionException
Gets the derivative of this transform at a point.

Specified by:
derivative in interface MathTransform2D
Overrides:
derivative in class AbstractMathTransform
Parameters:
point - The coordinate point where to evaluate the derivative.
Returns:
The derivative at the specified point as a 2×2 matrix.
Throws:
ProjectionException - if the derivative can't be evaluated at the specified point.
Since:
3.18
See Also:
MathTransform2D.derivative(Point2D)


Copyright © 2009-2011 Geotoolkit.org. All Rights Reserved.