/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* This package contains documentation from OpenGIS specifications.
* OpenGIS consortium's work is fully acknowledged here.
*/
package org.geotools.metadata.iso.content;
import org.opengis.metadata.Identifier;
import org.opengis.metadata.content.ImageDescription;
import org.opengis.metadata.content.ImagingCondition;
/**
* Information about an image's suitability for use.
*
* @source $URL$
* @version $Id$
* @author Martin Desruisseaux (IRD)
* @author Touraïvane
*
* @since 2.1
*/
public class ImageDescriptionImpl extends CoverageDescriptionImpl implements ImageDescription {
/**
* Serial number for interoperability with different versions.
*/
private static final long serialVersionUID = -6168624828802439062L;
/**
* Illumination elevation measured in degrees clockwise from the target plane at
* intersection of the optical line of sight with the Earths surface. For images from a
* scanning device, refer to the centre pixel of the image.
*/
private Double illuminationElevationAngle;
/**
* 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.
*/
private Double illuminationAzimuthAngle;
/**
* Conditions affected the image.
*/
private ImagingCondition imagingCondition;
/**
* Specifies the image quality.
*/
private Identifier imageQualityCode;
/**
* Area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
*/
private Double cloudCoverPercentage;
/**
* Image distributors code that identifies the level of radiometric and geometric
* processing that has been applied.
*/
private Identifier processingLevelCode;
/**
* Count of the number the number of lossy compression cycles performed on the image.
* {@code null} if the information is not provided.
*/
private Integer compressionGenerationQuantity;
/**
* Indication of whether or not triangulation has been performed upon the image.
* {@code null} if the information is not provided.
*/
private Boolean triangulationIndicator;
/**
* Indication of whether or not the radiometric calibration information for generating the
* radiometrically calibrated standard data product is available.
*/
private Boolean radiometricCalibrationDataAvailable;
/**
* Indication of whether or not constants are available which allow for camera calibration
* corrections.
*/
private Boolean cameraCalibrationInformationAvailable;
/**
* Indication of whether or not Calibration Reseau information is available.
*/
private Boolean filmDistortionInformationAvailable;
/**
* Indication of whether or not lens aberration correction information is available.
*/
private Boolean lensDistortionInformationAvailable;
/**
* Constructs an initially empty image description.
*/
public ImageDescriptionImpl() {
}
/**
* Constructs a metadata entity initialized with the values from the specified metadata.
*
* @since 2.4
*/
public ImageDescriptionImpl(final ImageDescription source) {
super(source);
}
/**
* Returns the illumination elevation measured in degrees clockwise from the target plane at
* intersection of the optical line of sight with the Earths surface. For images from a
* scanning device, refer to the centre pixel of the image.
*/
public Double getIlluminationElevationAngle() {
return illuminationElevationAngle;
}
/**
* Set the illumination elevation measured in degrees clockwise from the target plane at
* intersection of the optical line of sight with the Earths surface. For images from a
* scanning device, refer to the centre pixel of the image.
*/
public synchronized void setIlluminationElevationAngle(final Double newValue) {
checkWritePermission();
illuminationElevationAngle = newValue;
}
/**
* 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.
*/
public Double getIlluminationAzimuthAngle() {
return illuminationAzimuthAngle;
}
/**
* Set 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.
*/
public synchronized void setIlluminationAzimuthAngle(final Double newValue) {
checkWritePermission();
illuminationAzimuthAngle = newValue;
}
/**
* Returns the conditions affected the image.
*/
public ImagingCondition getImagingCondition() {
return imagingCondition;
}
/**
* Set the conditions affected the image.
*/
public synchronized void setImagingCondition(final ImagingCondition newValue) {
checkWritePermission();
imagingCondition = newValue;
}
/**
* Returns the specifies the image quality.
*/
public Identifier getImageQualityCode() {
return imageQualityCode;
}
/**
* Set the specifies the image quality.
*/
public synchronized void setImageQualityCode(final Identifier newValue) {
checkWritePermission();
imageQualityCode = newValue;
}
/**
* Returns the area of the dataset obscured by clouds, expressed as a percentage of the spatial
* extent.
*/
public Double getCloudCoverPercentage() {
return cloudCoverPercentage;
}
/**
* Set the area of the dataset obscured by clouds, expressed as a percentage of the spatial
* extent.
*/
public synchronized void setCloudCoverPercentage(final Double newValue) {
checkWritePermission();
cloudCoverPercentage = newValue;
}
/**
* Returns the image distributors code that identifies the level of radiometric and geometric
* processing that has been applied.
*/
public Identifier getProcessingLevelCode() {
return processingLevelCode;
}
/**
* Set the image distributors code that identifies the level of radiometric and geometric
* processing that has been applied.
*/
public synchronized void setProcessingLevelCode(final Identifier newValue) {
checkWritePermission();
processingLevelCode = newValue;
}
/**
* Returns the count of the number the number of lossy compression cycles performed on the
* image. Returns {@code null} if the information is not provided.
*/
public Integer getCompressionGenerationQuantity() {
return compressionGenerationQuantity;
}
/**
* Set the count of the number the number of lossy compression cycles performed on the image.
*/
public synchronized void setCompressionGenerationQuantity(final Integer newValue) {
checkWritePermission();
compressionGenerationQuantity = newValue;
}
/**
* Returns the indication of whether or not triangulation has been performed upon the image.
* Returns {@code null} if the information is not provided.
*/
public Boolean getTriangulationIndicator() {
return triangulationIndicator;
}
/**
* Set the indication of whether or not triangulation has been performed upon the image.
*/
public synchronized void setTriangulationIndicator(final Boolean newValue) {
checkWritePermission();
triangulationIndicator = newValue;
}
/**
* Returns theiIndication of whether or not the radiometric calibration information for
* generating the radiometrically calibrated standard data product is available.
*/
public Boolean isRadiometricCalibrationDataAvailable() {
return radiometricCalibrationDataAvailable;
}
/**
* Set the indication of whether or not the radiometric calibration information for generating
* the radiometrically calibrated standard data product is available.
*/
public synchronized void setRadiometricCalibrationDataAvailable(final Boolean newValue) {
checkWritePermission();
radiometricCalibrationDataAvailable = newValue;
}
/**
* Returns the indication of whether or not constants are available which allow for camera
* calibration corrections.
*/
public Boolean isCameraCalibrationInformationAvailable() {
return cameraCalibrationInformationAvailable;
}
/**
* Set the indication of whether or not constants are available which allow for camera
* calibration corrections.
*/
public synchronized void setCameraCalibrationInformationAvailable(final Boolean newValue) {
checkWritePermission();
cameraCalibrationInformationAvailable = newValue;
}
/**
* Returns the indication of whether or not Calibration Reseau information is available.
*/
public Boolean isFilmDistortionInformationAvailable() {
return filmDistortionInformationAvailable;
}
/**
* Set the indication of whether or not Calibration Reseau information is available.
*/
public synchronized void setFilmDistortionInformationAvailable(final Boolean newValue) {
checkWritePermission();
filmDistortionInformationAvailable = newValue;
}
/**
* Returns the indication of whether or not lens aberration correction information is available.
*/
public Boolean isLensDistortionInformationAvailable() {
return lensDistortionInformationAvailable;
}
/**
* Set the indication of whether or not lens aberration correction information is available.
*/
public synchronized void setLensDistortionInformationAvailable(final Boolean newValue) {
checkWritePermission();
lensDistortionInformationAvailable = newValue;
}
}