|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
ObjectFormattableObject
AbstractMathTransform
AbstractMathTransform2D
UnitaryProjection
ObliqueMercator
@Immutable public class ObliqueMercator
Oblique Mercator projection (EPSG code 9815). See the Mercator projection on MathWorld for an overview. See any of the following providers for a list of programmatic parameters:
Description
The Oblique Mercator projection is a conformal, oblique, cylindrical projection with
the cylinder touching the ellipsoid (or sphere) along a great circle path (the central line).
The Mercator and Transverse Mercator projections
can be thought of as special cases of the oblique mercator, where the central line is along the
equator or a meridian, respectively. The Oblique Mercator projection has been used in
Switzerland, Hungary, Madagascar, Malaysia, Borneo and the panhandle of Alaska.
The Oblique Mercator projection uses a (U,V) coordinate system, with the U axis along the central line. During the forward projection, coordinates from the ellipsoid are projected conformally to a sphere of constant total curvature, called the "aposphere", before being projected onto the plane. The projection coordinates are further converted to a (X,Y) coordinate system by rotating the calculated (u,v) coordinates to give output (x,y) coordinates. The rotation value is usually the same as the projection azimuth (the angle, east of north, of the central line), but some cases allow a separate rotation parameter.
There are two forms of the oblique mercator, differing in the origin of their grid coordinates.
The Hotine Oblique Mercator (EPSG code 9812) has grid coordinates start at the
intersection of the central line and the equator of the aposphere. The Oblique Mercator
(EPSG code 9815) is the same, except the grid coordinates begin at the central point (where the
latitude of center and central line intersect). ESRI separates these two case by appending
"Natural_Origin" (for the "Hotine_Oblique_Mercator") and "Center"
(for the "Oblique_Mercator") to the projection names.
Two different methods are used to specify the central line for the oblique mercator:
1) a central point and an azimuth, east of north, describing the central line and
2) two points on the central line. The EPSG does not use the two point method, while ESRI
separates the two cases by putting "Azimuth" and "Two_Point" in their projection
names. Both cases use the point where the "latitude_of_center" parameter crosses the
central line as the projection's central point. The "central_meridian" is not a
projection parameter, and is instead calculated as the intersection between the central
line and the equator of the aposphere.
For the azimuth method, the central latitude cannot be ±90 degrees and the central line cannot be at a maximum or minimum latitude at the central point. In the two point method, the latitude of the first and second points cannot be equal. Also, the latitude of the first point and central point cannot be ±90 degrees. Furthermore, the latitude of the first point cannot be 0 and the latitude of the second point cannot be -90 degrees. A change of 10-7 radians can allow calculation at these special cases. Snyder's restriction of the central latitude being 0 has been removed, since the equations appear to work correctly in this case.
Azimuth values of 0 and ±90 degrees are allowed (and used in Hungary and Switzerland), though these cases would usually use a Mercator or Transverse Mercator projection instead. Azimuth values > 90 degrees cause errors in the equations.
The oblique mercator is also called the "Rectified Skew Orthomorphic" (RSO). It
appears that the only difference from the oblique mercator is that the RSO allows the rotation
from the (U,V) to (X,Y) coordinate system to be
different from the azimuth. This separate parameter is called "rectified_grid_angle"
(or "XY_Plane_Rotation" by ESRI) and is also included in the EPSG's parameters for the
Oblique Mercator and Hotine Oblique Mercator. The rotation parameter is optional in all the
non-two point projections and will be set to the azimuth if not specified.
Projection cases and aliases implemented by the ObliqueMercator are:
| Name | Authority | Remarks |
|---|---|---|
Oblique_Mercator | EPSG:9815 | grid coordinates begin at the central point,
has "rectified_grid_angle" parameter. |
Hotine_Oblique_Mercator_Azimuth_Center | ESRI | grid coordinates begin at the central point. |
Rectified_Skew_Orthomorphic_Center | ESRI | grid coordinates begin at the central point,
has "rectified_grid_angle" parameter. |
Hotine_Oblique_Mercator | EPSG:9812 | grid coordinates begin at the interseciton of the central line and aposphere equator,
has "rectified_grid_angle" parameter. |
Hotine_Oblique_Mercator_Azimuth_Natural_Origin | ESRI | grid coordinates begin at the interseciton of the central line and aposphere equator. |
Rectified_Skew_Orthomorphic_Natural_Origin | ESRI | grid coordinates begin at the interseciton of the central line and aposphere equator,
has "rectified_grid_angle" parameter. |
Hotine_Oblique_Mercator_Two_Point_Center | ESRI | grid coordinates begin at the central point. |
Hotine_Oblique_Mercator_Two_Point_Natural_Origin | ESRI | grid coordinates begin at the intersection of the central line and aposphere equator. |
References
PJ_omerc.c, pj_tsfn.c,
pj_fwd.c, pj_inv.c and lib_proj.h
Mercator,
TransverseMercator,
Serialized Form
| referencing/geotk-referencing (download) | View source code for this class |
| Nested Class Summary | |
|---|---|
protected static class |
ObliqueMercator.Parameters
Parameters used in Oblique Mercator projections. |
| Field Summary |
|---|
| Fields inherited from class UnitaryProjection |
|---|
excentricity, excentricitySquared |
| Fields inherited from class FormattableObject |
|---|
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE |
| Constructor Summary | |
|---|---|
protected |
ObliqueMercator(ObliqueMercator.Parameters parameters)
Constructs a new map projection from the supplied parameters. |
| Method Summary | |
|---|---|
static MathTransform2D |
create(ParameterDescriptorGroup descriptor,
ParameterValueGroup values)
Creates an Oblique Mercator projection from the given parameters. |
boolean |
equals(Object object,
ComparisonMode mode)
Compares the given object with this transform for equivalence. |
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). |
| Methods inherited from class UnitaryProjection |
|---|
computeHashCode, finish, getParameterValues, getUnmarshalledParameters, inverse, resetWarnings, rollLongitude, transform, 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 |
| 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, derivative |
| Methods inherited from interface MathTransform |
|---|
derivative, isIdentity, toWKT, transform, transform, transform, transform |
| Constructor Detail |
|---|
protected ObliqueMercator(ObliqueMercator.Parameters parameters)
parameters - The parameters of the projection to be created.| Method Detail |
|---|
public static MathTransform2D create(ParameterDescriptorGroup descriptor,
ParameterValueGroup values)
PARAMETERS constant defined in
ObliqueMercator or a subclass,
but is not restricted to. If a different descriptor is supplied, it is user's
responsibility to ensure that it is suitable to an Oblique Mercator projection.
descriptor - Typically
ObliqueMercator.PARAMETERS,
or the parameters from one of its subclasses.values - The parameter values of the projection to create.
protected void transform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff)
throws ProjectionException
dstPts (linear distance
on a unit sphere).
transform in class UnitaryProjectionsrcPts - 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.
ProjectionException - if the point can't be converted.
protected void inverseTransform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff)
throws ProjectionException
dstPts (angles in radians).
inverseTransform in class UnitaryProjectionsrcPts - 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.
ProjectionException - if the point can't be converted.
public boolean equals(Object object,
ComparisonMode mode)
equals in interface LenientComparableequals in class UnitaryProjectionobject - The object to compare with this unitary projection for equivalence.mode - The strictness level of the comparison. Default to STRICT.
true if the given object is equivalent to this unitary projection.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||