Class PassThroughTransform

  • All Implemented Interfaces:
    Serializable, MathTransform

    public class PassThroughTransform
    extends AbstractMathTransform
    implements 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
    Author:
    Martin Desruisseaux (IRD)
    See Also:
    DimensionFilter, Serialized Form
    • 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.
    • Constructor Detail

      • PassThroughTransform

        protected PassThroughTransform​(int firstAffectedOrdinate,
                                       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 firstAffectedOrdinate inclusive to dimTarget-numTrailingOrdinates exclusive.
    • Method Detail

      • create

        public static MathTransform create​(int firstAffectedOrdinate,
                                           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 firstAffectedOrdinate inclusive to dimTarget-numTrailingOrdinates exclusive.
        Returns:
        A pass through transform with the following dimensions:
         Source: firstAffectedOrdinate + subTransform.getSourceDimensions() + numTrailingOrdinates
         Target: firstAffectedOrdinate + subTransform.getTargetDimensions() + numTrailingOrdinates
             
      • getSubTransform

        public MathTransform getSubTransform()
        Returns the sub transform.
        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.
      • isIdentity

        public boolean isIdentity()
        Tests whether this transform does not move any points.
        Specified by:
        isIdentity in interface MathTransform
        Overrides:
        isIdentity in class AbstractMathTransform
        Returns:
        true if this MathTransform is an identity transform; false otherwise.
      • transform

        public void transform​(float[] srcPts,
                              int srcOff,
                              float[] dstPts,
                              int dstOff,
                              int numPts)
                       throws TransformException
        Transforms a list of coordinate point ordinal values.
        Specified by:
        transform in interface MathTransform
        Overrides:
        transform in class AbstractMathTransform
        Parameters:
        srcPts - the array containing the source point coordinates.
        srcOff - the offset to the first point to be transformed in the source array.
        dstPts - the array into which the transformed point coordinates are returned. May be the same than srcPts.
        dstOff - the offset to the location of the first transformed point that is stored in the destination array.
        numPts - the number of point objects to be transformed.
        Throws:
        TransformException - if a point can't be transformed. Some implementations will stop at the first failure, wile some other implementations will fill the untransformable points with NaN values, continue and throw the exception only at end. Implementations that fall in the later case should set the last completed transform to this.
      • transform

        public void transform​(double[] srcPts,
                              int srcOff,
                              double[] dstPts,
                              int dstOff,
                              int numPts)
                       throws TransformException
        Transforms a list of coordinate point ordinal values.
        Specified by:
        transform in interface MathTransform
        Parameters:
        srcPts - the array containing the source point coordinates.
        srcOff - the offset to the first point to be transformed in the source array.
        dstPts - the array into which the transformed point coordinates are returned. May be the same than srcPts.
        dstOff - the offset to the location of the first transformed point that is stored in the destination array.
        numPts - the number of point objects to be transformed.
        Throws:
        TransformException - if a point can't be transformed. Some implementations will stop at the first failure, wile some other implementations will fill the untransformable points with NaN values, continue and throw the exception only at end. Implementations that fall in the later case should set the last completed transform to this.
      • 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​(Object object)
        Compares the specified object with this math transform for equality.
        Overrides:
        equals in class AbstractMathTransform
        Parameters:
        object - The object to compare with this transform.
        Returns:
        true if the given object is a transform of the same class and if, given identical source position, the transformed position would be the equals.