# Class DefaultGeoreferenceable

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
AbstractSpatialRepresentation
DefaultGridSpatialRepresentation
DefaultGeoreferenceable

All Implemented Interfaces:
  `Serializable, Emptiable, LenientComparable, IdentifiedObject, Georeferenceable, GridSpatialRepresentation, SpatialRepresentation`

public class DefaultGeoreferenceable extends DefaultGridSpatialRepresentation implements Georeferenceable
Grid with cells irregularly spaced in any given geographic/map projection coordinate reference system. Individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone.

The following properties are mandatory in a well-formed metadata according ISO 19115:

`MD_Georeferenceable` `├─numberOfDimensions…………………………………………………` Number of independent spatial-temporal axes. `├─axisDimensionProperties……………………………………` Information about spatial-temporal axis properties. `│ ├─dimensionName……………………………………………………` Name of the axis. `│ └─dimensionSize……………………………………………………` Number of elements along the axis. `├─cellGeometry…………………………………………………………………` Identification of grid data as point or cell. `├─transformationParameterAvailability……` Indication of whether or not parameters for transformation exists. `├─controlPointAvailability…………………………………` Indication of whether or not control point(s) exists. `├─orientationParameterAvailability……………` Indication of whether or not orientation parameters are available. `├─geolocationInformation………………………………………` Information that can be used to geolocate the data. `└─georeferencedParameters……………………………………` Terms which support grid data georeferencing.

## Limitations

- Instances of this class are not synchronized for multi-threading. Synchronization, if needed, is caller's responsibility.
- Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases. Serialization support is appropriate for short term storage or RMI between applications running the same version of Apache SIS. For long term storage, use `XML` instead.

Since:
  0.3
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class ModifiableMetadata

  `ModifiableMetadata​.State`

- ## Field Summary

  ### Fields inherited from class ISOMetadata

  `identifiers`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultGeoreferenceable()`
  Constructs an initially empty georeferenceable.
  `DefaultGeoreferenceable(Georeferenceable object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultGeoreferenceable`
  `castOrCopy(Georeferenceable object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Collection<GeolocationInformation>`
  `getGeolocationInformation()`
  Returns the information that can be used to geolocate the data.
  `Record`
  `getGeoreferencedParameters()`
  Returns the terms which support grid data georeferencing.
  `InternationalString`
  `getOrientationParameterDescription()`
  Returns a description of parameters used to describe sensor orientation.
  `Collection<Citation>`
  `getParameterCitations()`
  Returns a reference providing description of the parameters.
  `boolean`
  `isControlPointAvailable()`
  Returns an indication of whether or not control point(s) exists.
  `boolean`
  `isOrientationParameterAvailable()`
  Returns an indication of whether or not orientation parameters are available.
  `void`
  `setControlPointAvailable(boolean newValue)`
  Sets an indication of whether or not control point(s) exists.
  `void`
  `setGeolocationInformation(Collection<? extends GeolocationInformation> newValues)`
  Sets the information that can be used to geolocate the data.
  `void`
  `setGeoreferencedParameters(Record newValue)`
  Sets the terms which support grid data georeferencing.
  `void`
  `setOrientationParameterAvailable(boolean newValue)`
  Sets an indication of whether or not orientation parameters are available.
  `void`
  `setOrientationParameterDescription(InternationalString newValue)`
  Sets a description of parameters used to describe sensor orientation.
  `void`
  `setParameterCitations(Collection<? extends Citation> newValues)`
  Sets a reference providing description of the parameters.

  ### Methods inherited from class DefaultGridSpatialRepresentation

  `castOrCopy, getAxisDimensionProperties, getCellGeometry, getNumberOfDimensions, isTransformationParameterAvailable, setAxisDimensionProperties, setCellGeometry, setNumberOfDimensions, setTransformationParameterAvailable`

  ### Methods inherited from class AbstractSpatialRepresentation

  `castOrCopy, getScope, setScope`

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier`

  ### Methods inherited from class ModifiableMetadata

  `checkWritePermission, copyCollection, copyList, copyMap, copySet, deepCopy, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, writeCollection, writeList, writeMap, writeSet`

  ### Methods inherited from class AbstractMetadata

  `asMap, asTreeTable, clone, equals, equals, getInterface, hashCode, isEmpty, nilReasons, prune, toString`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface GridSpatialRepresentation

  `getAxisDimensionProperties, getCellGeometry, getNumberOfDimensions, isTransformationParameterAvailable`

- ## Constructor Details

  - ### DefaultGeoreferenceable

    public DefaultGeoreferenceable()
    Constructs an initially empty georeferenceable.

  - ### DefaultGeoreferenceable

    public DefaultGeoreferenceable(Georeferenceable object)
    Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the metadata to copy values from, or `null` if none.
    See Also:
      - `castOrCopy(Georeferenceable)`

- ## Method Details

  - ### castOrCopy

    public static DefaultGeoreferenceable castOrCopy(Georeferenceable object)
    Returns a SIS metadata implementation with the values of the given arbitrary implementation. This method performs the first applicable action in the following choices:
    - If the given object is `null`, then this method returns `null`.
    - Otherwise if the given object is already an instance of `DefaultGeoreferenceable`, then it is returned unchanged.
    - Otherwise a new `DefaultGeoreferenceable` instance is created using the copy constructor and returned. Note that this is a shallow copy operation, because the other metadata contained in the given object are not recursively copied.
    Parameters:
      `object` - the object to get as a SIS implementation, or `null` if none.
    Returns:
      a SIS implementation containing the values of the given object (may be the given object itself), or `null` if the argument was null.

  - ### isControlPointAvailable

    public boolean isControlPointAvailable()
    Returns an indication of whether or not control point(s) exists.
    Specified by:
      `isControlPointAvailable` in interface `Georeferenceable`
    Returns:
      whether or not control point(s) exists.

  - ### setControlPointAvailable

    public void setControlPointAvailable(boolean newValue)
    Sets an indication of whether or not control point(s) exists.
    Parameters:
      `newValue` - `true` if control points are available.

  - ### isOrientationParameterAvailable

    public boolean isOrientationParameterAvailable()
    Returns an indication of whether or not orientation parameters are available.
    Specified by:
      `isOrientationParameterAvailable` in interface `Georeferenceable`
    Returns:
      whether or not orientation parameters are available.

  - ### setOrientationParameterAvailable

    public void setOrientationParameterAvailable(boolean newValue)
    Sets an indication of whether or not orientation parameters are available.
    Parameters:
      `newValue` - `true` if orientation parameter are available.

  - ### getOrientationParameterDescription

    public InternationalString getOrientationParameterDescription()
    Returns a description of parameters used to describe sensor orientation.
    Specified by:
      `getOrientationParameterDescription` in interface `Georeferenceable`
    Returns:
      description of parameters used to describe sensor orientation, or `null`.

  - ### setOrientationParameterDescription

    public void setOrientationParameterDescription(InternationalString newValue)
    Sets a description of parameters used to describe sensor orientation.
    Parameters:
      `newValue` - the new orientation parameter description.

  - ### getGeoreferencedParameters

    public Record getGeoreferencedParameters()
    Returns the terms which support grid data georeferencing.
    Specified by:
      `getGeoreferencedParameters` in interface `Georeferenceable`
    Returns:
      terms which support grid data georeferencing, or `null`.

  - ### setGeoreferencedParameters

    public void setGeoreferencedParameters(Record newValue)
    Sets the terms which support grid data georeferencing.
    Parameters:
      `newValue` - the new georeferenced parameters.

  - ### getParameterCitations

    public Collection<Citation> getParameterCitations()
    Returns a reference providing description of the parameters.
    Specified by:
      `getParameterCitations` in interface `Georeferenceable`
    Returns:
      reference providing description of the parameters.

  - ### setParameterCitations

    public void setParameterCitations(Collection<? extends Citation> newValues)
    Sets a reference providing description of the parameters.
    Parameters:
      `newValues` - the new parameter citations.

  - ### getGeolocationInformation

    public Collection<GeolocationInformation> getGeolocationInformation()
    Returns the information that can be used to geolocate the data.
    Specified by:
      `getGeolocationInformation` in interface `Georeferenceable`
    Returns:
      a geolocalisation of the data.

  - ### setGeolocationInformation

    public void setGeolocationInformation(Collection<? extends GeolocationInformation> newValues)
    Sets the information that can be used to geolocate the data.
    Parameters:
      `newValues` - the new geolocation information values.