org.geotools.referencing.operation.transform
Class PassThroughTransform

java.lang.Object
  extended byorg.geotools.referencing.wkt.Formattable
      extended byorg.geotools.referencing.operation.transform.AbstractMathTransform
          extended byorg.geotools.referencing.operation.transform.PassThroughTransform
All Implemented Interfaces:
org.opengis.referencing.operation.MathTransform, java.io.Serializable

public class PassThroughTransform
extends AbstractMathTransform
implements java.io.Serializable

Transform which passes through a subset of ordinates to another transform. This allows transforms to operate on a subset of ordinates. For example, if you have (latitude,longitude,height) coordinates, then you may wish to convert the height values from feet to meters without affecting the latitude and longitude values.

Since:
2.0
Version:
$Id: PassThroughTransform.java 17672 2006-01-19 00:25:55Z desruisseaux $
Author:
Martin Desruisseaux
See Also:
DimensionFilter, Serialized Form

Nested Class Summary
 
Nested classes inherited from class org.geotools.referencing.operation.transform.AbstractMathTransform
AbstractMathTransform.Inverse
 
Field Summary
protected  int firstAffectedOrdinate
          Index of the first affected ordinate.
protected  int numTrailingOrdinates
          Number of unaffected ordinates after the affected ones.
protected  org.opengis.referencing.operation.MathTransform subTransform
          The sub transform.
 
Constructor Summary
protected PassThroughTransform(int firstAffectedOrdinate, org.opengis.referencing.operation.MathTransform subTransform, int numTrailingOrdinates)
          Create a pass through transform.
 
Method Summary
static org.opengis.referencing.operation.MathTransform create(int firstAffectedOrdinate, org.opengis.referencing.operation.MathTransform subTransform, int numTrailingOrdinates)
          Creates a transform which passes through a subset of ordinates to another transform.
 org.opengis.referencing.operation.Matrix derivative(org.opengis.spatialschema.geometry.DirectPosition point)
          Gets the derivative of this transform at a point.
 boolean equals(java.lang.Object object)
          Compares the specified object with this math transform for equality.
protected  java.lang.String formatWKT(Formatter formatter)
          Format the inner part of a Well Known Text (WKT) element.
 int[] getModifiedCoordinates()
          Ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through transform.
 int getSourceDimensions()
          Gets the dimension of input points.
 org.opengis.referencing.operation.MathTransform getSubTransform()
          Returns the sub transform.
 int getTargetDimensions()
          Gets the dimension of output points.
 int hashCode()
          Returns a hash value for this transform.
 org.opengis.referencing.operation.MathTransform inverse()
          Creates the inverse transform of this object.
 boolean isIdentity()
          Tests whether this transform does not move any points.
 void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          Transforms a list of coordinate point ordinal values.
 void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
          Transforms a list of coordinate point ordinal values.
 
Methods inherited from class org.geotools.referencing.operation.transform.AbstractMathTransform
createTransformedShape, derivative, ensureNonNull, getDimSource, getDimTarget, getParameterDescriptors, getParameterValues, needCopy, rollLongitude, transform, transform
 
Methods inherited from class org.geotools.referencing.wkt.Formattable
toString, toWKT, toWKT, 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
toWKT
 

Field Detail

firstAffectedOrdinate

protected final int firstAffectedOrdinate
Index of the first affected ordinate.


numTrailingOrdinates

protected final int numTrailingOrdinates
Number of unaffected ordinates after the affected ones. Always 0 when used through the strict OpenGIS API.


subTransform

protected final org.opengis.referencing.operation.MathTransform subTransform
The sub transform.

See Also:
getSubTransform()
Constructor Detail

PassThroughTransform

protected PassThroughTransform(int firstAffectedOrdinate,
                               org.opengis.referencing.operation.MathTransform subTransform,
                               int numTrailingOrdinates)
Create a pass through transform.

Parameters:
firstAffectedOrdinate - Index of the first affected ordinate.
subTransform - The sub transform.
numTrailingOrdinates - Number of trailing ordinates to pass through. Affected ordinates will range from inclusive to exclusive.
Method Detail

create

public static org.opengis.referencing.operation.MathTransform create(int firstAffectedOrdinate,
                                                                     org.opengis.referencing.operation.MathTransform subTransform,
                                                                     int numTrailingOrdinates)
Creates a transform which passes through a subset of ordinates to another transform. This allows transforms to operate on a subset of ordinates. For example, if you have (latitidue,longitude,height) coordinates, then you may wish to convert the height values from feet to meters without affecting the latitude and longitude values.

Parameters:
firstAffectedOrdinate - Index of the first affected ordinate.
subTransform - The sub transform.
numTrailingOrdinates - Number of trailing ordinates to pass through. Affected ordinates will range from inclusive to exclusive.
Returns:
A pass through transform with the following dimensions:
 Source: firstAffectedOrdinate + subTransform.getSourceDimensions() + numTrailingOrdinates
 Target: firstAffectedOrdinate + subTransform.getTargetDimensions() + numTrailingOrdinates

getSubTransform

public org.opengis.referencing.operation.MathTransform getSubTransform()
Returns the sub transform.

Since:
2.2

getModifiedCoordinates

public int[] getModifiedCoordinates()
Ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through transform. The returned index are for source coordinates.

Returns:
The modified coordinates.

getSourceDimensions

public int getSourceDimensions()
Gets the dimension of input points.

Specified by:
getSourceDimensions in interface org.opengis.referencing.operation.MathTransform
Specified by:
getSourceDimensions in class AbstractMathTransform

getTargetDimensions

public int getTargetDimensions()
Gets the dimension of output points.

Specified by:
getTargetDimensions in interface org.opengis.referencing.operation.MathTransform
Specified by:
getTargetDimensions in class AbstractMathTransform

isIdentity

public boolean isIdentity()
Tests whether this transform does not move any points.

Specified by:
isIdentity in interface org.opengis.referencing.operation.MathTransform
Overrides:
isIdentity in class AbstractMathTransform

transform

public void transform(float[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)
               throws org.opengis.referencing.operation.TransformException
Transforms a list of coordinate point ordinal values.

Specified by:
transform in interface org.opengis.referencing.operation.MathTransform
Overrides:
transform in class AbstractMathTransform
Throws:
org.opengis.referencing.operation.TransformException

transform

public void transform(double[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
               throws org.opengis.referencing.operation.TransformException
Transforms a list of coordinate point ordinal values.

Specified by:
transform in interface org.opengis.referencing.operation.MathTransform
Throws:
org.opengis.referencing.operation.TransformException

derivative

public org.opengis.referencing.operation.Matrix derivative(org.opengis.spatialschema.geometry.DirectPosition point)
                                                    throws org.opengis.referencing.operation.TransformException
Gets the derivative of this transform at a point.

Specified by:
derivative in interface org.opengis.referencing.operation.MathTransform
Overrides:
derivative in class AbstractMathTransform
Parameters:
point - The coordinate point where to evaluate the derivative.
Returns:
The derivative at the specified point (never ).
Throws:
org.opengis.referencing.operation.TransformException - if the derivative can't be evaluated at the specified point.

inverse

public org.opengis.referencing.operation.MathTransform inverse()
                                                        throws org.opengis.referencing.operation.NoninvertibleTransformException
Creates the inverse transform of this object.

Specified by:
inverse in interface org.opengis.referencing.operation.MathTransform
Overrides:
inverse in class AbstractMathTransform
Throws:
org.opengis.referencing.operation.NoninvertibleTransformException

hashCode

public int hashCode()
Returns a hash value for this transform. This value need not remain consistent between different implementations of the same class.

Overrides:
hashCode in class AbstractMathTransform

equals

public boolean equals(java.lang.Object object)
Compares the specified object with this math transform for equality.

Overrides:
equals in class AbstractMathTransform

formatWKT

protected java.lang.String formatWKT(Formatter formatter)
Format the inner part of a Well Known Text (WKT) element.

Overrides:
formatWKT in class AbstractMathTransform
Parameters:
formatter - The formatter to use.
Returns:
The WKT element name.
To Do:
The numTrailingOrdinates parameter is not part of OpenGIS specification. We should returns a more complex WKT when , using an affine transform to change the coordinates order.


Copyright © GeoTools. All Rights Reserved.