# Package org.apache.sis.referencing.operation.transform

package org.apache.sis.referencing.operation.transform
Conversions or transformations of multi-dimensional coordinate tuples. `MathTransform` provides a single API for coordinate conversions or transformations, including map projections. Each `MathTransform` instances can:

- transform a single point,
- transform efficiently an array of coordinates,
- transform a Java2D `Shape` (`MathTransform2D` only),
- compute the transform derivative at a location (for advanced users),
- be concatenated in a conversion or transformation chain.

`MathTransform` are truly n-dimensional, but specialized implementations for 1D and 2D cases are provided for performance reasons or for inter-operability with Java2D. In the 2D case, Apache SIS provides instances of the standard `AffineTransform` class when possible.

This package does not include map projections, which are a special kind of transforms defined in their own internal package.

## Creating math transforms

`MathTransform` instances can be created either directly or indirectly. The recommended way is the indirect one: first find the coordinate operation (generally from a pair of source and target CRS), then invoke `CoordinateOperation​.getMathTransform()`. However, sophisticated users can also create math transforms explicitly from a group of parameter values using the math transform factory.

## Non-spatial coordinates

`MathTransform` usually performs conversions or transformations from points given in a source coordinate reference system to coordinate values for the same points in the target coordinate reference system. However, the conversions are not necessarily between CRS; a `MathTransform` can also be used for converting the sample values in a raster for example. Such kind of transforms are named transfer functions.

Since:
  0.5

- Related Packages
  Package
  Description
  org.apache.sis.referencing.operation
  Relationship between any two Coordinate Reference Systems (CRS).
  org.apache.sis.referencing.operation.builder
  Helper classes for creating Math Transforms from a set of points.
  org.apache.sis.referencing.operation.matrix
  Matrix implementations for spatiotemporal referencing.
- Class
  Description
  AbstractMathTransform
  Provides a default implementation for most methods required by the `MathTransform` interface.
  AbstractMathTransform.Inverse
  Base class for implementations of inverse math transforms.
  AbstractMathTransform1D
  Base class for math transforms that are known to be one-dimensional in all cases.
  AbstractMathTransform1D.Inverse
  Base class for implementation of inverse math transforms.
  AbstractMathTransform2D
  Base class for math transforms that are known to be two-dimensional in all cases.
  AbstractMathTransform2D.Inverse
  Base class for implementation of inverse math transforms.
  ContextualParameters
  The parameters that describe a sequence of normalize → non-linear kernel → denormalize transforms as a whole.
  ContextualParameters.MatrixRole
  Whether a matrix is used for normalization or denormalization before or after a non-linear operation.
  DatumShiftTransform
  Transforms between two CRS (usually geographic) based on different datum.
  DefaultMathTransformFactory
  Low level factory for creating math transforms.
  DomainDefinition
  Specification about how to estimate a domain of validity for transforms.
  EllipsoidToCentricTransform
  Transform from two- or three- dimensional ellipsoidal coordinates to geocentric or planetocentric coordinates.
  EllipsoidToCentricTransform.TargetType
  Whether the output coordinate system is Cartesian or spherical.
  EllipsoidToRadiusTransform
  Conversion of spherical coordinates from (λ,Ω) to (λ,Ω,R) with points assumed to be on an ellipsoid surface.
  InterpolatedGeocentricTransform
  Transforms between two geographic CRS by performing geocentric translations interpolated from a grid file.
  InterpolatedTransform
  Transforms between two CRS by performing translations interpolated from a grid file.
  IterationStrategy
  Strategy for iterating over the point arrays given to `AbstractMathTransform​.transform(…)` methods.
  LinearTransform
  A usually affine, or otherwise a projective transform, which convert coordinates using only linear equations.
  MathTransformBuilder
  Builder of a parameterized math transform using a method identified by a name or code.
  MathTransformProvider
  An object capable to create `MathTransform` instances from given parameter values.
  MathTransformProvider.Context
  The parameter values that define the transform to create, together with its context.
  MathTransforms
  Utility methods creating or working on `MathTransform` instances.
  MolodenskyTransform
  Two- or three-dimensional datum shift using the (potentially abridged) Molodensky transformation.
  PassThroughTransform
  Transform which passes through a subset of coordinates to another transform.
  PoleRotation
  Computes latitudes and longitudes on a sphere where the south pole has been moved to given geographic coordinates.
  TransferFunction
  The function converting raster sample values to geophysics values.
  TransformJoiner
  Handler used during concatenations for simplifying a single transform with its neighbor transforms.
  TransformSeparator
  Extracts a sub-transform from a given `MathTransform` and source or target dimension indices.
  WraparoundTransform
  Enforces coordinate values in the range of a wraparound axis (typically longitude).