org.geotoolkit.referencing.operation.projection
Class TransverseMercator

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

@Immutable
public class TransverseMercator
extends UnitaryProjection

Transverse Mercator projection (EPSG codes 9807, 9808). See the Mercator projection on MathWorld for an overview. See any of the following providers for a list of programmatic parameters:


Description
This is a cylindrical projection, in which the cylinder has been rotated 90°. Instead of being tangent to the equator (or to an other standard latitude), it is tangent to a central meridian. Deformation are more important as we are going further from the central meridian. The Transverse Mercator projection is appropriate for region which have a greater extent north-south than east-west.

The elliptical equations used here are series approximations, and their accuracy decreases as points move farther from the central meridian of the projection. The forward equations here are accurate to less than a millimetre ±10 degrees from the central meridian, a few millimetres ±15 degrees from the central meridian and a few centimetres ±20 degrees from the central meridian. The spherical equations are not approximations and should always give the correct values.

There are a number of versions of the Transverse Mercator projection including the Universal (UTM) and Modified (MTM) Transverses Mercator projections. In these cases the earth is divided into zones. For the UTM the zones are 6 degrees wide, numbered from 1 to 60 proceeding east from 180 degrees longitude, and between latitude 84 degrees North and 80 degrees South. The central meridian is taken as the center of the zone and the latitude of origin is the equator. A scale factor of 0.9996 and false easting of 500000 metres is used for all zones and a false northing of 10000000 metres is used for zones in the southern hemisphere.


References

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

Nested Class Summary
protected static class TransverseMercator.Parameters
          Parameters of a Transverse Mercator projection.
 
Field Summary
 
Fields inherited from class UnitaryProjection
excentricity, excentricitySquared
 
Fields inherited from class FormattableObject
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE
 
Constructor Summary
protected TransverseMercator(TransverseMercator.Parameters parameters)
          Constructs a new map projection from the supplied parameters.
 
Method Summary
static MathTransform2D create(ParameterDescriptorGroup descriptor, ParameterValueGroup values)
          Creates a Transverse Mercator projection from the given parameters.
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 (linear distance on a unit sphere).
 
Methods inherited from class UnitaryProjection
computeHashCode, equals, finish, getParameterValues, getUnmarshalledParameters, inverse, resetWarnings, rollLongitude, unrollLongitude
 
Methods inherited from class AbstractMathTransform2D
getParameterDescriptors, getSourceDimensions, getTargetDimensions, transform
 
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, derivative, ensureNonNull, equals, formatWKT, getName, hashCode, isIdentity, rollLongitude, transform, transform, transform, transform, transform
 
Methods inherited from class FormattableObject
getDefaultIndentation, print, setDefaultIndentation, toString, toWKT, toWKT, toWKT, toWKT
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface MathTransform2D
createTransformedShape, derivative
 
Methods inherited from interface MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform, transform
 

Constructor Detail

TransverseMercator

protected TransverseMercator(TransverseMercator.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 Transverse Mercator projection from the given parameters. The descriptor argument is usually TransverseMercator.PARAMETERS, but is not restricted to. If a different descriptor is supplied, it is user's responsibility to ensure that it is suitable to a Transverse Mercator projection.

Parameters:
descriptor - Typically TransverseMercator.PARAMETERS.
values - The parameter values of the projection to create.
Returns:
The map projection.
Since:
3.00

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 (linear distance on a unit sphere). In addition, opportunistically computes the projection derivative if derivate is true.

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 expressed 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.
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 point can't be converted.
Since:
3.20 (derived from 3.00)
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 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.


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