Package org.apache.sis.referencing.datum

## Class TimeDependentBWP

- Object
- - FormattableObject
  - - BursaWolfParameters
    - - TimeDependentBWP

- All Implemented Interfaces:
    `Serializable`, `Cloneable`

      public class TimeDependentBWP
      extends BursaWolfParameters

  Parameters for a time-dependent geographic transformation between two datum. The `tX`, `tY`, `tZ`, `rX`, `rY`, `rZ` and `dS` parameters inherited from the parent class are values at a point in time given by `getTimeReference()`. Those values vary at a rate given by the parameters listed in the table below (codes, names and abbreviations are from the EPSG database):

  Parameters defined by EPSG
  Code | Name | Abbr.
  --- | --- | ---
  1040 | Rate of change of X-axis translation | `dtX`
  1041 | Rate of change of Y-axis translation | `dtY`
  1042 | Rate of change of Z-axis translation | `dtZ`
  1043 | Rate of change of X-axis rotation | `drX`
  1044 | Rate of change of Y-axis rotation | `drY`
  1045 | Rate of change of Z-axis rotation | `drZ`
  1046 | Rate of change of scale difference | `ddS`

  The numerical fields in this `TimeDependentBWP` class uses the EPSG abbreviations with 4 additional constraints compared to the EPSG definitions:
  - Unit of `ddS` is fixed to parts per million per year.
  - Unit of `dtX`, `dtY` and `dtZ` is fixed to millimetres per year.
  - Unit of `drX`, `drY` and `drZ` is fixed to milli arc-seconds per year.
  - Sign of rotation terms is fixed to the Position Vector convention (EPSG operation method 1053). This is the opposite sign than the Coordinate Frame Rotation (EPSG operation method 1056. The Position Vector convention is used by IAG and recommended by ISO 19111.
  Since:
    0.4
  See Also:
    Serialized Form

  Defined in the `sis-referencing` module

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `double` | `ddS` | Rate of change of the scale difference in parts per million per year (EPSG:1046).
    `double` | `drX` | Rate of change of X-axis rotation in milli arc-seconds per year (EPSG:1043), sign following the Position Vector convention.
    `double` | `drY` | Rate of change of Y-axis rotation in milli arc-seconds per year (EPSG:1044), sign following the Position Vector convention.
    `double` | `drZ` | Rate of change of Z-axis rotation in milli arc-seconds per year (EPSG:1045), sign following the Position Vector convention.
    `double` | `dtX` | Rate of change of X-axis translation in millimetres per year (EPSG:1040).
    `double` | `dtY` | Rate of change of Y-axis translation in millimetres per year (EPSG:1041).
    `double` | `dtZ` | Rate of change of Z-axis translation in millimetres per year (EPSG:1042).

    - ### Fields inherited from class BursaWolfParameters

      `dS, rX, rY, rZ, tX, tY, tZ`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TimeDependentBWP​(GeodeticDatum targetDatum, Extent domainOfValidity, Date timeReference)` | Creates a new instance for the given target datum, domain of validity and time reference.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object object)` | Compares the specified object with this object for equality.
    `Date` | `getTimeReference()` | Returns the reference epoch for time-dependent parameters.
    `double[]` | `getValues()` | Returns the parameter values.
    `int` | `hashCode()` | Returns a hash value for this object.
    `boolean` | `isIdentity()` | Returns `true` if a transformation built from this set of parameters would perform no operation.
    `boolean` | `isTranslation()` | Returns `true` if a transformation built from this set of parameters would perform only a translation.
    `void` | `reverseRotation()` | Inverts in-place the sign of rotation terms and their derivative.
    `void` | `setValues​(double... elements)` | Sets the parameters to the given values.

    - ### Methods inherited from class BursaWolfParameters

      `clone, formatTo, getDomainOfValidity, getPositionVectorTransformation, getTargetDatum, invert, setPositionVectorTransformation`

    - ### Methods inherited from class FormattableObject

      `print, toString, toString, toWKT`

    - ### Methods inherited from class Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### dtX

          public double dtX

      Rate of change of X-axis translation in millimetres per year (EPSG:1040).

    - #### dtY

          public double dtY

      Rate of change of Y-axis translation in millimetres per year (EPSG:1041).

    - #### dtZ

          public double dtZ

      Rate of change of Z-axis translation in millimetres per year (EPSG:1042).

    - #### drX

          public double drX

      Rate of change of X-axis rotation in milli arc-seconds per year (EPSG:1043), sign following the Position Vector convention.

    - #### drY

          public double drY

      Rate of change of Y-axis rotation in milli arc-seconds per year (EPSG:1044), sign following the Position Vector convention.

    - #### drZ

          public double drZ

      Rate of change of Z-axis rotation in milli arc-seconds per year (EPSG:1045), sign following the Position Vector convention.

    - #### ddS

          public double ddS

      Rate of change of the scale difference in parts per million per year (EPSG:1046).

  - ### Constructor Detail

    - #### TimeDependentBWP

          public TimeDependentBWP​(GeodeticDatum targetDatum,
                                  Extent domainOfValidity,
                                  Date timeReference)

      Creates a new instance for the given target datum, domain of validity and time reference. All numerical parameters are initialized to 0, which correspond to an identity transform. Callers can assign numerical values to the public fields of interest after construction.
      Parameters:
        `targetDatum` - the target datum (usually WGS 84) for this set of parameters.
        `domainOfValidity` - area or region in which a coordinate transformation based on those Bursa-Wolf parameters is valid, or `null` is unspecified.
        `timeReference` - the reference epoch for time-dependent parameters.

  - ### Method Detail

    - #### getTimeReference

          public Date getTimeReference()

      Returns the reference epoch for time-dependent parameters.
      Returns:
        the reference epoch for time-dependent parameters.

    - #### getValues

          public double[] getValues()

      Returns the parameter values. The first 14 elements are always `tX`, `tY`, `tZ`, `rX`, `rY`, `rZ`, `dS`, `dtX`, `dtY`, `dtZ`, `drX`, `drY`, `drZ` and `ddS` in that order.
      Overrides:
        `getValues` in class `BursaWolfParameters`
      Returns:
        the parameter values as an array of length 14.
      Since:
        0.6

    - #### setValues

          public void setValues​(double... elements)

      Sets the parameters to the given values. The given array can have any length. The first array elements will be assigned to the `tX`, `tY`, `tZ`, `rX`, `rY`, `rZ`, `dS`, `dtX`, `dtY`, `dtZ`, `drX`, `drY`, `drZ` and `ddS` fields in that order.
      Overrides:
        `setValues` in class `BursaWolfParameters`
      Parameters:
        `elements` - the new parameter values, as an array of any length.
      Since:
        0.6

    - #### isIdentity

          public boolean isIdentity()

      Returns `true` if a transformation built from this set of parameters would perform no operation. This is true when the value of all parameters is zero.
      Overrides:
        `isIdentity` in class `BursaWolfParameters`
      Returns:
        `true` if the parameters describe no operation.

    - #### isTranslation

          public boolean isTranslation()

      Returns `true` if a transformation built from this set of parameters would perform only a translation.
      Overrides:
        `isTranslation` in class `BursaWolfParameters`
      Returns:
        `true` if the parameters describe a translation only.

    - #### reverseRotation

          public void reverseRotation()

      Inverts in-place the sign of rotation terms and their derivative. This method can be invoked for converting a Coordinate Frame Rotation transformation (EPSG operation method 9607) to a Position Vector transformation (EPSG operation method 9606). The later convention is used by IAG and recommended by ISO 19111.
      Overrides:
        `reverseRotation` in class `BursaWolfParameters`

    - #### equals

          public boolean equals​(Object object)

      Compares the specified object with this object for equality.
      Overrides:
        `equals` in class `BursaWolfParameters`
      Parameters:
        `object` - the object to compare with the parameters.
      Returns:
        `true` if the given object is equal to this `TimeDependentBWP`.

    - #### hashCode

          public int hashCode()

      Returns a hash value for this object.
      Overrides:
        `hashCode` in class `BursaWolfParameters`
      Returns:
        the hash code value. This value does not need to be the same in past or future versions of this class.