Class InterpolateFunction
- Object
-
- InterpolateFunction
-
- All Implemented Interfaces:
Expression,Function
public class InterpolateFunction extends Object implements Function
This is an implemenation of the Interpolate function as defined by OGC Symbology Encoding (SE) 1.1 specification.The first parameter should be either the name of a numeric feature property or, if this function is being used as a raster colormap, the String "RasterData" (case-insensitive).
Following this there should be a sequence of interpolation points, each of which is described by two parameters: the first a datum and the second a return value. In the SE speicification these parameters are expected to be Literals but in this implementation more general Expressions are also supported.
Two optional parameters can be provided following the interpolation points: A "method" parameter which can take the values "numeric" or "color" and a "mode" parameter which can take the values "linear", "cosine" or "cubic" (Note: it would make more sense if these terms were reversed but we are adhering to their use as published in the OGC specification).
Number of points and interpolation modes
- Linear and cosine interpolation each require at least two interpolation points to be supplied.
- Cubic interpolation normally requires at least four points with at least two points either side of the value being interpolated. In this function, deal generously with values that lie in the first or last interpolation segment by adding a duplicate of the first or last point as an extra point. This means that it is allowed (though not necessarily sensible) to use cubic interpolation with only three points.
- If only two points are supplied but cubic interpolation is specified, the function will fall back to linear interpolation.
- For all interpolation modes, incoming values outside the range of the interpolation points will be mapped to the value of the closest point (min or max).
- The function will accept a single interpolation point, but all incoming values will simply be mapped to the value of that point regardless of the type of interpolation requested.
- If no interpolation points are supplied, an
Exceptionis thrown.
- Author:
- Michael Bedward, Johann Sorel (Geomatys)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classInterpolateFunction.ConstantColorPointprotected classInterpolateFunction.ConstantNumericPointprotected classInterpolateFunction.ConstantPointprotected classInterpolateFunction.DynamicPointprotected classInterpolateFunction.InterpPoint
-
Field Summary
Fields Modifier and Type Field Description protected List<InterpolateFunction.InterpPoint>interpPointsstatic StringMETHOD_COLORUse as a literal value to indicate interpolation methodstatic StringMETHOD_NUMERICUse as a literal value to indicate interpolation methodstatic StringMODE_COSINEUse as a literal value to indicate interpolation modestatic StringMODE_CUBICUse as a literal value to indicate interpolation modestatic StringMODE_LINEARUse as a literal value to indicate interpolation modestatic FunctionNameNAMEMake the instance of FunctionName available in a consistent spot.static StringRASTER_DATAUse as a PropertyName when defining a color map.-
Fields inherited from interface Expression
NIL
-
-
Constructor Summary
Constructors Constructor Description InterpolateFunction()InterpolateFunction(List<Expression> parameters, Literal fallback)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Objectaccept(ExpressionVisitor visitor, Object extraData)Accepts a visitor.booleanequals(Object o)Objectevaluate(Object object)Evaluates the given expression based on the content of the given object.<T> Tevaluate(Object object, Class<T> context)Evaluates the given expressoin based on the content of the given object and the context type.LiteralgetFallbackValue()The value of the fallbackValue attribute is used as a default value, if the SE implementation does not support the function.FunctionNamegetFunctionName()Access to the FunctionName description as used in a FilterCapabilities document.StringgetName()Returns the name of the function to be called.List<Expression>getParameters()Returns the list subexpressions that will be evaluated to provide the parameters to the function.inthashCode()StringtoString()Creates a String representation of this Function with the function name and the arguments.
-
-
-
Field Detail
-
MODE_LINEAR
public static final String MODE_LINEAR
Use as a literal value to indicate interpolation mode- See Also:
- Constant Field Values
-
MODE_COSINE
public static final String MODE_COSINE
Use as a literal value to indicate interpolation mode- See Also:
- Constant Field Values
-
MODE_CUBIC
public static final String MODE_CUBIC
Use as a literal value to indicate interpolation mode- See Also:
- Constant Field Values
-
METHOD_NUMERIC
public static final String METHOD_NUMERIC
Use as a literal value to indicate interpolation method- See Also:
- Constant Field Values
-
METHOD_COLOR
public static final String METHOD_COLOR
Use as a literal value to indicate interpolation method- See Also:
- Constant Field Values
-
interpPoints
protected volatile List<InterpolateFunction.InterpPoint> interpPoints
-
RASTER_DATA
public static final String RASTER_DATA
Use as a PropertyName when defining a color map. The "Raterdata" is expected to apply to only a single band;- See Also:
- Constant Field Values
-
NAME
public static final FunctionName NAME
Make the instance of FunctionName available in a consistent spot.
-
-
Constructor Detail
-
InterpolateFunction
public InterpolateFunction()
-
InterpolateFunction
public InterpolateFunction(List<Expression> parameters, Literal fallback)
-
-
Method Detail
-
getName
public String getName()
Description copied from interface:FunctionReturns the name of the function to be called. For example, this might be "cos" or "atan2".You can use this name to look up the number of required parameters in a FilterCapabilities data structure. For the specific meaning of the required parameters you will need to consult the documentation.
-
getFunctionName
public FunctionName getFunctionName()
Description copied from interface:FunctionAccess to the FunctionName description as used in a FilterCapabilities document.- Specified by:
getFunctionNamein interfaceFunction- Returns:
- FunctionName description, if available.
-
getParameters
public List<Expression> getParameters()
Description copied from interface:FunctionReturns the list subexpressions that will be evaluated to provide the parameters to the function.- Specified by:
getParametersin interfaceFunction
-
accept
public Object accept(ExpressionVisitor visitor, Object extraData)
Description copied from interface:ExpressionAccepts a visitor. Subclasses must implement with a method whose content is the following:return visitor.visit(this, extraData);
- Specified by:
acceptin interfaceExpression
-
evaluate
public Object evaluate(Object object)
Description copied from interface:ExpressionEvaluates the given expression based on the content of the given object.- Specified by:
evaluatein interfaceExpression- Returns:
- computed value
-
evaluate
public <T> T evaluate(Object object, Class<T> context)
Evaluates the given expressoin based on the content of the given object and the context type.The
contextparameter is used to control the type of the result of the expression. A particular expression may not be able to evaluate to an instance ofcontext. Therefore to be safe calling code should do a null check on the return value of this method, and callExpression.evaluate(Object)if neccessary. Example:Object input = ...; String result = expression.evaluate( input, String.class ); if ( result == null ) { result = expression.evalute( input ).toString(); } ...Implementations that can not return a result as an instance of
contextshould returnnull.When
contextis unspecified (i.e.nullorObject.class), it'll be derived from themethodparameter, asjava.awt.Color.classwhenmethod == COLOR, and asjava.lang.Doublewhenmethod == NUMERIC.- Specified by:
evaluatein interfaceExpression- Type Parameters:
T- The type of the returned object.- Parameters:
object- The object to evaluate the expression against.context- The type of the resulting value of the expression.- Returns:
- Evaluates the given expression based on the content of the given object an an instance of
context. - Throws:
IllegalArgumentException- ifcontext == java.awt.Color.classandmethod != COLOR
-
getFallbackValue
public Literal getFallbackValue()
Description copied from interface:FunctionThe value of the fallbackValue attribute is used as a default value, if the SE implementation does not support the function. If the implementation supports the function, then the result value is determined by executing the function.- Specified by:
getFallbackValuein interfaceFunction- Returns:
- Optional literal to use if an implementation for this function is not available.
-
toString
public String toString()
Creates a String representation of this Function with the function name and the arguments.
-
-