001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2005-2024 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.annotation; 019 020 021/** 022 * ISO/OGC specifications from which an interface, method, enumeration or code list was derived. 023 * Some specifications are available both at <abbr>OGC</abbr> and <abbr>ISO</abbr>. 024 * 025 * <h2>Specification versions</h2> 026 * Each specification has a {@linkplain #defaultVersion() default version} number, which identifies 027 * more accurately the specification used by most non-deprecated GeoAPI elements: 028 * <ul> 029 * <li>For <abbr>OGC</abbr> specifications, the version number is the <abbr>OGC</abbr> revision number.</li> 030 * <li>For <abbr>ISO</abbr> specifications, the version number is the publication year (ignoring corrigendum, 031 * which are implicit). For example if the specification is {@link #ISO_19115}, then version 032 * 2003 stands for <cite>ISO 19115:2003/Cor.1:2006</cite>.</li> 033 * </ul> 034 * The version numbers are documented in {@code Specification} enumeration constants. 035 * Versions other than the {@linkplain #defaultVersion() default version} may be declared 036 * in the {@link UML#version()} annotation of some GeoAPI elements, usually (but not only) 037 * for deprecated elements. 038 * 039 * @author Martin Desruisseaux (IRD, Geomatys) 040 * @author Cédric Briançon (Geomatys) 041 * @author Johann Sorel (Geomatys) 042 * @version 3.1 043 * @since 2.0 044 * 045 * @see UML#specification() 046 */ 047public enum Specification { 048 /** 049 * ISO 19103, Conceptual schema language. 050 * This is the specification for some interfaces in package {@link org.opengis.util}. 051 * This specification provides basic classes such as names, records and units of measurement. 052 * 053 * <p><b>Version numbers used in GeoAPI:</b></p> 054 * <ul> 055 * <li><b>2005:</b> ISO 19103:2005</li> 056 * <li><b>2015:</b> ISO 19103:2015 ({@linkplain #defaultVersion() default version})</li> 057 * </ul> 058 * 059 * @see <a href="https://www.iso.org/standard/56734.html">ISO 19103:2015 on standards catalogue</a> 060 */ 061 ISO_19103((short) 2015), 062 063 /** 064 * ISO 19107, Feature Geometry (OGC Topic 1). 065 * This is the specification for package {@link org.opengis.geometry} and sub-packages. 066 * It specifies the classes for describing the spatial characteristics of geometries, 067 * and a set of spatial operations. 068 * It treats vector geometry and topology up to three dimensions. 069 * 070 * <p><b>Version numbers used in GeoAPI:</b></p> 071 * <ul> 072 * <li><b>2003:</b> ISO 19107:2003 ({@linkplain #defaultVersion() default version})</li> 073 * </ul> 074 * 075 * @see <a href="https://www.iso.org/standard/26012.html">ISO 19107:2003 on standards catalogue</a> 076 */ 077 ISO_19107((short) 2003), 078 079 /** 080 * ISO 19108, Temporal Schema. 081 * This is the specification for package {@link org.opengis.temporal} and sub-packages. 082 * it defines classes for describing temporal characteristics of geographic information. 083 * 084 * <p><b>Version numbers used in GeoAPI:</b></p> 085 * <ul> 086 * <li><b>2002:</b> ISO 19108:2002/Cor.1:2006 ({@linkplain #defaultVersion() default version})</li> 087 * </ul> 088 * 089 * @see <a href="https://www.iso.org/standard/26013.html">ISO 19108:2002 on standards catalogue</a> 090 * @see <a href="https://www.iso.org/standard/44883.html">Corrigendum</a> 091 */ 092 ISO_19108((short) 2002), 093 094 /** 095 * ISO 19109, Rules for application schema. 096 * This is the specification for package {@link org.opengis.feature}. 097 * It defines principles for the definition of features. 098 * 099 * <p><b>Version numbers used in GeoAPI:</b></p> 100 * <ul> 101 * <li><b>2013:</b> ISO 19109:2013 draft ({@linkplain #defaultVersion() default version})</li> 102 * </ul> 103 * 104 * @see <a href="https://www.iso.org/standard/59193.html">ISO 19109:2015 on standards catalogue</a> 105 * 106 * @since 3.1 107 */ 108 ISO_19109((short) 2013), 109 110 /** 111 * ISO 19111, Referencing by coordinates (OGC Topic 2). 112 * This is the specification for package {@link org.opengis.referencing} and sub-packages. 113 * It defines the minimum data required to define coordinate reference systems, 114 * and the classes for describe operations that change coordinate values. 115 * 116 * <p><b>Version numbers used in GeoAPI:</b></p> 117 * <ul> 118 * <li><b>2003:</b> OGC 03-073r1</li> 119 * <li><b>2007:</b> ISO 19111:2007</li> 120 * <li><b>2019:</b> ISO 19111:2019 ({@linkplain #defaultVersion() default version})</li> 121 * </ul> 122 * 123 * @see #OGC_01009 124 * @see <a href="https://www.iso.org/standard/74039.html">ISO 19111:2019 on standards catalogue</a> 125 * @see <a href="https://portal.ogc.org/files/18-005r5">Download from OGC</a> 126 */ 127 ISO_19111((short) 2019), 128 129 /** 130 * ISO 19112, Spatial referencing by geographic identifiers. 131 * This is the specification for package {@link org.opengis.referencing.gazetteer}. 132 * It defines the essential components of a gazetteer. 133 * 134 * <p><b>Version numbers used in GeoAPI:</b></p> 135 * <ul> 136 * <li><b>2003:</b> ISO 19112:2003 ({@linkplain #defaultVersion() default version})</li> 137 * </ul> 138 * 139 * @see <a href="https://www.iso.org/standard/26017.html">ISO 19112:2003 on standards catalogue</a> 140 * @see <a href="https://portal.opengeospatial.org/files/?artifact_id=46964">OGC 11-122r1 Gazetteer Service — Profile of the Web Feature Service</a> 141 * 142 * @since 3.1 143 */ 144 ISO_19112((short) 2003), 145 146 /** 147 * ISO 19115-1, Metadata part 1: fundamentals (OGC Topic 11). 148 * This is the specification for package {@link org.opengis.metadata} and most sub-packages. 149 * It defines the classes for describing geographic information and services by means of metadata. 150 * It provides information about the identification, the extent, the quality, the spatial and temporal aspects, 151 * the content, the spatial reference, the portrayal, distribution, and other properties of digital geographic 152 * data and services. 153 * 154 * <p><b>Version numbers used in GeoAPI:</b></p> 155 * <ul> 156 * <li><b>2003:</b> ISO 19115:2003/Cor.1:2006</li> 157 * <li><b>2014:</b> ISO 19115-1:2014 ({@linkplain #defaultVersion() default version})</li> 158 * <li><b>2018:</b> ISO 19115-1:2014/Amd 1:2018</li> 159 * <li><b>2020:</b> ISO 19115-1:2014/Amd 2:2020</li> 160 * </ul> 161 * 162 * @see <a href="https://www.iso.org/standard/53798.html">ISO 19115-1:2014 on standards catalogue</a> 163 */ 164 ISO_19115((short) 2014), 165 166 /** 167 * ISO 19115-2, Metadata part 2: Extensions for acquisition and processing. 168 * This is the specification for some sub-packages of {@link org.opengis.metadata}. 169 * It extends the existing geographic metadata standard by defining the classes for 170 * describing imagery and gridded data. It provides information about the properties 171 * of the measuring equipment used to acquire the data, the geometry of the measuring process 172 * employed by the equipment, and the production process used to digitize the raw data. 173 * 174 * <p><b>Version numbers used in GeoAPI:</b></p> 175 * <ul> 176 * <li><b>2009:</b> ISO 19115-2:2009</li> 177 * <li><b>2019:</b> ISO 19115-2:2019 ({@linkplain #defaultVersion() default version})</li> 178 * </ul> 179 * 180 * @see <a href="https://www.iso.org/standard/67039.html">ISO 19115-2:2019 on standards catalogue</a> 181 */ 182 ISO_19115_2((short) 2019), 183 184 /** 185 * ISO 19115-3, Metadata part 3: XML schema implementation for fundamental concepts. 186 * This is the specification for package {@link org.opengis.metadata} and sub-packages. 187 * It defines an integrated <abbr>XML</abbr> implementation of ISO 19115‑1, ISO 19115‑2, 188 * and concepts from ISO 19139. 189 * 190 * <p><b>Version numbers used in GeoAPI:</b></p> 191 * <ul> 192 * <li><b>2016:</b> ISO 19115-3:2016 ({@linkplain #defaultVersion() default version})</li> 193 * </ul> 194 * 195 * @see <a href="https://www.iso.org/standard/32579.html">ISO/TS 19115-3:2016 on standards catalogue</a> 196 * 197 * @since 3.1 198 */ 199 ISO_19115_3((short) 2016), 200 201 /** 202 * ISO 19117, Portrayal. 203 * This is an abstract specification for portraying features. 204 * It defines a schema describing the portrayal of geographic information in a form understandable by humans. 205 * It does not include standardization of cartographic symbols, and their geometric and functional description. 206 * 207 * <p><b>Version numbers used in GeoAPI:</b></p> 208 * <ul> 209 * <li><b>2005:</b> ISO 19117:2005 ({@linkplain #defaultVersion() default version})</li> 210 * </ul> 211 * 212 * @see <a href="https://www.iso.org/standard/40395.html">ISO 19117:2005 on standards catalogue</a> 213 */ 214 ISO_19117((short) 2005), 215 216 /** 217 * ISO 19123, Schema for coverage geometry and functions (OGC Topic 6). 218 * This is the specification for package {@link org.opengis.coverage} and sub-packages. 219 * Coverages support mapping from a spatial, temporal or spatiotemporal domain to feature attribute values 220 * where feature attribute types are common to all geographic positions within the domain. 221 * ISO 19123 defines the relationship between the domain of a coverage and an associated attribute range. 222 * 223 * <p><b>Version numbers used in GeoAPI:</b></p> 224 * <ul> 225 * <li><b>2005:</b> ISO 19123:2005 ({@linkplain #defaultVersion() default version})</li> 226 * </ul> 227 * 228 * @see #OGC_01004 229 * @see <a href="https://www.iso.org/standard/40121.html">ISO 19123:2005 on standards catalogue</a> 230 * @see <a href="http://portal.opengeospatial.org/files/?artifact_id=19820">Download from OGC</a> 231 */ 232 ISO_19123((short) 2005), 233 234 /** 235 * ISO 19128, Web map server interface. 236 * It specifies the behaviour of a service that produces spatially referenced maps 237 * dynamically from geographic information. 238 * 239 * <p><b>Version numbers used in GeoAPI:</b></p> 240 * <ul> 241 * <li><b>2005:</b> ISO 19128:2005 ({@linkplain #defaultVersion() default version})</li> 242 * </ul> 243 * 244 * @see <a href="https://www.iso.org/standard/32546.html">ISO 19128:2005 on standards catalogue</a> 245 * @see <a href="http://portal.opengeospatial.org/files/?artifact_id=5316">Download from OGC</a> 246 */ 247 ISO_19128((short) 2005), 248 249 /** 250 * ISO 19139, Metadata XML schema implementation. 251 * This is the specification for package {@link org.opengis.metadata} and sub-packages. 252 * It defines Geographic MetaData XML ({@code gmd}) encoding, 253 * an XML Schema implementation derived from ISO 19115. 254 * 255 * <p><b>Version numbers used in GeoAPI:</b></p> 256 * <ul> 257 * <li><b>2007:</b> ISO 19139:2007 ({@linkplain #defaultVersion() default version})</li> 258 * </ul> 259 * 260 * @see <a href="https://www.iso.org/standard/32557.html">ISO/TS 19139:2007 on standards catalogue</a> 261 * 262 * @deprecated since {@link #ISO_19115_3} publication, this standard does not define new elements used by GeoAPI. 263 */ 264 @Deprecated(since="3.1") 265 ISO_19139((short) 2007), 266 267 /** 268 * ISO 19143, Filter encoding. 269 * This is the specification for package {@link org.opengis.filter} and sub-packages. 270 * It defines querying in order to obtain a subset of data which contains certain desired information. 271 * 272 * <p><b>Version numbers used in GeoAPI:</b></p> 273 * <ul> 274 * <li><b>2010:</b> ISO 19143:2010 ({@linkplain #defaultVersion() default version})</li> 275 * </ul> 276 * 277 * @see <a href="https://www.iso.org/standard/42137.html">ISO 19143:2010 on standards catalogue</a> 278 * @see <a href="http://docs.opengeospatial.org/is/09-026r2/09-026r2.html">OGC 09-026 on OGC Public Document Repository</a> 279 * 280 * @since 3.1 281 */ 282 ISO_19143((short) 2010), 283 284 /** 285 * ISO 19157, Data quality. 286 * This is the specification for package {@link org.opengis.metadata.quality} and sub-packages. 287 * It establishes the classes for describing the quality of geographic data. 288 * 289 * <p><b>Version numbers used in GeoAPI:</b></p> 290 * <ul> 291 * <li><b>2013:</b> ISO 19157:2013 ({@linkplain #defaultVersion() default version})</li> 292 * </ul> 293 * 294 * @see <a href="https://www.iso.org/standard/32575.html">ISO/TS 19157:2013 on standards catalogue</a> 295 * 296 * @since 3.1 297 */ 298 ISO_19157((short) 2013), 299 300 /** 301 * ISO 19162, Well known text representation of coordinate reference systems. 302 * This is the specification of input and output format of 303 * {@link org.opengis.referencing.crs.CRSFactory#createFromWKT(String)} and 304 * {@link org.opengis.referencing.crs.CoordinateReferenceSystem#toWKT()}. 305 * It defines the structure and content of a text string implementation of the abstract model described in ISO 19111. 306 * The string defines frequently needed types of coordinate reference systems and coordinate operations 307 * in a self-contained form that is readable by machines and by humans. 308 * 309 * <p><b>Version numbers used in GeoAPI:</b></p> 310 * <ul> 311 * <li><b>2015:</b> ISO 19162:2015 ({@linkplain #defaultVersion() default version})</li> 312 * </ul> 313 * 314 * @see <a href="https://www.iso.org/standard/63094.html">ISO 19162:2015 on standards catalogue</a> 315 * 316 * @since 3.1 317 */ 318 ISO_19162((short) 2015), 319 320 /** 321 * GO-1 Application Objects. 322 * 323 * <p><b>Version numbers used in GeoAPI:</b></p> 324 * <ul> 325 * <li><b>10:</b> OGC 03-064r10 ({@linkplain #defaultVersion() default version})</li> 326 * </ul> 327 * 328 * @see <a href="http://www.opengeospatial.org/standards/go">Download from OGC</a> 329 * 330 * @deprecated This specification has been retired. 331 */ 332 @Deprecated(since="3.1") 333 OGC_03064((short) 10), 334 335 /** 336 * Coordinate Transformation Services. 337 * This is the specification used as a complement of {@linkplain #ISO_19111 ISO 19111} 338 * when an aspect was not defined in the ISO specification. 339 * 340 * <p><b>Version numbers used in GeoAPI:</b></p> 341 * <ul> 342 * <li><b>1:</b> OGC 01-009 ({@linkplain #defaultVersion() default version})</li> 343 * </ul> 344 * 345 * @see #ISO_19111 346 * @see <a href="http://www.opengeospatial.org/standards/ct">Download from OGC</a> 347 */ 348 OGC_01009((short) 1), 349 350 /** 351 * Grid Coverages. 352 * This is the specification used as a complement of {@linkplain #ISO_19123 ISO 19123} 353 * when an aspect was not defined in the ISO specification. 354 * 355 * <p><b>Version numbers used in GeoAPI:</b></p> 356 * <ul> 357 * <li><b>1:</b> OGC 01-004 ({@linkplain #defaultVersion() default version})</li> 358 * </ul> 359 * 360 * @see #ISO_19123 361 * @see <a href="http://www.opengeospatial.org/standards/gc">Download from OGC</a> 362 */ 363 OGC_01004((short) 1), 364 365 /** 366 * Moving Features specification. 367 * This is the specification used as a complement of {@linkplain #ISO_19109 ISO 10109} 368 * for defining dynamic attributes. 369 * 370 * <p><b>Version numbers used in GeoAPI:</b></p> 371 * <ul> 372 * <li><b>1:</b> OGC 18-075 ({@linkplain #defaultVersion() default version})</li> 373 * </ul> 374 * 375 * @see #ISO_19109 376 * @see <a href="http://docs.opengeospatial.org/is/18-075/18-075.html">OGC 18-075 on OGC Public Document Repository</a> 377 * 378 * @since 3.1 379 */ 380 OGC_MOVING_FEATURE((short) 1), 381 382 /** 383 * Observations and Measurements, part 1. 384 * This is the specification for package {@link org.opengis.observation}. 385 * 386 * @deprecated To be replaced by Topic 20: Observations and Measurements 387 * @todo Remove before release, since it was not part of GeoAPI 3.0.2. 388 * 389 * @since 3.1 390 */ 391 @Deprecated(forRemoval=true) 392 OGC_07022((short) 1), 393 394 /** 395 * Specification not yet determined. This is a temporary enumeration 396 * for the processing of API submitted by some contributors. 397 * 398 * @deprecated To be removed. 399 */ 400 @Deprecated(since="3.1", forRemoval=true) 401 UNSPECIFIED((short) 1); 402 403 /** 404 * The default version of OGC/ISO standard for this enumeration constant. 405 */ 406 private final short defaultVersion; 407 408 /** 409 * Creates a new enum constant with the given default version. 410 * 411 * @param defaultVersion the default version of OGC/ISO standard for this enumeration constant. 412 */ 413 private Specification(final short defaultVersion) { 414 this.defaultVersion = defaultVersion; 415 } 416 417 /** 418 * The default version of OGC/ISO standard for this enumeration constant. 419 * This is the version used when no value was explicitly given to the {@link UML#version()} annotation. 420 * The meaning of this numerical code is documented in the Javadoc of this {@code Specification} constant. 421 * This is usually the OGC revision number or ISO publication year. 422 * 423 * <div class="note"><b>Examples:</b> 424 * <ul> 425 * <li>For {@link #ISO_19115}, version 2003 stands for <cite>ISO 19115:2003/Cor.1:2006</cite> 426 * and version 2014 stands for <cite>ISO 19115:2014</cite>.</li> 427 * </ul></div> 428 * 429 * @return the default version of OGC/ISO standard for this enumeration constant. 430 * 431 * @see UML#version() 432 * 433 * @since 3.1 434 */ 435 public short defaultVersion() { 436 return defaultVersion; 437 } 438}