# Class ReferencingFunctions

Object
WeakBase
CalcAddins
ReferencingFunctions

All Implemented Interfaces:
  `XLocalizable`, `XServiceInfo`, `XServiceName`, `XTypeProvider`, `XInterface`, `XWeak`, `XReferencing`

public class ReferencingFunctions extends CalcAddins implements XReferencing
Implements the `XReferencing` methods to make available to Apache OpenOffice.

Since:
  0.8

- ## Field Summary

  ### Fields inherited from class CalcAddins

  `context`

  ### Fields inherited from class WeakBase

  `_mapTypes`

  ### Fields inherited from interface XLocalizable

  `UNOTYPEINFO`

  ### Fields inherited from interface XServiceInfo

  `UNOTYPEINFO`

  ### Fields inherited from interface XServiceName

  `UNOTYPEINFO`

  ### Fields inherited from interface XTypeProvider

  `UNOTYPEINFO`

  ### Fields inherited from interface XWeak

  `UNOTYPEINFO`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ReferencingFunctions(XComponentContext context)`
  Constructs an implementation of `XReferencing` interface.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String[][]`
  `formatAngle(double[][] value, Object pattern, Object locale)`
  Converts an angle to text according to a given format.
  `double`
  `getAccuracy(String sourceCRS, String targetCRS, Object areaOfInterest)`
  Returns the accuracy of a transformation between two coordinate reference systems.
  `String`
  `getAxis(String codeOrPath, int dimension)`
  Returns the axis name and units for the specified dimension in a coordinate reference system or coordinate system.
  `String`
  `getDomainOfValidity(String codeOrPath)`
  Returns the domain of validity from an authority code.
  `double[][]`
  `getGeographicArea(String codeOrPath)`
  Returns the domain of validity as a geographic bounding box for an identified object.
  `String`
  `getImplementationName()`
  Provides the implementation name of the service.
  `String`
  `getName(String codeOrPath)`
  Returns the identified object name from an authority code.
  `String`
  `getScope(String codeOrPath)`
  Returns the identified object scope from an authority code.
  `String`
  `getServiceName()`
  The service name that can be used to create such an object by a factory.
  `double[][]`
  `parseAngle(String[][] text, Object pattern, Object locale)`
  Converts text in degrees-minutes-seconds to an angle in decimal degrees.
  `double[][]`
  `transformEnvelope(String sourceCRS, String targetCRS, double[][] envelope)`
  Transforms an envelope from the specified source CRS to the specified target CRS.
  `double[][]`
  `transformPoints(String sourceCRS, String targetCRS, double[][] points)`
  Transforms coordinates from the specified source CRS to the specified target CRS.

  ### Methods inherited from class CalcAddins

  `getJavaLocale, getLocale, getLocalizedMessage, getLogger, getSupportedServiceNames, setLocale, supportsService`

  ### Methods inherited from class WeakBase

  `finalize, getImplementationId, getTypes, queryAdapter`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ReferencingFunctions

    public ReferencingFunctions(XComponentContext context)
    Constructs an implementation of `XReferencing` interface.
    Parameters:
      `context` - the value to assign to the `CalcAddins​.context` field.

- ## Method Details

  - ### getServiceName

    public String getServiceName()
    The service name that can be used to create such an object by a factory.
    Specified by:
      `getServiceName` in interface `XServiceName`
    Specified by:
      `getServiceName` in class `CalcAddins`
    Returns:
      unique name of the service.

  - ### getImplementationName

    public String getImplementationName()
    Provides the implementation name of the service.
    Specified by:
      `getImplementationName` in interface `XServiceInfo`
    Returns:
      unique name of the implementation.

  - ### getName

    public String getName(String codeOrPath)
    Returns the identified object name from an authority code.
    Specified by:
      `getName` in interface `XReferencing`
    Parameters:
      `codeOrPath` - the code allocated by an authority, or the path to a file.
    Returns:
      the object name.

  - ### getScope

    public String getScope(String codeOrPath)
    Returns the identified object scope from an authority code.
    Specified by:
      `getScope` in interface `XReferencing`
    Parameters:
      `codeOrPath` - the code allocated by an authority, or the path to a file.
    Returns:
      the object scope.

  - ### getDomainOfValidity

    public String getDomainOfValidity(String codeOrPath)
    Returns the domain of validity from an authority code.
    Specified by:
      `getDomainOfValidity` in interface `XReferencing`
    Parameters:
      `codeOrPath` - the code allocated by an authority, or the path to a file.
    Returns:
      the domain of validity.

  - ### getGeographicArea

    public double[][] getGeographicArea(String codeOrPath)
    Returns the domain of validity as a geographic bounding box for an identified object. This method returns a 2×2 matrix: the first row contains the latitude and longitude of upper left corner, and the second row contains the latitude and longitude of bottom right corner. Units are degrees.
    Specified by:
      `getGeographicArea` in interface `XReferencing`
    Parameters:
      `codeOrPath` - the code allocated by an authority, or the path to a file.
    Returns:
      the object bounding box.

  - ### getAxis

    public String getAxis(String codeOrPath, int dimension)
    Returns the axis name and units for the specified dimension in a coordinate reference system or coordinate system. This method returns a short axis name as used in Well Known Text (WKT) format, for example Latitude instead of Geodetic latitude.
    Specified by:
      `getAxis` in interface `XReferencing`
    Parameters:
      `codeOrPath` - the code allocated by an authority, or the path to a file.
      `dimension` - the dimension (1, 2, …).
    Returns:
      the name of the requested axis.

  - ### getAccuracy

    public double getAccuracy(String sourceCRS, String targetCRS, Object areaOfInterest) throws IllegalArgumentException
    Returns the accuracy of a transformation between two coordinate reference systems.
    Specified by:
      `getAccuracy` in interface `XReferencing`
    Parameters:
      `sourceCRS` - the authority code for the source coordinate reference system.
      `targetCRS` - the authority code for the target coordinate reference system.
      `areaOfInterest` - an optional bounding box of source coordinates to transform.
    Returns:
      the operation accuracy.
    Throws:
      `IllegalArgumentException` - if `points` is not a `double[][]` value or void.

  - ### transformPoints

    public double[][] transformPoints(String sourceCRS, String targetCRS, double[][] points)
    Transforms coordinates from the specified source CRS to the specified target CRS.
    Specified by:
      `transformPoints` in interface `XReferencing`
    Parameters:
      `sourceCRS` - the authority code for the source coordinate reference system.
      `targetCRS` - the authority code for the target coordinate reference system.
      `points` - the coordinates to transform.
    Returns:
      the transformed coordinates.

  - ### transformEnvelope

    public double[][] transformEnvelope(String sourceCRS, String targetCRS, double[][] envelope)
    Transforms an envelope from the specified source CRS to the specified target CRS.
    Specified by:
      `transformEnvelope` in interface `XReferencing`
    Parameters:
      `sourceCRS` - the authority code for the source coordinate reference system.
      `targetCRS` - the authority code for the target coordinate reference system.
      `envelope` - points inside the envelope to transform.
    Returns:
      the transformed envelope.

  - ### parseAngle

    public double[][] parseAngle(String[][] text, Object pattern, Object locale) throws IllegalArgumentException
    Converts text in degrees-minutes-seconds to an angle in decimal degrees. See `AngleFormat` for pattern description.
    Specified by:
      `parseAngle` in interface `XReferencing`
    Parameters:
      `text` - the text to be converted to an angle.
      `pattern` - an optional text that describes the format (example: "D°MM.m'").
      `locale` - the convention to use (e.g. decimal separator symbol).
    Returns:
      the angle parsed as a number.
    Throws:
      `IllegalArgumentException` - if `pattern` is not a string value or void.

  - ### formatAngle

    public String[][] formatAngle(double[][] value, Object pattern, Object locale) throws IllegalArgumentException
    Converts an angle to text according to a given format. This method uses the pattern described by `AngleFormat` with the following extension:
    - If the pattern ends with E or W, then the angle is formatted as a longitude.
    - If the pattern ends with N or S, then the angle is formatted as a latitude.
    Specified by:
      `formatAngle` in interface `XReferencing`
    Parameters:
      `value` - the angle value (in decimal degrees) to be converted.
      `pattern` - an optional text that describes the format (example: "D°MM.m'").
      `locale` - the convention to use (e.g. decimal separator symbol).
    Returns:
      the angle formatted as a string.
    Throws:
      `IllegalArgumentException` - if `pattern` is not a string value or void.