Class AbstractMathTransform2D
java.lang.Object
org.apache.sis.io.wkt.FormattableObject
org.apache.sis.referencing.operation.transform.AbstractMathTransform
org.apache.sis.referencing.operation.transform.AbstractMathTransform2D
- All Implemented Interfaces:
Parameterized
,LenientComparable
,org.opengis.referencing.operation.MathTransform
,org.opengis.referencing.operation.MathTransform2D
- Direct Known Subclasses:
LongitudeWraparound
,NormalizedProjection
,PoleRotation
,ResamplingGrid
,TransformAdapter2D
,ZonedGridSystem
public abstract class AbstractMathTransform2D
extends AbstractMathTransform
implements org.opengis.referencing.operation.MathTransform2D
Base class for math transforms that are known to be two-dimensional in all cases.
Two-dimensional math transforms are not required to extend this class,
however doing so may simplify their implementation.
The simplest way to implement this abstract class is to provide an implementation for the following methods only:
However, more performance may be gained by overriding the othertransform
methods as well.
Immutability and thread safety
All Apache SIS implementations ofMathTransform2D
are immutable and thread-safe.
It is highly recommended that third-party implementations be immutable and thread-safe too.
This means that unless otherwise noted in the javadoc, MathTransform2D
instances can
be shared by many objects and passed between threads without synchronization.
Serialization
MathTransform2D
may or may not be serializable, at implementation choices.
Most Apache SIS implementations are serializable, but the serialized objects are not guaranteed to be compatible
with future SIS versions. Serialization should be used only for short term storage or RMI between applications
running the same SIS version.- Since:
- 0.5
- Version:
- 1.2
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
Base class for implementation of inverse math transforms. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
Number of input and output dimensions of allAbstractMathTransform2D
, which is 2.Fields inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform
MAXIMUM_BUFFER_SIZE, MAXIMUM_FAILURES
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateTransformedShape
(Shape shape) Transforms the specified shape.(package private) static Shape
createTransformedShape
(org.opengis.referencing.operation.MathTransform2D mt, Shape shape, AffineTransform preTransform, AffineTransform postTransform, boolean horizontal) Transforms a geometric shape.org.opengis.referencing.operation.Matrix
derivative
(Point2D point) Gets the derivative of this transform at a point.(package private) static org.opengis.referencing.operation.Matrix
derivative
(AbstractMathTransform tr, Point2D point) Implementation ofderivative(DirectPosition)
shared by the inverse transform.final int
Returns the dimension of input points, which is always 2.final int
Returns the dimension of output points, which is always 2.org.opengis.referencing.operation.MathTransform2D
inverse()
Returns the inverse transform of this object.Transforms the specifiedptSrc
and stores the result inptDst
.(package private) static Point2D
transform
(AbstractMathTransform tr, Point2D ptSrc, Point2D ptDst) Implementation oftransform(Point2D, Point2D)
shared by the inverse transform.Methods inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform
beforeFormat, computeHashCode, derivative, equals, equals, formatTo, getContextualParameters, getDomain, getParameterDescriptors, getParameterValues, hashCode, isIdentity, isInverseEquals, mismatchedDimension, transform, transform, transform, transform, transform, transform, tryConcatenate
Methods inherited from class org.apache.sis.io.wkt.FormattableObject
print, toString, toString, toWKT
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.opengis.referencing.operation.MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform, transform
-
Field Details
-
DIMENSION
protected static final int DIMENSIONNumber of input and output dimensions of allAbstractMathTransform2D
, which is 2. We define this constant for clarity only; its value shall not be modified.Purpose: this is used for making clearer in the code when the literal 2 stands for the number of dimensions. It reduces confusion in contexts where the literal 2 also appear for other meanings than the number of dimensions.- Since:
- 1.2
- See Also:
-
-
Constructor Details
-
AbstractMathTransform2D
protected AbstractMathTransform2D()Constructor for subclasses.
-
-
Method Details
-
getSourceDimensions
public final int getSourceDimensions()Returns the dimension of input points, which is always 2.- Specified by:
getSourceDimensions
in interfaceorg.opengis.referencing.operation.MathTransform
- Specified by:
getSourceDimensions
in classAbstractMathTransform
- Returns:
- the number of dimensions of input points.
- See Also:
-
getTargetDimensions
public final int getTargetDimensions()Returns the dimension of output points, which is always 2.- Specified by:
getTargetDimensions
in interfaceorg.opengis.referencing.operation.MathTransform
- Specified by:
getTargetDimensions
in classAbstractMathTransform
- Returns:
- the number of dimensions of output points.
- See Also:
-
transform
public Point2D transform(Point2D ptSrc, Point2D ptDst) throws org.opengis.referencing.operation.TransformException Transforms the specifiedptSrc
and stores the result inptDst
. The default implementation invokesAbstractMathTransform.transform(double[], int, double[], int, boolean)
using a temporary array of doubles.- Specified by:
transform
in interfaceorg.opengis.referencing.operation.MathTransform2D
- Parameters:
ptSrc
- the coordinate tuple to be transformed.ptDst
- the coordinate tuple that stores the result of transformingptSrc
, ornull
if a new point shall be created.- Returns:
- the coordinate tuple after transforming
ptSrc
and storing the result inptDst
, or in a new point ifptDst
was null. - Throws:
org.opengis.referencing.operation.TransformException
- if the point cannot be transformed.- See Also:
-
MathTransform2D.transform(Point2D, Point2D)
-
transform
static Point2D transform(AbstractMathTransform tr, Point2D ptSrc, Point2D ptDst) throws org.opengis.referencing.operation.TransformException Implementation oftransform(Point2D, Point2D)
shared by the inverse transform.- Throws:
org.opengis.referencing.operation.TransformException
-
createTransformedShape
public Shape createTransformedShape(Shape shape) throws org.opengis.referencing.operation.TransformException Transforms the specified shape. The default implementation computes quadratic curves using three points for each line segment in the shape. The returned object is often aPath2D
, but may also be aLine2D
or aQuadCurve2D
if such simplification is possible.- Specified by:
createTransformedShape
in interfaceorg.opengis.referencing.operation.MathTransform2D
- Parameters:
shape
- shape to transform.- Returns:
- transformed shape, or
shape
if this transform is the identity transform. - Throws:
org.opengis.referencing.operation.TransformException
- if a transform failed.
-
createTransformedShape
static Shape createTransformedShape(org.opengis.referencing.operation.MathTransform2D mt, Shape shape, AffineTransform preTransform, AffineTransform postTransform, boolean horizontal) throws org.opengis.referencing.operation.TransformException Transforms a geometric shape. This method always copy transformed coordinates in a new object. The new object is often aPath2D
, but may also be aLine2D
or aQuadCurve2D
if such simplification is possible.- Parameters:
mt
- the math transform to use.shape
- the geometric shape to transform.preTransform
- an optional affine transform to apply before the transformation usingthis
, ornull
if none.postTransform
- an optional affine transform to apply after the transformation usingthis
, ornull
if none.horizontal
-true
for forcing parabolic equation.- Returns:
- the transformed geometric shape.
- Throws:
org.opengis.referencing.operation.TransformException
- if a transformation failed.
-
derivative
public org.opengis.referencing.operation.Matrix derivative(Point2D point) throws org.opengis.referencing.operation.TransformException Gets the derivative of this transform at a point. The default implementation performs the following steps:- Copy the coordinates in a temporary array and pass that array to the
AbstractMathTransform.transform(double[], int, double[], int, boolean)
method, with thederivate
boolean argument set totrue
. - If the latter method returned a non-null matrix, returns that matrix.
Otherwise throws
TransformException
.
- Specified by:
derivative
in interfaceorg.opengis.referencing.operation.MathTransform2D
- Parameters:
point
- the coordinate tuple where to evaluate the derivative.- Returns:
- the derivative at the specified point as a 2×2 matrix.
- Throws:
org.opengis.referencing.operation.TransformException
- if the derivative cannot be evaluated at the specified point.
- Copy the coordinates in a temporary array and pass that array to the
-
derivative
static org.opengis.referencing.operation.Matrix derivative(AbstractMathTransform tr, Point2D point) throws org.opengis.referencing.operation.TransformException Implementation ofderivative(DirectPosition)
shared by the inverse transform.- Throws:
org.opengis.referencing.operation.TransformException
-
inverse
public org.opengis.referencing.operation.MathTransform2D inverse() throws org.opengis.referencing.operation.NoninvertibleTransformExceptionReturns the inverse transform of this object. The default implementation returnsthis
if this transform is an identity transform, or throws an exception otherwise. Subclasses should override this method.- Specified by:
inverse
in interfaceorg.opengis.referencing.operation.MathTransform
- Specified by:
inverse
in interfaceorg.opengis.referencing.operation.MathTransform2D
- Overrides:
inverse
in classAbstractMathTransform
- Throws:
org.opengis.referencing.operation.NoninvertibleTransformException
-