All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opengis.feature.Feature Maven / Gradle / Ivy

There is a newer version: 24.2-oss84-1
Show newest version
/*
 *    GeoTools - The Open Source Java GIS Toolkit
 *    http://geotools.org
 *
 *    (C) 2011, Open Source Geospatial Foundation (OSGeo)
 *    (C) 2004-2007 Open Geospatial Consortium Inc.
 *
 *    All Rights Reserved. http://www.opengis.org/legal/
 */
package org.opengis.feature;

import org.opengis.feature.type.FeatureType;
import org.opengis.filter.identity.FeatureId;
import org.opengis.geometry.BoundingBox;

/**
 * An instance of {@link FeatureType} representing a geographic feature composed of geometric and
 * non-geometric properties.
 *
 * 

Beyond being a complex attribute, a feature contains the following additional information: * *

    *
  • A default geometry. To be used when drawing when nothing more specific has been provided. *
  • The bounds of all the geometric attributes of the feature *
* * @see FeatureType * @author Jody Garnett (Refractions Research) * @author Justin Deoliveira (The Open Planning Project) * @since GeoAPI 2.2 * @version 8.0 */ public interface Feature extends ComplexAttribute { /** * Override and type narrow to FeatureType. * * @return The feature type */ FeatureType getType(); /** * A unique identifier for the feature. * *

getType().isIdentifiable() must return true so this value must * not return null. * *

Generation of the identifier is dependent on the underlying data storage medium. Often * this identifier is not persistent. Mediums such shapefiles and database tables have "keys" * built in which map naturally to persistent feature identifiers. But other mediums do not have * such keys and may have to generate feature identifiers "on-the-fly". This means that client * code being able to depend on this value as a persistent entity is dependent on which storage * medium or data source is being used. * * @return The feature identifier, never null. */ FeatureId getIdentifier(); /** * The bounds of this Feature, if available. * *

This value is derived from any geometric attributes that the feature is composed of. * *

In the case that the feature has no geometric attributes this method should return an * empty bounds, ie, bounds.isEmpty() == true. This method should never return * null. * *

The coordinate reference system of the returned bounds is derived from the geometric * attributes which were used to compute the bounds. In the event that the feature contains * multiple geometric attributes which have different crs's, the one defined by {@link * #getGeometryDescriptor()} should take precedence and the others should be reprojected * accordingly. * * @return the feature bounds, possibly empty. */ BoundingBox getBounds(); /** * The default geometric attribute of the feature. * *

This method returns null in the case where no such attribute exists. * * @return The default geometry attribute, or null. */ GeometryAttribute getDefaultGeometryProperty(); /** * Sets the default geometric attribute of the feature. * *

This value must be an attribute which is already defined for the feature. In other words, * this method can not be used to add a new attribute to the feature. * * @param geometryAttribute The new geomtric attribute. * @throws IllegalArgumentException If the specified attribute is not already an attribute of * the feature. */ void setDefaultGeometryProperty(GeometryAttribute geometryAttribute); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy