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

package org.apache.sis.referencing.operation.transform
Conversions or transformations of multi-dimensional coordinate points. `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 projection 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

Defined in the `sis-referencing` module

- 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.
  org.apache.sis.referencing.operation.projection
  Map projection implementations.
- 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.
  DefaultMathTransformFactory.Context
  Source and target coordinate systems for which a new parameterized transform is going to be used.
  EllipsoidToCentricTransform
  Transform from two- or three- dimensional ellipsoidal coordinates to (geo)centric coordinates.
  EllipsoidToCentricTransform.TargetType
  Whether the output coordinate system is Cartesian or Spherical.
  InterpolatedGeocentricTransform
  Transforms between two geographic CRS by performing geocentric translations interpolated from a grid file.
  InterpolatedMolodenskyTransform
  Transforms between two geographic CRS by performing geocentric translations interpolated from a grid file, but using Molodensky approximation.
  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.
  MathTransformProvider
  An object capable to create `MathTransform` instances from given parameter values.
  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.
  TransferFunction
  The function converting raster sample values to geophysics values.
  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).