001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2004-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2004, Institut de Recherche pour le Développement
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * This package contains documentation from OpenGIS specifications.
018: * OpenGIS consortium's work is fully acknowledged here.
019: */
020: package org.geotools.metadata.iso.content;
021:
022: // OpenGIS dependencies
023: import org.opengis.metadata.Identifier;
024: import org.opengis.metadata.content.ImageDescription;
025: import org.opengis.metadata.content.ImagingCondition;
026:
027: /**
028: * Information about an image's suitability for use.
029: *
030: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/content/ImageDescriptionImpl.java $
031: * @version $Id: ImageDescriptionImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
032: * @author Martin Desruisseaux
033: * @author Touraïvane
034: *
035: * @since 2.1
036: */
037: public class ImageDescriptionImpl extends CoverageDescriptionImpl
038: implements ImageDescription {
039: /**
040: * Serial number for interoperability with different versions.
041: */
042: private static final long serialVersionUID = -6168624828802439062L;
043:
044: /**
045: * Illumination elevation measured in degrees clockwise from the target plane at
046: * intersection of the optical line of sight with the Earth’s surface. For images from a
047: * scanning device, refer to the centre pixel of the image.
048: */
049: private Double illuminationElevationAngle;
050:
051: /**
052: * Illumination azimuth measured in degrees clockwise from true north at the time the
053: * image is taken. For images from a scanning device, refer to the centre pixel of the image.
054: */
055: private Double illuminationAzimuthAngle;
056:
057: /**
058: * Conditions affected the image.
059: */
060: private ImagingCondition imagingCondition;
061:
062: /**
063: * Specifies the image quality.
064: */
065: private Identifier imageQualityCode;
066:
067: /**
068: * Area of the dataset obscured by clouds, expressed as a percentage of the spatial extent.
069: */
070: private Double cloudCoverPercentage;
071:
072: /**
073: * Image distributor’s code that identifies the level of radiometric and geometric
074: * processing that has been applied.
075: */
076: private Identifier processingLevelCode;
077:
078: /**
079: * Count of the number the number of lossy compression cycles performed on the image.
080: * {@code null} if the information is not provided.
081: */
082: private Integer compressionGenerationQuantity;
083:
084: /**
085: * Indication of whether or not triangulation has been performed upon the image.
086: * {@code null} if the information is not provided.
087: */
088: private Boolean triangulationIndicator;
089:
090: /**
091: * Indication of whether or not the radiometric calibration information for generating the
092: * radiometrically calibrated standard data product is available.
093: */
094: private Boolean radiometricCalibrationDataAvailable;
095:
096: /**
097: * Indication of whether or not constants are available which allow for camera calibration
098: * corrections.
099: */
100: private Boolean cameraCalibrationInformationAvailable;
101:
102: /**
103: * Indication of whether or not Calibration Reseau information is available.
104: */
105: private Boolean filmDistortionInformationAvailable;
106:
107: /**
108: * Indication of whether or not lens aberration correction information is available.
109: */
110: private Boolean lensDistortionInformationAvailable;
111:
112: /**
113: * Constructs an initially empty image description.
114: */
115: public ImageDescriptionImpl() {
116: }
117:
118: /**
119: * Constructs a metadata entity initialized with the values from the specified metadata.
120: *
121: * @since 2.4
122: */
123: public ImageDescriptionImpl(final ImageDescription source) {
124: super (source);
125: }
126:
127: /**
128: * Returns the illumination elevation measured in degrees clockwise from the target plane at
129: * intersection of the optical line of sight with the Earth’s surface. For images from a
130: * scanning device, refer to the centre pixel of the image.
131: */
132: public Double getIlluminationElevationAngle() {
133: return illuminationElevationAngle;
134: }
135:
136: /**
137: * Set the illumination elevation measured in degrees clockwise from the target plane at
138: * intersection of the optical line of sight with the Earth’s surface. For images from a
139: * scanning device, refer to the centre pixel of the image.
140: */
141: public synchronized void setIlluminationElevationAngle(
142: final Double newValue) {
143: checkWritePermission();
144: illuminationElevationAngle = newValue;
145: }
146:
147: /**
148: * Returns the illumination azimuth measured in degrees clockwise from true north at the time
149: * the image is taken. For images from a scanning device, refer to the centre pixel of the
150: * image.
151: */
152: public Double getIlluminationAzimuthAngle() {
153: return illuminationAzimuthAngle;
154: }
155:
156: /**
157: * Set the illumination azimuth measured in degrees clockwise from true north at the time the
158: * image is taken. For images from a scanning device, refer to the centre pixel of the image.
159: */
160: public synchronized void setIlluminationAzimuthAngle(
161: final Double newValue) {
162: checkWritePermission();
163: illuminationAzimuthAngle = newValue;
164: }
165:
166: /**
167: * Returns the conditions affected the image.
168: */
169: public ImagingCondition getImagingCondition() {
170: return imagingCondition;
171: }
172:
173: /**
174: * Set the conditions affected the image.
175: */
176: public synchronized void setImagingCondition(
177: final ImagingCondition newValue) {
178: checkWritePermission();
179: imagingCondition = newValue;
180: }
181:
182: /**
183: * Returns the specifies the image quality.
184: */
185: public Identifier getImageQualityCode() {
186: return imageQualityCode;
187: }
188:
189: /**
190: * Set the specifies the image quality.
191: */
192: public synchronized void setImageQualityCode(
193: final Identifier newValue) {
194: checkWritePermission();
195: imageQualityCode = newValue;
196: }
197:
198: /**
199: * Returns the area of the dataset obscured by clouds, expressed as a percentage of the spatial
200: * extent.
201: */
202: public Double getCloudCoverPercentage() {
203: return cloudCoverPercentage;
204: }
205:
206: /**
207: * Set the area of the dataset obscured by clouds, expressed as a percentage of the spatial
208: * extent.
209: */
210: public synchronized void setCloudCoverPercentage(
211: final Double newValue) {
212: checkWritePermission();
213: cloudCoverPercentage = newValue;
214: }
215:
216: /**
217: * Returns the image distributor’s code that identifies the level of radiometric and geometric
218: * processing that has been applied.
219: */
220: public Identifier getProcessingLevelCode() {
221: return processingLevelCode;
222: }
223:
224: /**
225: * Set the image distributor’s code that identifies the level of radiometric and geometric
226: * processing that has been applied.
227: */
228: public synchronized void setProcessingLevelCode(
229: final Identifier newValue) {
230: checkWritePermission();
231: processingLevelCode = newValue;
232: }
233:
234: /**
235: * Returns the count of the number the number of lossy compression cycles performed on the
236: * image. Returns {@code null} if the information is not provided.
237: */
238: public Integer getCompressionGenerationQuantity() {
239: return compressionGenerationQuantity;
240: }
241:
242: /**
243: * Set the count of the number the number of lossy compression cycles performed on the image.
244: */
245: public synchronized void setCompressionGenerationQuantity(
246: final Integer newValue) {
247: checkWritePermission();
248: compressionGenerationQuantity = newValue;
249: }
250:
251: /**
252: * Returns the indication of whether or not triangulation has been performed upon the image.
253: * Returns {@code null} if the information is not provided.
254: */
255: public Boolean getTriangulationIndicator() {
256: return triangulationIndicator;
257: }
258:
259: /**
260: * Set the indication of whether or not triangulation has been performed upon the image.
261: */
262: public synchronized void setTriangulationIndicator(
263: final Boolean newValue) {
264: checkWritePermission();
265: triangulationIndicator = newValue;
266: }
267:
268: /**
269: * Returns theiIndication of whether or not the radiometric calibration information for
270: * generating the radiometrically calibrated standard data product is available.
271: */
272: public Boolean isRadiometricCalibrationDataAvailable() {
273: return radiometricCalibrationDataAvailable;
274: }
275:
276: /**
277: * Set the indication of whether or not the radiometric calibration information for generating
278: * the radiometrically calibrated standard data product is available.
279: */
280: public synchronized void setRadiometricCalibrationDataAvailable(
281: final Boolean newValue) {
282: checkWritePermission();
283: radiometricCalibrationDataAvailable = newValue;
284: }
285:
286: /**
287: * Returns the indication of whether or not constants are available which allow for camera
288: * calibration corrections.
289: */
290: public Boolean isCameraCalibrationInformationAvailable() {
291: return cameraCalibrationInformationAvailable;
292: }
293:
294: /**
295: * Set the indication of whether or not constants are available which allow for camera
296: * calibration corrections.
297: */
298: public synchronized void setCameraCalibrationInformationAvailable(
299: final Boolean newValue) {
300: checkWritePermission();
301: cameraCalibrationInformationAvailable = newValue;
302: }
303:
304: /**
305: * Returns the indication of whether or not Calibration Reseau information is available.
306: */
307: public Boolean isFilmDistortionInformationAvailable() {
308: return filmDistortionInformationAvailable;
309: }
310:
311: /**
312: * Set the indication of whether or not Calibration Reseau information is available.
313: */
314: public synchronized void setFilmDistortionInformationAvailable(
315: final Boolean newValue) {
316: checkWritePermission();
317: filmDistortionInformationAvailable = newValue;
318: }
319:
320: /**
321: * Returns the indication of whether or not lens aberration correction information is available.
322: */
323: public Boolean isLensDistortionInformationAvailable() {
324: return lensDistortionInformationAvailable;
325: }
326:
327: /**
328: * Set the indication of whether or not lens aberration correction information is available.
329: */
330: public synchronized void setLensDistortionInformationAvailable(
331: final Boolean newValue) {
332: checkWritePermission();
333: lensDistortionInformationAvailable = newValue;
334: }
335: }
|