001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2018-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.feature; 019 020import org.opengis.annotation.UML; 021import org.opengis.annotation.Stereotype; 022import org.opengis.annotation.Classifier; 023 024import static org.opengis.annotation.Specification.OGC_MOVING_FEATURE; 025 026 027/** 028 * Definition of a dynamic attribute in a moving feature type. 029 * Dynamic attributes describe attributes of a feature in which the values vary with time and/or location. 030 * A {@link Feature} having dynamic attributes is a moving feature. 031 * A moving feature can have an arbitrary number of time-varying attributes, 032 * such as the velocity of vehicles or the wind speed of hurricanes. 033 * 034 * <p>Dynamic attributes are used for non-spatial attribute. 035 * If the value type of a dynamic attribute is geometric point, it is a trajectory.</p> 036 * 037 * @param <V> the type of attribute values. 038 * 039 * @author Martin Desruisseaux (Geomatys) 040 * @version 3.1 041 * @since 3.1 042 * 043 * @see DynamicAttribute 044 * @see AttributeType 045 */ 046@Classifier(Stereotype.METACLASS) 047@UML(identifier="DynamicAttributeType", specification=OGC_MOVING_FEATURE) 048public interface DynamicAttributeType<V> extends AttributeType<V> { 049 /** 050 * Creates a new attribute instance of this type. 051 * 052 * @return a new dynamic attribute instance. 053 * @throws UnsupportedOperationException if this type does not support new instance creation. 054 */ 055 @Override 056 DynamicAttribute<V> newInstance() throws UnsupportedOperationException; 057}