001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2003-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.referencing.operation; 019 020import org.opengis.parameter.ParameterValueGroup; 021import org.opengis.annotation.UML; 022import org.opengis.annotation.Classifier; 023import org.opengis.annotation.Stereotype; 024 025import static org.opengis.annotation.Obligation.*; 026import static org.opengis.annotation.Specification.*; 027 028 029/** 030 * A parameterized mathematical operation on coordinates that changes coordinates to another <abbr>CRS</abbr>. 031 * This coordinate operation thus uses an operation method, usually with associated parameter values. 032 * This is a single (not {@linkplain ConcatenatedOperation concatenated}) coordinate operation. 033 * 034 * @author OGC Topic 2 (for abstract model and documentation) 035 * @author Martin Desruisseaux (Geomatys) 036 * @version 3.1 037 * @since 1.0 038 */ 039@Classifier(Stereotype.ABSTRACT) 040@UML(identifier="SingleOperation", specification=ISO_19111) 041public interface SingleOperation extends CoordinateOperation { 042 /** 043 * Returns the algorithm or procedure used by this single operation. 044 * 045 * @return algorithm or procedure used by this single operation. 046 */ 047 @UML(identifier="method", obligation=MANDATORY, specification=ISO_19111) 048 OperationMethod getMethod(); 049 050 /** 051 * Returns the parameter values used by this single operation. 052 * If the operation has no parameter, then this method shall return an empty group. 053 * 054 * @return the parameter values used by this single operation. 055 * Never {@code null} but may be a group with no parameter. 056 * 057 * @departure easeOfUse 058 * The sequence if {@code GeneralParameterValue} is replaced by a {@code ParameterValueGroup} 059 * because it provides method for fetching parameters by their names. 060 * 061 * @see OperationMethod#getParameters() 062 */ 063 @UML(identifier="parameterValue", obligation=OPTIONAL, specification=ISO_19111) 064 ParameterValueGroup getParameterValues(); 065}