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:

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.