001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 004 * http://www.geoapi.org 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.opengis.metadata.content; 019 020import org.opengis.metadata.Identifier; 021import org.opengis.annotation.UML; 022 023import static org.opengis.annotation.Obligation.*; 024import static org.opengis.annotation.Specification.*; 025 026 027/** 028 * Information about an image's suitability for use. 029 * 030 * @author Martin Desruisseaux (IRD) 031 * @author Cory Horner (Refractions Research) 032 * @author Rémi Maréchal (Geomatys) 033 * @version 3.1 034 * @since 2.0 035 */ 036@UML(identifier="MD_ImageDescription", specification=ISO_19115) 037public interface ImageDescription extends CoverageDescription { 038 /** 039 * Illumination elevation measured in degrees clockwise from the target plane 040 * at intersection of the optical line of sight with the planet's surface. 041 * For images from a scanning device, refer to the centre pixel of the image. 042 * 043 * @return a value between -90° and +90°, or {@code null} if unspecified. 044 */ 045 @UML(identifier="illuminationElevationAngle", obligation=OPTIONAL, specification=ISO_19115) 046 default Double getIlluminationElevationAngle() { 047 return null; 048 } 049 050 /** 051 * Illumination azimuth measured in degrees clockwise from true north at the time the 052 * image is taken. For images from a scanning device, refer to the centre pixel of the image. 053 * 054 * @return a value between 0° and 360°, or {@code null} if unspecified. 055 */ 056 @UML(identifier="illuminationAzimuthAngle", obligation=OPTIONAL, specification=ISO_19115) 057 default Double getIlluminationAzimuthAngle() { 058 return null; 059 } 060 061 /** 062 * Conditions which affected the image. 063 * 064 * @return conditions which affected the image, or {@code null} if unspecified. 065 */ 066 @UML(identifier="imagingCondition", obligation=OPTIONAL, specification=ISO_19115) 067 default ImagingCondition getImagingCondition() { 068 return null; 069 } 070 071 /** 072 * Code in producer’s codespace that specifies the image quality. 073 * 074 * @return the image quality, or {@code null} if unspecified. 075 */ 076 @UML(identifier="imageQualityCode", obligation=OPTIONAL, specification=ISO_19115) 077 default Identifier getImageQualityCode() { 078 return null; 079 } 080 081 /** 082 * Area of the dataset obscured by clouds, expressed as a percentage of the spatial extent. 083 * 084 * @return a value between 0 and 100, or {@code null} if unspecified. 085 */ 086 @UML(identifier="cloudCoverPercentage", obligation=OPTIONAL, specification=ISO_19115) 087 default Double getCloudCoverPercentage() { 088 return null; 089 } 090 091 /** 092 * Count of the number of lossy compression cycles performed on the image. 093 * Returns {@code null} if the information is not provided. 094 * 095 * @return the number of lossy compression cycles performed on the image, 096 * or {@code null} if unspecified. 097 */ 098 @UML(identifier="compressionGenerationQuantity", obligation=OPTIONAL, specification=ISO_19115) 099 default Integer getCompressionGenerationQuantity() { 100 return null; 101 } 102 103 /** 104 * Indication of whether or not triangulation has been performed upon the image. 105 * Returns {@code null} if the information is not provided. 106 * 107 * @return whether or not triangulation has been performed upon the image, 108 * or {@code null} if unspecified. 109 */ 110 @UML(identifier="triangulationIndicator", obligation=OPTIONAL, specification=ISO_19115) 111 default Boolean getTriangulationIndicator() { 112 return null; 113 } 114 115 /** 116 * Indication of whether or not the radiometric calibration information for generating the 117 * radiometrically calibrated standard data product is available. 118 * 119 * @return whether or not the radiometric calibration information is available, 120 * or {@code null} if unspecified. 121 */ 122 @UML(identifier="radiometricCalibrationDataAvailability", obligation=OPTIONAL, specification=ISO_19115) 123 default Boolean isRadiometricCalibrationDataAvailable() { 124 return null; 125 } 126 127 /** 128 * Indication of whether or not constants are available which allow for camera calibration corrections. 129 * 130 * @return whether or not constants are available for camera calibration corrections, 131 * or {@code null} if unspecified. 132 */ 133 @UML(identifier="cameraCalibrationInformationAvailability", obligation=OPTIONAL, specification=ISO_19115) 134 default Boolean isCameraCalibrationInformationAvailable() { 135 return null; 136 } 137 138 /** 139 * Indication of whether or not Calibration Reseau information is available. 140 * 141 * @return whether or not Calibration Reseau information is available, 142 * or {@code null} if unspecified. 143 */ 144 @UML(identifier="filmDistortionInformationAvailability", obligation=OPTIONAL, specification=ISO_19115) 145 default Boolean isFilmDistortionInformationAvailable() { 146 return null; 147 } 148 149 /** 150 * Indication of whether or not lens aberration correction information is available. 151 * 152 * @return whether or not lens aberration correction information is available, 153 * or {@code null} if unspecified. 154 */ 155 @UML(identifier="lensDistortionInformationAvailability", obligation=OPTIONAL, specification=ISO_19115) 156 default Boolean isLensDistortionInformationAvailable() { 157 return null; 158 } 159}