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.extent; 019 020import org.opengis.referencing.crs.VerticalCRS; 021import org.opengis.annotation.UML; 022 023import static org.opengis.annotation.Obligation.*; 024import static org.opengis.annotation.Specification.*; 025 026 027/** 028 * Vertical domain of resource. 029 * 030 * @departure integration 031 * ISO 19115 provides two ways to define a coordinate reference system, 032 * with the restriction that only one of those two ways can be used: 033 * <ol> 034 * <li>{@code verticalCRS} of type {@code VerticalCRS} (from ISO 19111),</li> 035 * <li>{@code verticalCRSId} of type {@code MD_ReferenceSystem} (from ISO 19115).</li> 036 * </ol> 037 * GeoAPI provides only the first way, because the {@code MD_ReferenceSystem} type 038 * has been intentionally omitted in order to have a single CRS framework (the ISO 19111 one). 039 * 040 * @author Martin Desruisseaux (IRD) 041 * @author Cory Horner (Refractions Research) 042 * @version 3.1 043 * @since 1.0 044 */ 045@UML(identifier="EX_VerticalExtent", specification=ISO_19115) 046public interface VerticalExtent { 047 /** 048 * The lowest vertical extent contained in the resource. 049 * 050 * @return the lowest vertical extent. 051 */ 052 @UML(identifier="minimumValue", obligation=MANDATORY, specification=ISO_19115) 053 Double getMinimumValue(); 054 055 /** 056 * The highest vertical extent contained in the resource. 057 * 058 * @return the highest vertical extent. 059 */ 060 @UML(identifier="maximumValue", obligation=MANDATORY, specification=ISO_19115) 061 Double getMaximumValue(); 062 063 /** 064 * Provides information about the vertical coordinate reference system 065 * to which the maximum and minimum elevation values are measured. 066 * The CRS identification includes unit of measure. 067 * 068 * <p>This property is conditional in ISO 19115-1:2016 but mandatory in GeoAPI 069 * because the alternative ({@code verticalCRSId}) is intentionally omitted in 070 * order to have a single CRS framework: the ISO 19111 one.</p> 071 * 072 * @return the vertical CRS. 073 */ 074 @UML(identifier="verticalCRS", obligation=CONDITIONAL, specification=ISO_19115) 075 VerticalCRS getVerticalCRS(); 076}