/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2004-2005, Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
package org.opengis.metadata.content;
import org.opengis.metadata.Identifier;
import org.opengis.annotation.UML;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
/**
* Information about an image's suitability for use.
*
*
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/metadata/content/ImageDescription.java $
* @version <A HREF="http://www.opengeospatial.org/standards/as#01-111">ISO 19115</A>
* @author Martin Desruisseaux (IRD)
* @author Cory Horner (Refractions Research)
* @since GeoAPI 2.0
*/
@UML(identifier="MD_ImageDescription", specification=ISO_19115)
public interface ImageDescription extends CoverageDescription {
/**
* 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.
*
* @return A value between -90° and +90°, or {@code null} if unspecified.
*/
@UML(identifier="illuminationElevationAngle", obligation=OPTIONAL, specification=ISO_19115)
Double getIlluminationElevationAngle();
/**
* 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.
*
* @return A value between 0° and 360°, or {@code null} if unspecified.
*/
@UML(identifier="illuminationAzimuthAngle", obligation=OPTIONAL, specification=ISO_19115)
Double getIlluminationAzimuthAngle();
/**
* Conditions affected the image.
*
* @return Conditions affected the image, or {@code null} if unknown.
*/
@UML(identifier="imagingCondition", obligation=OPTIONAL, specification=ISO_19115)
ImagingCondition getImagingCondition();
/**
* Specifies the image quality.
*
* @return The image quality, or {@code null} if unknown.
*/
@UML(identifier="imageQualityCode", obligation=OPTIONAL, specification=ISO_19115)
Identifier getImageQualityCode();
/**
* Area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
*
* @return A value between 0 and 100, or {@code null} if unknown.
*/
@UML(identifier="cloudCoverPercentage", obligation=OPTIONAL, specification=ISO_19115)
Double getCloudCoverPercentage();
/**
* Image distributor's code that identifies the level of radiometric and geometric
* processing that has been applied.
*
* @return The level of radiometric and geometric processing that has been applied,
* or {@code null} if unknown.
*/
@UML(identifier="processingLevelCode", obligation=OPTIONAL, specification=ISO_19115)
Identifier getProcessingLevelCode();
/**
* Count of the number the number of lossy compression cycles performed on the image.
* Returns {@code null} if the information is not provided.
*
* @return The number the number of lossy compression cycles performed on the image,
* or {@code null} if unknown.
*/
@UML(identifier="compressionGenerationQuantity", obligation=OPTIONAL, specification=ISO_19115)
Integer getCompressionGenerationQuantity();
/**
* Indication of whether or not triangulation has been performed upon the image.
* Returns {@code null} if the information is not provided.
*
* @return Whether or not triangulation has been performed upon the image,
* or {@code null} if unknown.
*/
@UML(identifier="triangulationIndicator", obligation=OPTIONAL, specification=ISO_19115)
Boolean getTriangulationIndicator();
/**
* Indication of whether or not the radiometric calibration information for generating the
* radiometrically calibrated standard data product is available.
*
* @return Whether or not the radiometric calibration information is available,
* or {@code null} if unknown.
*/
@UML(identifier="radiometricCalibrationDataAvailability", obligation=OPTIONAL, specification=ISO_19115)
Boolean isRadiometricCalibrationDataAvailable();
/**
* Indication of whether or not constants are available which allow for camera calibration
* corrections.
*
* @return Whether or not constants are available for camera calibration corrections,
* or {@code null} if unknown.
*/
@UML(identifier="cameraCalibrationInformationAvailability", obligation=OPTIONAL, specification=ISO_19115)
Boolean isCameraCalibrationInformationAvailable();
/**
* Indication of whether or not Calibration Reseau information is available.
*
* @return Whether or not Calibration Reseau information is available,
* or {@code null} if unknown.
*/
@UML(identifier="filmDistortionInformationAvailability", obligation=OPTIONAL, specification=ISO_19115)
Boolean isFilmDistortionInformationAvailable();
/**
* Indication of whether or not lens aberration correction information is available.
*
* @return Whether or not lens aberration correction information is available,
* or {@code null} if unknown.
*/
@UML(identifier="lensDistortionInformationAvailability", obligation=OPTIONAL, specification=ISO_19115)
Boolean isLensDistortionInformationAvailable();
}