Class TransverseMercator

Transverse Mercator Projection (EPSG code 9807). 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 futher from the central meridian. The Transverse Mercator
projection is appropriate for region wich 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 a less than a mm ±10 degrees from
the central meridian, a few mm ±15 degrees from the
central meridian and a few cm ±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 lats 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 500000m is used for all zones and a false northing of 10000000m
is used for zones in the southern hemisphere.

NOTE: formulas used below are not those of Snyder, but rather those
from the proj4 package of the USGS survey, which
have been reproduced verbatim. USGS work is acknowledged here.

getToleranceForAssertions

Maximal error (in metres) tolerated for assertions, if enabled. When assertions are enabled,
every direct projection is followed by an inverse projection, and the result is compared to
the original coordinate. If a distance greater than the tolerance level is found, then an
ProjectionException will be thrown. Subclasses should override this method if they
need to relax the tolerance level.

getZone

The zone number, using the scalefactor and false easting
to decide if this is a UTM or MTM case. Returns 0 if the
case of the projection cannot be determined.

getCentralMeridian

public double getCentralMeridian()

Convenience method returning the meridian in the middle of current zone. This meridian is
typically the central meridian. This method may be invoked to make sure that the central
meridian is correctly set.

Returns:

The central meridian, using the scalefactor and false easting
to decide if this is a UTM or MTM case. Returns Double.NaN
if the case of the projection cannot be determined.