Package org.apache.sis.metadata.iso.content

## Class DefaultImageDescription

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - AbstractContentInformation
        - - DefaultCoverageDescription
          - - DefaultImageDescription

- All Implemented Interfaces:
    `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `ContentInformation`, `CoverageDescription`, `ImageDescription`

      public class DefaultImageDescription
      extends DefaultCoverageDescription
      implements ImageDescription

  Information about an image's suitability for use. The following property is mandatory in a well-formed metadata according ISO 19115:
  `MD_ImageDescription` `└─attributeDescription……` Description of the attribute described by the measurement value.

  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

  Defined in the `sis-metadata` module

- - ### 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
    --- | ---
    `DefaultImageDescription()` | Constructs an initially empty image description.
    `DefaultImageDescription​(ImageDescription object)` | Constructs a new instance initialized with the values from the specified metadata object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultImageDescription` | `castOrCopy​(ImageDescription object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `Double` | `getCloudCoverPercentage()` | Returns the area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
    `Integer` | `getCompressionGenerationQuantity()` | Returns the count of the number of lossy compression cycles performed on the image.
    `Double` | `getIlluminationAzimuthAngle()` | Returns the illumination azimuth measured in degrees clockwise from true north at the time the image is taken.
    `Double` | `getIlluminationElevationAngle()` | Returns the illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface.
    `Identifier` | `getImageQualityCode()` | Returns a code in producer’s codespace that specifies the image quality.
    `ImagingCondition` | `getImagingCondition()` | Returns the conditions which affected the image.
    `Boolean` | `getTriangulationIndicator()` | Returns the indication of whether or not triangulation has been performed upon the image.
    `Boolean` | `isCameraCalibrationInformationAvailable()` | Returns the indication of whether or not constants are available which allow for camera calibration corrections.
    `Boolean` | `isFilmDistortionInformationAvailable()` | Returns the indication of whether or not Calibration Reseau information is available.
    `Boolean` | `isLensDistortionInformationAvailable()` | Returns the indication of whether or not lens aberration correction information is available.
    `Boolean` | `isRadiometricCalibrationDataAvailable()` | Returns the indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available.
    `void` | `setCameraCalibrationInformationAvailable​(Boolean newValue)` | Sets the indication of whether or not constants are available which allow for camera calibration corrections.
    `void` | `setCloudCoverPercentage​(Double newValue)` | Sets the area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
    `void` | `setCompressionGenerationQuantity​(Integer newValue)` | Sets the count of the number the number of lossy compression cycles performed on the image.
    `void` | `setFilmDistortionInformationAvailable​(Boolean newValue)` | Sets the indication of whether or not Calibration Reseau information is available.
    `void` | `setIlluminationAzimuthAngle​(Double newValue)` | Sets the illumination azimuth measured in degrees clockwise from true north at the time the image is taken.
    `void` | `setIlluminationElevationAngle​(Double newValue)` | Sets the illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface.
    `void` | `setImageQualityCode​(Identifier newValue)` | Sets a code in producer’s codespace that specifies the image quality.
    `void` | `setImagingCondition​(ImagingCondition newValue)` | Sets the conditions that affected the image.
    `void` | `setLensDistortionInformationAvailable​(Boolean newValue)` | Sets the indication of whether or not lens aberration correction information is available.
    `void` | `setRadiometricCalibrationDataAvailable​(Boolean newValue)` | Sets the indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available.
    `void` | `setTriangulationIndicator​(Boolean newValue)` | Sets the indication of whether or not triangulation has been performed upon the image.

    - ### Methods inherited from class DefaultCoverageDescription

      `castOrCopy, getAttributeDescription, getAttributeGroups, getContentType, getDimensions, getProcessingLevelCode, getRangeElementDescriptions, setAttributeDescription, setAttributeGroups, setContentType, setDimensions, setProcessingLevelCode, setRangeElementDescriptions`

    - ### Methods inherited from class AbstractContentInformation

      `castOrCopy`

    - ### Methods inherited from class ISOMetadata

      `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier, transitionTo`

    - ### Methods inherited from class ModifiableMetadata

      `checkWritePermission, checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, freeze, isModifiable, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, unmodifiable, writeCollection, writeList, writeMap, writeSet`

    - ### Methods inherited from class AbstractMetadata

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

    - ### Methods inherited from class Object

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

    - ### Methods inherited from interface CoverageDescription

      `getAttributeDescription, getContentType, getDimensions, getRangeElementDescriptions`

    - ### Methods inherited from interface ImageDescription

      `getProcessingLevelCode`

- - ### Constructor Detail

    - #### DefaultImageDescription

          public DefaultImageDescription()

      Constructs an initially empty image description.

    - #### DefaultImageDescription

          public DefaultImageDescription​(ImageDescription object)

      Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, since the other metadata contained in the given object are not recursively copied.
      Note on properties validation: This constructor does not verify the property values of the given metadata (e.g. whether a value is out of range). This is because invalid metadata exist in practice, and verifying their validity in this copy constructor is often too late. Note that this is not the only hole, as invalid metadata instances can also be obtained by unmarshalling an invalid XML document.
      Parameters:
        `object` - the metadata to copy values from, or `null` if none.
      See Also:
        `castOrCopy(ImageDescription)`

  - ### Method Detail

    - #### castOrCopy

          public static DefaultImageDescription castOrCopy​(ImageDescription 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 `DefaultImageDescription`, then it is returned unchanged.
      - Otherwise a new `DefaultImageDescription` instance is created using the copy constructor and returned. Note that this is a shallow copy operation, since 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.

    - #### getIlluminationElevationAngle

          @ValueRange(minimum=-90.0,
                      maximum=90.0)
          public Double getIlluminationElevationAngle()

      Returns the illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image.

      The horizon is at 0°, straight up has an elevation of 90°.

      Specified by:
        `getIlluminationElevationAngle` in interface `ImageDescription`
      Returns:
        a value between -90° and +90°, or `null` if unspecified.

    - #### setIlluminationElevationAngle

          public void setIlluminationElevationAngle​(Double newValue)

      Sets the illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image.
      Parameters:
        `newValue` - the new illumination elevation angle, or `null`.
      Throws:
        `IllegalArgumentException` - if the given value is out of range.

    - #### getIlluminationAzimuthAngle

          @ValueRange(minimum=0.0,
                      maximum=360.0)
          public Double getIlluminationAzimuthAngle()

      Returns the illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image.
      Specified by:
        `getIlluminationAzimuthAngle` in interface `ImageDescription`
      Returns:
        a value between 0° and 360°, or `null` if unspecified.

    - #### setIlluminationAzimuthAngle

          public void setIlluminationAzimuthAngle​(Double newValue)

      Sets the illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image.
      Parameters:
        `newValue` - the new illumination azimuth angle, or `null`.
      Throws:
        `IllegalArgumentException` - if the given value is out of range.

    - #### getImagingCondition

          public ImagingCondition getImagingCondition()

      Returns the conditions which affected the image.
      Specified by:
        `getImagingCondition` in interface `ImageDescription`
      Returns:
        conditions which affected the image, or `null` if unspecified.

    - #### setImagingCondition

          public void setImagingCondition​(ImagingCondition newValue)

      Sets the conditions that affected the image.
      Parameters:
        `newValue` - the new imaging condition.

    - #### getImageQualityCode

          public Identifier getImageQualityCode()

      Returns a code in producer’s codespace that specifies the image quality.
      Specified by:
        `getImageQualityCode` in interface `ImageDescription`
      Returns:
        the image quality, or `null` if unspecified.

    - #### setImageQualityCode

          public void setImageQualityCode​(Identifier newValue)

      Sets a code in producer’s codespace that specifies the image quality.
      Parameters:
        `newValue` - the new image quality code.

    - #### getCloudCoverPercentage

          @ValueRange(minimum=0.0,
                      maximum=100.0)
          public Double getCloudCoverPercentage()

      Returns the area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
      Specified by:
        `getCloudCoverPercentage` in interface `ImageDescription`
      Returns:
        a value between 0 and 100, or `null` if unspecified.

    - #### setCloudCoverPercentage

          public void setCloudCoverPercentage​(Double newValue)

      Sets the area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
      Parameters:
        `newValue` - the new cloud cover percentage, or `null`.
      Throws:
        `IllegalArgumentException` - if the given value is out of range.

    - #### getCompressionGenerationQuantity

          @ValueRange(minimum=0.0)
          public Integer getCompressionGenerationQuantity()

      Returns the count of the number of lossy compression cycles performed on the image.
      Specified by:
        `getCompressionGenerationQuantity` in interface `ImageDescription`
      Returns:
        the number of lossy compression cycles performed on the image, or `null` if unspecified.

    - #### setCompressionGenerationQuantity

          public void setCompressionGenerationQuantity​(Integer newValue)

      Sets the count of the number the number of lossy compression cycles performed on the image.
      Parameters:
        `newValue` - the new compression generation quantity.
      Throws:
        `IllegalArgumentException` - if the given value is negative.

    - #### getTriangulationIndicator

          public Boolean getTriangulationIndicator()

      Returns the indication of whether or not triangulation has been performed upon the image.
      Specified by:
        `getTriangulationIndicator` in interface `ImageDescription`
      Returns:
        whether or not triangulation has been performed upon the image, or `null` if unspecified.

    - #### setTriangulationIndicator

          public void setTriangulationIndicator​(Boolean newValue)

      Sets the indication of whether or not triangulation has been performed upon the image.
      Parameters:
        `newValue` - the new triangulation indicator.

    - #### isRadiometricCalibrationDataAvailable

          public Boolean isRadiometricCalibrationDataAvailable()

      Returns the indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available.
      Specified by:
        `isRadiometricCalibrationDataAvailable` in interface `ImageDescription`
      Returns:
        whether or not the radiometric calibration information is available, or `null` if unspecified.

    - #### setRadiometricCalibrationDataAvailable

          public void setRadiometricCalibrationDataAvailable​(Boolean newValue)

      Sets the indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available.
      Parameters:
        `newValue` - `true` if radiometric calibration data are available.

    - #### isCameraCalibrationInformationAvailable

          public Boolean isCameraCalibrationInformationAvailable()

      Returns the indication of whether or not constants are available which allow for camera calibration corrections.
      Specified by:
        `isCameraCalibrationInformationAvailable` in interface `ImageDescription`
      Returns:
        whether or not constants are available for camera calibration corrections, or `null` if unspecified.

    - #### setCameraCalibrationInformationAvailable

          public void setCameraCalibrationInformationAvailable​(Boolean newValue)

      Sets the indication of whether or not constants are available which allow for camera calibration corrections.
      Parameters:
        `newValue` - `true` if camera calibration information are available.

    - #### isFilmDistortionInformationAvailable

          public Boolean isFilmDistortionInformationAvailable()

      Returns the indication of whether or not Calibration Reseau information is available.
      Specified by:
        `isFilmDistortionInformationAvailable` in interface `ImageDescription`
      Returns:
        whether or not Calibration Reseau information is available, or `null` if unspecified.

    - #### setFilmDistortionInformationAvailable

          public void setFilmDistortionInformationAvailable​(Boolean newValue)

      Sets the indication of whether or not Calibration Reseau information is available.
      Parameters:
        `newValue` - `true` if film distortion information are available.

    - #### isLensDistortionInformationAvailable

          public Boolean isLensDistortionInformationAvailable()

      Returns the indication of whether or not lens aberration correction information is available.
      Specified by:
        `isLensDistortionInformationAvailable` in interface `ImageDescription`
      Returns:
        whether or not lens aberration correction information is available, or `null` if unspecified.

    - #### setLensDistortionInformationAvailable

          public void setLensDistortionInformationAvailable​(Boolean newValue)

      Sets the indication of whether or not lens aberration correction information is available.
      Parameters:
        `newValue` - `true` if lens distortion information are available.