org.geotoolkit.referencing.operation.provider.package-info Maven / Gradle / Ivy
/*
* Geotoolkit.org - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2008-2012, Open Source Geospatial Foundation (OSGeo)
* (C) 2009-2012, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
/**
* {@linkplain org.geotoolkit.referencing.operation.MathTransformProvider Providers} of
* {@linkplain org.geotoolkit.referencing.operation.transform transforms} and
* {@linkplain org.geotoolkit.referencing.operation.projection projections} implementations.
* This package is provided mostly for documentation purpose, since the javadoc of each provider
* lists the operation names, identifiers (e.g. EPSG codes) and parameters. The preferred way to
* get a provider is to use the {@link org.opengis.referencing.operation.MathTransformFactory} class.
*
* {@section Standard parameters}
*
* Each provider declares a single {@link org.opengis.parameter.ParameterDescriptorGroup} constant
* named {@code PARAMETERS}. Each group describes all the parameters expected by an operation method.
* The set of parameters varies for each projection, but the following can be considered typical:
*
*
* - A semi-major and semi-minor axis length in metres.
* - A central meridian and latitude of origin in decimal degrees.
* - A scale factor, which default to 1.
* - A false easting and false northing in metres, which default to 0.
*
*
* Each descriptor has many aliases, and those aliases may vary between different projections.
* For example the false easting parameter is usually called {@code "false_easting"}
* by OGC, while EPSG uses various names like "False easting" or "Easting at
* false origin".
*
* {@section Dynamic parameters}
*
* A few non-standard parameters are defined for compatibility reasons,
* but delegates their work to standard parameters. Those dynamic parameters are not listed in the
* {@linkplain org.opengis.referencing.parameter.ParameterValueGroup#values() parameter values}.
* Dynamic parameters are:
*
*
* - {@code "earth_radius"}, which copy its value to the {@code "semi_major"} and
* {@code "semi_minor"} parameter values.
* - {@code "inverse_flattening"}, which compute the {@code "semi_minor"} value from
* the {@code "semi_major"} parameter value.
* - {@code "standard_parallel"} expecting an array of type {@code double[]}, which copy
* its elements to the {@code "standard_parallel_1"} and {@code "standard_parallel_2"}
* parameter scalar values.
*
*
* The main purpose of those dynamic parameters is to support some less commonly used conventions
* without duplicating the most commonly used conventions. The alternative ways are used in NetCDF
* files for example, which often use spherical models instead than ellipsoidal ones.
*
* {@section Mandatory and optional parameters}
*
* Parameters are flagged as either mandatory or optional.
* A parameter may be mandatory and still have a default value. In the context of this package, "mandatory"
* means that the parameter is an essential part of the projection defined by standards. Such
* mandatory parameters will always appears in any Well Known Text (WKT) formatting,
* even if not explicitly set by the user. For example the central meridian is typically a mandatory
* parameter with a default value of 0° (the Greenwich meridian).
*
* Optional parameters, on the other hand, are often non-standard extensions. They will appear
* in WKT formatting only if the user defined explicitly a value which is different than the
* default value.
*
*
* {@section Geotoolkit.org extensions}
*
* Geotk defines a {@code "roll_longitude"} boolean parameter.
* If this parameter is set to {@code TRUE}, then any longitude outside the
* [-180 … 180)° range (upper value is exclusive) will be forced to that range by the
* addition or subtraction of some multiple of 360°. This applies to both the input of
* projections and the output of inverse projections.
*
* If this parameter is not provided, then the default behavior is to roll longitudes only if
* the central meridian is different than zero.
*
*
* {@section ESRI extensions}
*
* In Geotk, axis flips are inferred from the {@linkplain org.opengis.referencing.is.AxisOrientation
* axis orientation}. In Well Known Text (WKT), they are given by {@code AXIS} elements.
* But ESRI ignores {@code AXIS} elements and uses instead some additional parameters:
* {@code "X_Scale"}, {@code "Y_Scale"} and {@code "XY_Plane_Rotation"}.
* Those parameters are not OGC standards, but are nevertheless provided in Geotk for better
* inter-operability with ESRI definitions of coordinate reference systems.
*
* @author Martin Desruisseaux (Geomatys)
* @author Rueben Schulz (UBC)
* @version 3.20
*
* @see Geotk coordinate operations matrix
* @see Projections list on RemoteSensing.org
* @see org.geotoolkit.referencing.operation.MathTransformProvider
*
* @since 3.00
* @level advanced
* @module
*/
package org.geotoolkit.referencing.operation.provider;