public class TransverseMercator extends MapProjection
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.
References:
PJ_tmerc.c
, pj_mlfn.c
, pj_fwd.c
and pj_inv.c
.
Modifier and Type | Class and Description |
---|---|
static class |
TransverseMercator.Provider
The math transform
provider for a Transverse Mercator projection (EPSG code
9807).
|
static class |
TransverseMercator.Provider_SouthOrientated
The math transform
provider for a South Orientated Transverse Mercator
projection (EPSG code 9808).
|
MapProjection.AbstractProvider
centralMeridian, en0, en1, en2, en3, en4, excentricity, excentricitySquared, falseEasting, falseNorthing, globalScale, invertible, isSpherical, latitudeOfOrigin, LOGGER, scaleFactor, semiMajor, semiMinor, SKIP_SANITY_CHECKS
SINGLE_LINE
Modifier | Constructor and Description |
---|---|
protected |
TransverseMercator(ParameterValueGroup parameters)
Constructs a new map projection from the supplied parameters.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o)
Compares the specified object with this map projection for equality.
|
double |
getCentralMeridian()
Convenience method returning the meridian in the middle of current zone.
|
ParameterDescriptorGroup |
getParameterDescriptors()
Returns the parameter descriptors for this map projection.
|
protected double |
getToleranceForAssertions(double longitude,
double latitude)
Maximal error (in metres) tolerated for assertions, if enabled.
|
int |
getZone()
Convenience method computing the zone code from the central meridian.
|
int |
hashCode()
Returns a hash value for this projection.
|
protected Point2D |
inverseTransformNormalized(double x,
double y,
Point2D ptDst)
Transforms the specified (x,y) coordinates and stores the result in
ptDst . |
protected Point2D |
transformNormalized(double x,
double y,
Point2D ptDst)
Transforms the specified (λ,φ) coordinates (units in
radians) and stores the result in
ptDst (linear distance on a unit sphere). |
checkReciprocal, getParameterValues, getSourceDimensions, getTargetDimensions, inv_mlfn, inverse, mlfn, orthodromicDistance, resetWarnings, transform, transform, transform
createTransformedShape, derivative, derivative, ensureNonNull, formatWKT, getName, isIdentity, needCopy, normalizeAngle, rollLongitude, transform, transform, transform
cleanupThreadLocals, toString, toWKT, toWKT, toWKT, toWKT
createTransformedShape, derivative
derivative, isIdentity, toWKT, transform, transform, transform
protected TransverseMercator(ParameterValueGroup parameters) throws ParameterNotFoundException
parameters
- The parameter values in standard units.ParameterNotFoundException
- if a mandatory parameter is missing.public ParameterDescriptorGroup getParameterDescriptors()
MapProjection.getParameterValues()
, as well as arguments checking.getParameterDescriptors
in class MapProjection
null
.OperationMethod.getParameters()
protected Point2D transformNormalized(double x, double y, Point2D ptDst) throws ProjectionException
ptDst
(linear distance on a unit sphere).transformNormalized
in class MapProjection
x
- The longitude of the coordinate, in radians.y
- The latitude of the coordinate, in radians.ptDst
- the specified coordinate point that stores the result of transforming ptSrc
, or null
. Ordinates will be in a dimensionless unit, as a linear distance
on a unit sphere or ellipse.lambda
, phi
) and storing the
result in ptDst
.ProjectionException
- if the point can't be transformed.protected Point2D inverseTransformNormalized(double x, double y, Point2D ptDst) throws ProjectionException
ptDst
.inverseTransformNormalized
in class MapProjection
x
- The easting of the coordinate, linear distance on a unit sphere or ellipse.y
- The northing of the coordinate, linear distance on a unit sphere or ellipse.ptDst
- the specified coordinate point that stores the result of transforming ptSrc
, or null
. Ordinates will be in radians.x
, y
and storing the result
in ptDst
.ProjectionException
- if the point can't be transformed.protected double getToleranceForAssertions(double longitude, double latitude)
ProjectionException
will be thrown. Subclasses should override this method if they
need to relax the tolerance level.getToleranceForAssertions
in class MapProjection
longitude
- The longitude in decimal degrees.latitude
- The latitude in decimal degrees.public int getZone()
public double getCentralMeridian()
Double.NaN
if the case of the projection cannot be
determined.public int hashCode()
hashCode
in class MapProjection
public boolean equals(Object o)
MapProjection
equals
in class MapProjection
o
- The object to compare with this transform.true
if the given object is a transform of the same class and if, given
identical source position, the transformed position would be the equals.Copyright © 1996–2023 Geotools. All rights reserved.