Class TransferFunction

java.lang.Object
org.apache.sis.referencing.operation.transform.TransferFunction
All Implemented Interfaces:
Serializable, Cloneable

public class TransferFunction extends Object implements Cloneable, Serializable
The function converting raster sample values to geophysics values. The function is usually linear, but can sometimes be logarithmic or exponential. The latter occur most often when measuring concentration of something.
Supported transfer function types
TypeEquation
LINEAR y = scale⋅x + offset
LOGARITHMIC y = scale⋅logbase(x) + offset
EXPONENTIAL y = scale⋅basex + offset

Missing values

This TransferFunction class handles only the continuous part of transfer functions. This class does not handle missing values other than NaN. For a more complete class with support for non-NaN missing values, see org.apache.sis.coverage.SampleDimension.

Serialization

Serialized instances of this class 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.0
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
    The logarithmic base.
    private double
    The scale factor, or NaN if unknown.
    private double
    The scale factor, or NaN if unknown.
    private static final long
    For cross-version compatibility.
    private org.opengis.referencing.operation.MathTransform1D
    The transform created from above information, or null if not yet created.
    private org.opengis.metadata.content.TransferFunctionType
    Whether the function is linear, logarithmic or exponential.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a transfer function initialized to the identity transform.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns a clone of this transfer function.
    private org.opengis.referencing.operation.MathTransform
    createAffineTransform(org.opengis.referencing.operation.MathTransformFactory factory, boolean withScale)
    Returns a linear transform created using the given factory.
    org.opengis.referencing.operation.MathTransform
    createTransform(org.opengis.referencing.operation.MathTransformFactory factory)
    Creates a transform from sample values to geophysics values using the given factory.
    double
    Returns the logarithm or exponent base in the transfer function.
    double
    Returns the offset of the transfer function.
    double
    Returns the scale factor of the transfer function.
    org.opengis.referencing.operation.MathTransform1D
    Returns the transform from sample values to geophysics values, as specified by the current properties of this TransferFunction.
    org.opengis.metadata.content.TransferFunctionType
    Returns the transfer function type (linear, logarithmic or exponential).
    boolean
    Returns true if this transfer function is identity.
    void
    setBase(double base)
    Sets the logarithm or exponent base in the transfer function.
    private void
    Sets the scale and offset terms from the given function.
    void
    setOffset(double offset)
    Sets the offset of the transfer function.
    void
    setScale(double scale)
    Sets the scale factor of the transfer function.
    void
    setTransform(org.opengis.referencing.operation.MathTransform1D function)
    Sets the transform from sample values to geophysics values.
    void
    setType(org.opengis.metadata.content.TransferFunctionType type)
    Sets the transfer function type.
    Returns a string representation of this transfer function for debugging purpose.

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For cross-version compatibility.
      See Also:
    • type

      private org.opengis.metadata.content.TransferFunctionType type
      Whether the function is linear, logarithmic or exponential.
    • base

      private double base
      The logarithmic base. Ignored if type is LINEAR.
    • scale

      private double scale
      The scale factor, or NaN if unknown.
    • offset

      private double offset
      The scale factor, or NaN if unknown.
    • transform

      private org.opengis.referencing.operation.MathTransform1D transform
      The transform created from above information, or null if not yet created. Conversely, may be the transform given to the constructor from which above information were inferred.

      This field is serialized because the transform may be a user-provided one.

  • Constructor Details

    • TransferFunction

      public TransferFunction()
      Creates a transfer function initialized to the identity transform.
      See Also:
  • Method Details

    • isIdentity

      public boolean isIdentity()
      Returns true if this transfer function is identity. The function is identity if its type is linear, its scale is 1 and its offset is 0.
      Returns:
      whether this transfer function is identity.
      Since:
      1.0
    • getType

      public org.opengis.metadata.content.TransferFunctionType getType()
      Returns the transfer function type (linear, logarithmic or exponential).
      Returns:
      the transfer function type.
    • setType

      public void setType(org.opengis.metadata.content.TransferFunctionType type)
      Sets the transfer function type. The default value is TransferFunctionType.LINEAR.
      Parameters:
      type - the transfer function type.
    • getBase

      public double getBase()
      Returns the logarithm or exponent base in the transfer function. This value is always 1 for TransferFunctionType.LINEAR, and usually (but not necessarily) 10 for the logarithmic and exponential types.
      Returns:
      the logarithmic or exponent base.
    • setBase

      public void setBase(double base)
      Sets the logarithm or exponent base in the transfer function. This value is ignored for TransferFunctionType.LINEAR. For other supported types, the default value is 10.
      Parameters:
      base - the new logarithm or exponent base.
      Throws:
      IllegalArgumentException - if the given base is NaN, negative, zero or infinite.
    • getScale

      public double getScale()
      Returns the scale factor of the transfer function.
      Returns:
      the scale factor.
    • setScale

      public void setScale(double scale)
      Sets the scale factor of the transfer function. The default value is 1.
      Parameters:
      scale - the new scale factor.
      Throws:
      IllegalArgumentException - if the given scale is NaN, zero or infinite.
    • getOffset

      public double getOffset()
      Returns the offset of the transfer function.
      Returns:
      the offset.
    • setOffset

      public void setOffset(double offset)
      Sets the offset of the transfer function. The default value is 0.
      Parameters:
      offset - the new offset.
      Throws:
      IllegalArgumentException - if the given scale is NaN or infinite.
    • createAffineTransform

      private org.opengis.referencing.operation.MathTransform createAffineTransform(org.opengis.referencing.operation.MathTransformFactory factory, boolean withScale) throws org.opengis.util.FactoryException
      Returns a linear transform created using the given factory. This method is used only when the user specify explicitly a factory to use.
      Parameters:
      factory - the factory to use.
      withScale - true for using scale, or false for replacing the scale by zero.
      Throws:
      org.opengis.util.FactoryException
    • createTransform

      public org.opengis.referencing.operation.MathTransform createTransform(org.opengis.referencing.operation.MathTransformFactory factory) throws org.opengis.util.FactoryException
      Creates a transform from sample values to geophysics values using the given factory. This method constructs a transform mathematically equivalent to the one returned by getTransform(), but allows to specify another factory than the default one.
      Parameters:
      factory - the factory to use for creating a transform.
      Returns:
      the transform from sample to geophysics values.
      Throws:
      org.opengis.util.FactoryException - if the given factory failed to create a transform.
      Since:
      1.0
    • getTransform

      public org.opengis.referencing.operation.MathTransform1D getTransform()
      Returns the transform from sample values to geophysics values, as specified by the current properties of this TransferFunction.
      Returns:
      the transform from sample to geophysics values.
    • setTransform

      public void setTransform(org.opengis.referencing.operation.MathTransform1D function) throws IllegalArgumentException
      Sets the transform from sample values to geophysics values. This method infers the base, scale and offset values from the given transform.
      Parameters:
      function - the transform to set.
      Throws:
      IllegalArgumentException - if this method does not recognize the given transform.
    • setLinearTerms

      private void setLinearTerms(LinearTransform function) throws IllegalArgumentException
      Sets the scale and offset terms from the given function.
      Parameters:
      function - the transform to set.
      Throws:
      IllegalArgumentException - if this method does not recognize the given transform.
    • clone

      public TransferFunction clone()
      Returns a clone of this transfer function.
      Overrides:
      clone in class Object
      Returns:
      a clone of this transfer function.
      Since:
      0.8
    • toString

      public String toString()
      Returns a string representation of this transfer function for debugging purpose. The string returned by this method may change in any future SIS version.
      Overrides:
      toString in class Object
      Returns:
      a string representation of this transfer function.