Class DefaultParameterValue<T>

java.lang.Object
org.apache.sis.io.wkt.FormattableObject
org.apache.sis.parameter.DefaultParameterValue<T>
Type Parameters:
T - the type of the value stored in this parameter.
All Implemented Interfaces:
Serializable, Cloneable, LenientComparable, org.opengis.parameter.GeneralParameterValue, org.opengis.parameter.ParameterValue<T>
Direct Known Subclasses:
ContextualParameter, MapProjectionParameters.EarthRadius, MapProjectionParameters.InverseFlattening, MapProjectionParameters.IsIvfDefinitive, MapProjectionParameters.StandardParallel, UnmodifiableParameterValue

public class DefaultParameterValue<T> extends FormattableObject implements org.opengis.parameter.ParameterValue<T>, LenientComparable, Serializable, Cloneable
A single parameter value used by an operation method. ParameterValue instances are elements in a parameter value group, in a way similar to Map.Entry instances in a java.util.Map.

In the context of coordinate operations, most parameter values are numeric and can be obtained by the intValue() or doubleValue() methods. But other types of parameter values are possible and can be handled by the more generic getValue() and setValue(Object) methods. All xxxValue() methods in this class are convenience methods converting the value from Object to some commonly used types. Those types are specified in ISO 19111 as an union of attributes, listed below with the corresponding getter and setter methods:

Mapping from ISO attributes to getters and setters
ISO attribute Java type Getter method Setter method
Object getValue() setValue(Object)
stringValue String stringValue() setValue(Object)
value double doubleValue() setValue(double)
double doubleValue(Unit) setValue(double, Unit)
valueList double[] doubleValueList() setValue(Object)
double[] doubleValueList(Unit) setValue(double[], Unit)
integerValue int intValue() setValue(int)
integerValueList int[] intValueList() setValue(Object)
booleanValue boolean booleanValue() setValue(boolean)
valueFile URI valueFile() setValue(Object)
valueFileCitation Citation getValue() setValue(Object)
The type and constraints on parameter values are given by the descriptor, which is specified at construction time. The parameter type can be fetch with the following idiom:

Instantiation

A parameter descriptor must be defined before parameter value can be created. Descriptors are usually predefined by map projection or process providers. Given a descriptor, a parameter value can be created by a call to the DefaultParameterValue(ParameterDescriptor) constructor or by a call to the ParameterDescriptor.createValue() method. The latter is recommended since it allows descriptors to return specialized implementations.

Implementation note for subclasses

All read and write operations (except constructors, equals(Object) and hashCode()) ultimately delegates to the following methods:
  • All getter methods will invoke getValue() and getUnit() (if needed), then perform their processing on the values returned by those methods.
  • All setter methods delegate to the setValue(Object, Unit) method.
Consequently, the above-cited methods provide single points that subclasses can override for modifying the behavior of all getter and setter methods.
Since:
0.4
Version:
1.3
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private org.opengis.parameter.ParameterDescriptor<T>
    The definition of this parameter.
    private static final long
    Serial number for inter-operability with different versions.
    protected javax.measure.Unit<?>
    The unit of measure for the value, or null if it does not apply.
    protected T
    The value, or null if undefined.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Default constructor for JAXB only.
     
    DefaultParameterValue(org.opengis.parameter.ParameterDescriptor<T> descriptor)
    Creates a parameter value from the specified descriptor.
     
    DefaultParameterValue(org.opengis.parameter.ParameterValue<T> parameter)
    Creates a new instance initialized with the values from the specified parameter object.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Returns the boolean value of this parameter.
    private static Number
    cast(Number value, Class<?> expectedClass)
    Converts the given number to the expected type, with a special case for conversion from float to double type.
    Returns a clone of this parameter value.
    double
    Returns the numeric value of this parameter.
    double
    doubleValue(javax.measure.Unit<?> unit)
    Returns the numeric value of this parameter in the given unit of measure.
    double[]
    Returns an ordered sequence of two or more numeric values of this parameter, where each value has the same associated unit of measure.
    double[]
    doubleValueList(javax.measure.Unit<?> unit)
    Returns an ordered sequence of numeric values in the specified unit of measure.
    final boolean
    equals(Object object)
    Compares the specified object with this parameter for equality.
    boolean
    equals(Object object, ComparisonMode mode)
    Compares the specified object with this parameter for equality.
    protected String
    formatTo(Formatter formatter)
    Formats this parameter as a Well Known Text Parameter[…] element.
    private String
    Formats an error message for illegal method call for the current value type.
    private javax.measure.UnitConverter
    getConverterTo(javax.measure.Unit<?> unit)
    Returns the converter to be used by doubleValue(Unit) and doubleValueList(Unit).
    org.opengis.parameter.ParameterDescriptor<T>
    Returns the definition of this parameter.
    javax.measure.Unit<?>
    Returns the unit of measure of the parameter value.
    Returns the parameter value as an object.
    private Object
    Invoked by JAXB for obtaining the object to marshal.
    private static boolean
    Returns true if the given formatter has contextual units, in which case the WKT format can omit the unit of measurement.
    int
    Returns a hash value for this parameter.
    int
    Returns the integer value of this parameter, usually used for a count.
    int[]
    Returns an ordered sequence of two or more integer values of this parameter, usually used for counts.
    private static boolean
    isFile(Object value)
    Returns true if the given value is an instance of one of the types documented in valueFile().
    private boolean
    isOrNeedFile(Object newValue)
    Same as isFile(Object), but accepts also a String if the type specified in the parameter descriptor is one of the types documented in valueFile().
    Returns the exception to throw when an incompatible method is invoked for the value type.
    (package private) final void
    setDescriptor(org.opengis.parameter.ParameterDescriptor<T> descriptor)
    Invoked by JAXB at unmarshalling time.
    void
    setValue(boolean newValue)
    Sets the parameter value as a boolean.
    void
    setValue(double newValue)
    Sets the parameter value as a floating point.
    void
    setValue(double[] newValues, javax.measure.Unit<?> unit)
    Sets the parameter value as an array of floating point and their associated unit.
    void
    setValue(double newValue, javax.measure.Unit<?> unit)
    Sets the parameter value as a floating point and its associated unit.
    void
    setValue(int newValue)
    Sets the parameter value as an integer.
    void
    setValue(Object newValue)
    Sets the parameter value as an object.
    protected void
    setValue(Object newValue, javax.measure.Unit<?> unit)
    Sets the parameter value and its associated unit.
    private void
    setXmlValue(Object xmlValue)
    Invoked by JAXB at unmarshalling time.
    Returns the string value of this parameter.
    static <T> DefaultParameterValue<T>
    unmodifiable(org.opengis.parameter.ParameterValue<T> parameter)
    Returns an unmodifiable implementation of the given parameter value.
    protected void
    validate(T newValue)
    Invoked by setValue(Object, Unit) after the basic verifications have been done and before the value is stored.
    Returns a reference to a file or a part of a file containing one or more parameter values.
    private static Number
    wrap(double value, Class<?> valueClass)
    Wraps the given value in a type compatible with the expected value class, if possible.

    Methods inherited from class org.apache.sis.io.wkt.FormattableObject

    print, toString, toString, toWKT

    Methods inherited from class java.lang.Object

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

    • serialVersionUID

      private static final long serialVersionUID
      Serial number for inter-operability with different versions.
      See Also:
    • descriptor

      private org.opengis.parameter.ParameterDescriptor<T> descriptor
      The definition of this parameter.

      Consider this field as final! This field is modified only at unmarshalling time by setDescriptor(ParameterDescriptor)

      See Also:
    • value

      protected T value
      The value, or null if undefined. Except for the constructors, the equals(Object) and the hashCode() methods, this field should be read only by getValue() and written only by setValue(Object, Unit).
      Since:
      0.7
    • unit

      protected javax.measure.Unit<?> unit
      The unit of measure for the value, or null if it does not apply. Except for the constructors, the equals(Object) and the hashCode() methods, this field should be read only by getUnit() and written only by setValue(Object, Unit).
      Since:
      0.7
  • Constructor Details

    • DefaultParameterValue

      public DefaultParameterValue(org.opengis.parameter.ParameterDescriptor<T> descriptor)
      Creates a parameter value from the specified descriptor. The value will be initialized to the default value, if any.
      Parameters:
      descriptor - the abstract definition of this parameter.
    • DefaultParameterValue

      public DefaultParameterValue(org.opengis.parameter.ParameterValue<T> parameter)
      Creates a new instance initialized with the values from the specified parameter object. This is a shallow copy constructor, since the value contained in the given object is not cloned.
      Parameters:
      parameter - the parameter to copy values from.
      See Also:
    • DefaultParameterValue

      private DefaultParameterValue()
      Default constructor for JAXB only. The descriptor is initialized to null, but will be assigned a value after XML unmarshalling.
  • Method Details

    • getDescriptor

      public org.opengis.parameter.ParameterDescriptor<T> getDescriptor()
      Returns the definition of this parameter.
      Specified by:
      getDescriptor in interface org.opengis.parameter.GeneralParameterValue
      Specified by:
      getDescriptor in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the definition of this parameter.
    • getUnit

      public javax.measure.Unit<?> getUnit()
      Returns the unit of measure of the parameter value. If the parameter value has no unit (for example because it is a String type), then this method returns null. Note that "no unit" does not mean "dimensionless".

      Implementation note for subclasses

      All getter methods which need unit information will invoke this getUnit() method. Subclasses can override this method if they need to compute the unit dynamically.
      Specified by:
      getUnit in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the unit of measure, or null if none.
      See Also:
    • getValue

      public T getValue()
      Returns the parameter value as an object. If no value has been set, then this method returns the default value (which may be null).

      Implementation note for subclasses

      All getter methods will invoke this getValue() method. Subclasses can override this method if they need to compute the value dynamically.
      Specified by:
      getValue in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the parameter value as an object, or null if no value has been set and there is no default value.
      See Also:
    • booleanValue

      public boolean booleanValue() throws IllegalStateException
      Returns the boolean value of this parameter. A boolean value does not have an associated unit of measure.

      The default implementation invokes getValue() and casts the result if possible, or throws an exception otherwise.

      Specified by:
      booleanValue in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the boolean value represented by this parameter.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not a boolean type.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • intValue

      public int intValue() throws IllegalStateException
      Returns the integer value of this parameter, usually used for a count. An integer value does not have an associated unit of measure.

      The default implementation invokes getValue() and casts the result if possible, or throws an exception otherwise.

      Specified by:
      intValue in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the numeric value represented by this parameter after conversion to type int.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not an integer type.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • intValueList

      public int[] intValueList() throws IllegalStateException
      Returns an ordered sequence of two or more integer values of this parameter, usually used for counts.

      The default implementation invokes getValue() and casts the result if possible, or throws an exception otherwise. If the value can be casted, then the array is cloned before to be returned.

      Specified by:
      intValueList in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      a copy of the sequence of values represented by this parameter.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not an array of ints.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • doubleValue

      public double doubleValue() throws IllegalStateException
      Returns the numeric value of this parameter. The units of measurement are specified by getUnit().

      The default implementation invokes getValue() and casts the result if possible, or throws an exception otherwise.

      Specified by:
      doubleValue in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the numeric value represented by this parameter after conversion to type double. This method returns Double.NaN only if such "value" has been explicitly set.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not a numeric type.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • doubleValueList

      public double[] doubleValueList() throws IllegalStateException
      Returns an ordered sequence of two or more numeric values of this parameter, where each value has the same associated unit of measure.

      The default implementation invokes getValue() and casts the result if possible, or throws an exception otherwise. If the value can be casted, then the array is cloned before to be returned.

      Specified by:
      doubleValueList in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      a copy of the sequence of values represented by this parameter.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not an array of doubles.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • getConverterTo

      private javax.measure.UnitConverter getConverterTo(javax.measure.Unit<?> unit)
      Returns the converter to be used by doubleValue(Unit) and doubleValueList(Unit).
    • doubleValue

      public double doubleValue(javax.measure.Unit<?> unit) throws IllegalArgumentException, IllegalStateException
      Returns the numeric value of this parameter in the given unit of measure. This convenience method applies unit conversions on the fly as needed.

      The default implementation invokes doubleValue() and getUnit(), then converts the values to the given unit of measurement.

      Specified by:
      doubleValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      unit - the unit of measure for the value to be returned.
      Returns:
      the numeric value represented by this parameter after conversion to type double and conversion to unit.
      Throws:
      IllegalArgumentException - if the specified unit is invalid for this parameter.
      org.opengis.parameter.InvalidParameterTypeException - if the value is not a numeric type.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • doubleValueList

      public double[] doubleValueList(javax.measure.Unit<?> unit) throws IllegalArgumentException, IllegalStateException
      Returns an ordered sequence of numeric values in the specified unit of measure. This convenience method applies unit conversions on the fly as needed.

      The default implementation invokes doubleValueList() and getUnit(), then converts the values to the given unit of measurement.

      Specified by:
      doubleValueList in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      unit - the unit of measure for the value to be returned.
      Returns:
      the sequence of values represented by this parameter after conversion to type double and conversion to unit.
      Throws:
      IllegalArgumentException - if the specified unit is invalid for this parameter.
      org.opengis.parameter.InvalidParameterTypeException - if the value is not an array of doubles.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • stringValue

      public String stringValue() throws IllegalStateException
      Returns the string value of this parameter. A string value does not have an associated unit of measure.
      Specified by:
      stringValue in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the string value represented by this parameter.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not a string.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • valueFile

      public URI valueFile() throws IllegalStateException
      Returns a reference to a file or a part of a file containing one or more parameter values. The default implementation can convert the following value types: URI, URL, Path, File.
      Specified by:
      valueFile in interface org.opengis.parameter.ParameterValue<T>
      Returns:
      the reference to a file containing parameter values.
      Throws:
      org.opengis.parameter.InvalidParameterTypeException - if the value is not a reference to a file or a URI.
      IllegalStateException - if the value is not defined and there is no default value.
      See Also:
    • isFile

      private static boolean isFile(Object value)
      Returns true if the given value is an instance of one of the types documented in valueFile().
    • isOrNeedFile

      private boolean isOrNeedFile(Object newValue)
      Same as isFile(Object), but accepts also a String if the type specified in the parameter descriptor is one of the types documented in valueFile().
    • missingOrIncompatibleValue

      private IllegalStateException missingOrIncompatibleValue(Object newValue)
      Returns the exception to throw when an incompatible method is invoked for the value type.
    • getClassTypeError

      private String getClassTypeError()
      Formats an error message for illegal method call for the current value type.
    • cast

      private static Number cast(Number value, Class<?> expectedClass)
      Converts the given number to the expected type, with a special case for conversion from float to double type. Widening conversions are aimed to be exact in base 10 instead of base 2. If expectedClass is not a Number subtype, then this method does nothing. If the cast would result in information lost, than this method returns the given value unchanged for allowing a more accurate error message to happen later.
      Parameters:
      value - the value to cast (can be null).
      expectedClass - the desired class as a wrapper class (not a primitive type).
      Returns:
      value converted to the desired class, or value if no cast is needed or can be done.
    • setValue

      public void setValue(Object newValue) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as an object. The object type is typically (but not limited to) Double, double[], Integer, int[], Boolean, String or URI. If the given value is null, then this parameter is set to the default value. If the given value is not an instance of the expected type, then this method may perform automatically a type conversion (for example from Float to Double or from Path to URI) if such conversion can be done without information lost.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValue - the parameter value, or null to restore the default.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the type of value is inappropriate for this parameter, or if the value is illegal for some other reason (for example the value is numeric and out of range).
      See Also:
    • setValue

      public void setValue(boolean newValue) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as a boolean.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValue - the parameter value.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the boolean type is inappropriate for this parameter.
      See Also:
    • setValue

      public void setValue(int newValue) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as an integer. This method automatically wraps the given integer in an object of the type specified by the descriptor if that conversion can be done without information lost.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValue - the parameter value.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the integer type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
      See Also:
    • wrap

      private static Number wrap(double value, Class<?> valueClass) throws IllegalArgumentException
      Wraps the given value in a type compatible with the expected value class, if possible. If the value cannot be wrapped, then this method fallbacks on the Double class consistently with this method being invoked only by setValue(double, …) methods.
      Throws:
      IllegalArgumentException - if the given value cannot be converted to the given type.
    • setValue

      public void setValue(double newValue) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as a floating point. The unit, if any, stay unchanged. This method automatically wraps the given number in an object of the type specified by the descriptor.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValue - the parameter value.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the floating point type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
      See Also:
    • setValue

      public void setValue(double newValue, javax.measure.Unit<?> unit) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as a floating point and its associated unit. This method automatically wraps the given number in an object of the type specified by the descriptor.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValue - the parameter value.
      unit - the unit for the specified value.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the floating point type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
      See Also:
    • setValue

      public void setValue(double[] newValues, javax.measure.Unit<?> unit) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value as an array of floating point and their associated unit.
      Specified by:
      setValue in interface org.opengis.parameter.ParameterValue<T>
      Parameters:
      newValues - the parameter values.
      unit - the unit for the specified value.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the floating point array type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
    • setValue

      protected void setValue(Object newValue, javax.measure.Unit<?> unit) throws org.opengis.parameter.InvalidParameterValueException
      Sets the parameter value and its associated unit. If the given value is null, then this parameter is set to the default value. Otherwise the given value shall be an instance of the class expected by the descriptor.
      • This method does not perform any type conversion. Type conversion, if desired, should be applied by the public setValue(…) methods before to invoke this protected method.
      • This method does not clone the given value. In particular, references to int[] and double[] arrays are stored as-is.

      Implementation note for subclasses

      This method is invoked by all setter methods in this class, thus providing a single point that subclasses can override if they want to perform more processing on the value before its storage, or to be notified about value changes.
      Parameters:
      newValue - the parameter value, or null to restore the default.
      unit - the unit associated to the new parameter value, or null.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the type of value is inappropriate for this parameter, or if the value is illegal for some other reason (for example the value is numeric and out of range).
      See Also:
    • validate

      protected void validate(T newValue) throws org.opengis.parameter.InvalidParameterValueException
      Invoked by setValue(Object, Unit) after the basic verifications have been done and before the value is stored. Subclasses can override this method for performing additional verifications.

      Unit of measurement

      If the user specified a unit of measurement, then the value given to this method has been converted to the unit specified by the descriptor, for easier comparisons against standardized values. This converted value may be different than the value to be stored in this ParameterValue, since the latter value will be stored in the unit specified by the user.

      Standard validations

      The checks for value class, for value domain and for valid values are performed before this method is invoked. The default implementation of this method does nothing.
      Parameters:
      newValue - the value converted to the unit of measurement specified by the descriptor.
      Throws:
      org.opengis.parameter.InvalidParameterValueException - if the given value is invalid for implementation-specific reasons.
    • equals

      public boolean equals(Object object, ComparisonMode mode)
      Compares the specified object with this parameter for equality. The strictness level is controlled by the second argument.
      Specified by:
      equals in interface LenientComparable
      Parameters:
      object - the object to compare to this.
      mode - the strictness level of the comparison.
      Returns:
      true if both objects are equal according the given comparison mode.
      See Also:
    • equals

      public final boolean equals(Object object)
      Compares the specified object with this parameter for equality. This method is implemented as below: Subclasses shall override equals(Object, ComparisonMode) instead of this method.
      Specified by:
      equals in interface LenientComparable
      Overrides:
      equals in class Object
      Parameters:
      object - the object to compare to this.
      Returns:
      true if both objects are equal.
      See Also:
    • hashCode

      public int hashCode()
      Returns a hash value for this parameter. This value does not need to be the same in past or future versions of this class.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code value.
    • clone

      public DefaultParameterValue<T> clone()
      Returns a clone of this parameter value.
      Specified by:
      clone in interface org.opengis.parameter.GeneralParameterValue
      Specified by:
      clone in interface org.opengis.parameter.ParameterValue<T>
      Overrides:
      clone in class Object
      See Also:
    • unmodifiable

      public static <T> DefaultParameterValue<T> unmodifiable(org.opengis.parameter.ParameterValue<T> parameter)
      Returns an unmodifiable implementation of the given parameter value. This method shall be used only with: If the parameter value implements the Cloneable interface and has a public clone() method, then that value will be cloned every time the getValue() method is invoked. The value is not cloned by this method however; it is caller's responsibility to not modify the value of the given parameter instance after this method call.

      Instances sharing

      If this method is invoked more than once with equal descriptor, value and unit, then this method will return the same DefaultParameterValue instance on a best effort basis.
      Rational: the same parameter value is often used in many different coordinate operations. For example, all Universal Transverse Mercator (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres).
      Type Parameters:
      T - the type of the value stored in the given parameter.
      Parameters:
      parameter - the parameter to make unmodifiable, or null.
      Returns:
      a unmodifiable implementation of the given parameter, or null if the given parameter was null.
      Since:
      0.6
      See Also:
    • formatTo

      protected String formatTo(Formatter formatter)
      Formats this parameter as a Well Known Text Parameter[…] element. Example:

      Unit of measurement

      The units of measurement were never specified in WKT 1 format, and are optional in WKT 2 format. If the units are not specified, then they are inferred from the context. Typically, parameter values that are lengths are given in the unit for the projected CRS axes while parameter values that are angles are given in the unit for the base geographic CRS.
      Example: The snippet below show WKT representations of the map projection parameters of a projected CRS (most other elements are omitted). The map projection uses a "Latitude of natural origin" parameters which is set to 52 grads, as defined in the UNIT[…] element of the enclosing CRS. A similar rule applies to “False easting” and “False northing” parameters, which are in kilometres in this example.

      WKT 1:

      WKT 2:

      Specified by:
      formatTo in class FormattableObject
      Parameters:
      formatter - the formatter where to format the inner content of this WKT element.
      Returns:
      "Parameter" or "ParameterFile".
      See Also:
    • hasContextualUnit

      private static boolean hasContextualUnit(Formatter formatter)
      Returns true if the given formatter has contextual units, in which case the WKT format can omit the unit of measurement. The contextual units may be defined either in the direct parent or in the parent of the parent, depending if we are formatting WKT1 or WKT2 respectively. This is because WKT2 wraps the parameters in an additional CONVERSION[…] element which is not present in WKT1.

      Taking the example documented in formatTo(Formatter):

      • in WKT 1, PROJCS[…] is the immediate parent of PARAMETER[…], but
      • in WKT 2, ProjectedCRS[…] is the parent of Conversion[…], which is the parent of Parameter[…].
    • setDescriptor

      final void setDescriptor(org.opengis.parameter.ParameterDescriptor<T> descriptor)
      Invoked by JAXB at unmarshalling time. May also be invoked by DefaultParameterValueGroup if the descriptor has been completed with additional information provided in the <gml:group> element of a descriptor group.
      See Also:
    • getXmlValue

      private Object getXmlValue()
      Invoked by JAXB for obtaining the object to marshal. The property name depends on its type after conversion by this method.
    • setXmlValue

      private void setXmlValue(Object xmlValue)
      Invoked by JAXB at unmarshalling time.