org.geotools.referencing.operation.projection |
package org.geotools.referencing.operation.projection
Basic implementations of {@linkplain org.geotools.referencing.operation.projection.MapProjection
map projections}. This package is mostly for internal purpose and should usually not be used
directly. Consider using {@link org.opengis.referencing.operation.MathTransformFactory} instead.
Axis units and orientation
Many {@linkplain org.opengis.referencing.crs.GeographicCRS geographic coordinate reference systems}
use axis in (latitude,longitude) order, but not all. Axis order, orientation
and units are CRS-dependent. For example some CRS use longitude values increasing toward
{@linkplain org.opengis.referencing.cs.AxisDirection#EAST East}, while some others use longitude
values increasing toward {@linkplain org.opengis.referencing.cs.AxisDirection#WEST West}. The axis
order must be specified in all CRS, and any method working with them should take their axis order and
units in account.
However, map projections defined in this package are transformation steps,
not final CRS. All projections defined in this package must complies with the OGC 01-009 specification. This
specification said (quoting section 10.6 at page 34):
Cartographic projection transforms are used by projected coordinate reference systems to map geographic coordinates
(e.g. Longitude and Latitude) into (X,Y) coordinates. These
(X,Y) coordinates can be imagined to lie on a plane, such as a paper map or a screen.
All cartographic projection transforms will have the following properties:
- Converts from (Longitude, Latitude) coordinates to (X,Y).
- All angles are assumed to be decimal degrees, and all distances are assumed to be meters.
- The domain should be a subset of {[-180,180)×(-90,90)}.
Although all cartographic projection transforms must have the properties listed above,
many projected coordinate reference systems have different properties. For example, in Europe some projected
coordinate reference systems use grads instead of decimal degrees, and often the base geographic coordinate reference
system is (Latitude, Longitude) instead of (Longitude, Latitude).
This means that the cartographic projected transform is often used as a single step in a series of transforms,
where the other steps change units and swap ordinates.
The Geotools implementation extends this rule to axis directions as well, i.e.
(X,Y) coordinates must be ({@linkplain org.opengis.referencing.cs.AxisDirection#EAST East},
{@linkplain org.opengis.referencing.cs.AxisDirection#NORTH North}) orientated. This rule implies a non-intuitive
behavior for the Transverse Mercator South Orientated projection, which still projects coordinates
with Y values increasing toward North. The real axis flip is performed by the rest of the CRS framework
upon {@linkplain org.opengis.referencing.cs.CoordinateSystemAxis coordinate system axis} inspection. In order to
get a real South orientated projection, the cartographic transform must be concatenated with an affine transform.
This is done automatically if the {@linkplain org.opengis.referencing.crs.ProjectedCRS projected CRS} is created
with the Geotools's {@link org.geotools.referencing.factory.FactoryGroup#createProjectedCRS createProjectedCRS}
convenience method with a South orientated {@linkplain org.opengis.referencing.cs.CoordinateSystem coordinate system}
in argument.
In order to reduce the risk of confusion, this package never defines south orientated
{@link org.geotools.referencing.operation.projection.MapProjection} implementations. The providers always
create south-orientated projections as a concatenation of their north-orientated variants with an affine
transform. This approach removes all ambiguity when reading a transform in
Well
Known Text (WKT) format, since only the north-orientated variant is used and the affine transform
coefficients tell exactly which axis flips are applied.
|
Java Source File Name | Type | Comment |
AlbersEqualArea.java | Class | Albers Equal Area Projection (EPSG code 9822). |
DirectCreationTest.java | Class | Tests projection equations as well as the integration with
MathTransformFactory . |
EquatorialOrthographic.java | Class | The equatorial case of the
Orthographic projection. |
EquatorialStereographic.java | Class | The USGS equatorial case of the
projection. |
EquidistantCylindrical.java | Class | Equidistant cylindrical projection (EPSG code 9823). |
HotineObliqueMercator.java | Class | Hotine Oblique Mercator projection. |
Krovak.java | Class | Krovak Oblique Conformal Conic projection (EPSG code 9819). |
LambertAzimuthalEqualArea.java | Class | Lambert Azimuthal Equal Area (EPSG code 9820).
References: |
LambertConformal.java | Class | Lambert Conical Conformal Projection. |
LambertConformal1SP.java | Class | Lambert Conical Conformal 1SP Projection. |
LambertConformal2SP.java | Class | Lambert Conical Conformal 2SP Projection. |
LambertConformalBelgium.java | Class | Lambert Conical Conformal 2SP Belgium Projection. |
LambertConformalESRI.java | Class | Lambert Conical Conformal Projection using ESRI parameters.
ESRI includes a
scale_factor parameter. |
MapProjection.java | Class | Base class for transformation services between ellipsoidal and cartographic projections.
This base class provides the basic feature needed for all methods (no need to overrides
methods). |
Mercator.java | Class | Mercator Cylindrical Projection. |
Mercator1SP.java | Class | Mercator Cylindrical 1SP Projection. |
Mercator2SP.java | Class | Mercator Cylindrical 2SP Projection. |
ModifiedParameterDescriptor.java | Class | A parameter descriptor identical to the supplied one except for the
default value. |
NewZealandMapGrid.java | Class | The NZMG (New Zealand Map Grid) projection. |
NewZealandMapGridTest.java | Class | Tests the
NewZealandMapGrid implementation. |
ObliqueMercator.java | Class | Oblique Mercator Projection. |
ObliqueOrthographic.java | Class | The oblique case of the
Orthographic projection. |
ObliqueStereographic.java | Class | Provides the transform equations for the Oblique Stereographic (EPSG code 9809).
The formulas used below are not from the EPSG, but rather those of the
"Oblique Stereographic Alternative" in the
libproj4 package
written by Gerald Evenden. |
Orthographic.java | Class | Orthographic Projection. |
OrthographicEquatorial.java | Class | The equatorial case of the
Orthographic projection. |
OrthographicOblique.java | Class | The oblique case of the
Orthographic projection. |
OrthographicPolar.java | Class | The polar case of the
Orthographic projection. |
PlateCarree.java | Class | Plate Carree (or Equirectangular) projection. |
PointOutsideEnvelopeException.java | Class | Thrown by
MapProjection when a map projection failed because the point is
outside the envelope of validity. |
PolarOrthographic.java | Class | The polar case of the
Orthographic projection. |
PolarStereographic.java | Class | The polar case of the
projection.
This default implementation uses USGS equation (i.e. |
ProjectionException.java | Class | Thrown by
MapProjection when a map projection failed. |
SouthOrientedTest.java | Class | Tests some south-oriented map projections. |
Stereographic.java | Class | Stereographic Projection. |
StereographicEquatorial.java | Class | The USGS equatorial case of the
projection. |
StereographicOblique.java | Class | The USGS oblique/equatorial case of the Stereographic projection. |
StereographicPolar.java | Class | The polar case of the
projection.
This default implementation uses USGS equation (i.e. |
StereographicUSGS.java | Class | The USGS oblique/equatorial case of the Stereographic projection. |
TransverseMercator.java | Class | Transverse Mercator Projection (EPSG code 9807). |