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

org.opengis.geometry.primitive.Surface 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) 2003-2005, Open Geospatial Consortium Inc.
 *
 *    All Rights Reserved. http://www.opengis.org/legal/
 */
package org.opengis.geometry.primitive;

import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;

import java.util.List;
import org.opengis.annotation.Association;
import org.opengis.annotation.UML;
import org.opengis.geometry.coordinate.GenericSurface;

/**
 * Surface with a positive orientation. {@code Surface} is a subclass of {@link Primitive} and is
 * the basis for 2-dimensional geometry. Unorientable surfaces such as the Möbius band are not
 * allowed. The orientation of a surface chooses an "up" direction through the choice of the upward
 * normal, which, if the surface is not a cycle, is the side of the surface from which the exterior
 * boundary appears counterclockwise. Reversal of the surface orientation reverses the curve
 * orientation of each boundary component, and interchanges the conceptual "up" and "down" direction
 * of the surface. If the surface is the boundary of a solid, the "up" direction is usually outward.
 * For closed surfaces, which have no boundary, the up direction is that of the surface patches,
 * which must be consistent with one another. Its included {@linkplain SurfacePatch surface patches}
 * describe the interior structure of a {@code Surface}.
 *
 * 
* * NOTE: Other than the restriction on orientability, no other * "validity" condition is required for GM_Surface. * *
* * @version ISO 19107 * @author Martin Desruisseaux (IRD) * @since GeoAPI 1.0 * @see PrimitiveFactory#createSurface(List) * @see PrimitiveFactory#createSurface(SurfaceBoundary) */ @UML(identifier = "GM_Surface", specification = ISO_19107) public interface Surface extends OrientableSurface, GenericSurface { /** * Relates this {@code Surface} to a set of {@linkplain SurfacePatch surface patches} that shall * be joined together to form this surface. Depending on the interpolation method, the set of * patches may require significant additional structure. * *

If the surface {@linkplain #getCoordinateDimension coordinate dimension} is 2, then the * entire {@code Surface} is one logical patch defined by linear interpolation from the * boundary. * * @return The list of surface patches. Should never be {@code null} neither empty. * @see SurfacePatch#getSurface * @see Curve#getSegments * @issue http://jira.codehaus.org/browse/GEO-63 */ @Association("Segmentation") @UML(identifier = "patch", obligation = MANDATORY, specification = ISO_19107) List getPatches(); /** * Returns the orientable surfaces associated with this surface. * * @return The orientable surfaces as an array of length 2. * @see OrientableSurface#getPrimitive * @issue http://jira.codehaus.org/browse/GEO-63 */ @Association("Oriented") @UML(identifier = "proxy", obligation = MANDATORY, specification = ISO_19107) OrientableSurface[] getProxy(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy