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

org.opengis.geometry.coordinate.Polygon Maven / Gradle / Ivy

/*
 *    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.coordinate;

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

import java.util.List;
import org.opengis.annotation.UML;
import org.opengis.geometry.complex.Complex;
import org.opengis.geometry.primitive.Curve;
import org.opengis.geometry.primitive.Surface;
import org.opengis.geometry.primitive.SurfaceBoundary;
import org.opengis.geometry.primitive.SurfacePatch;

/**
 * A surface patch that is defined by a set of boundary curves and an underlying surface to which
 * these curves adhere. The default is that the curves are coplanar and the polygon uses planar
 * interpolation in its interior.
 *
 * @version ISO 19107
 * @author Martin Desruisseaux (IRD)
 * @since GeoAPI 2.0
 * @see GeometryFactory#createPolygon(SurfaceBoundary)
 * @see GeometryFactory#createPolygon(SurfaceBoundary,Surface)
 */
@UML(identifier = "GM_Polygon", specification = ISO_19107)
public interface Polygon extends SurfacePatch {
    /**
     * The surface boundary that is the boundary of this polygon. The boundary of a surface patch
     * need not be in the same {@linkplain Complex complex} as the containing {@linkplain Surface
     * surface}. The curves that are contained in the interior of the {@linkplain Surface surface}
     * (act as common boundary to 2 surface patches) are not part of any {@linkplain Complex
     * complex} in which the {@linkplain Surface surface} is contained. They are purely constructive
     * and would not play in any topological relation between {@linkplain Surface surface} and
     * {@linkplain Curve curve} that defines the connectivity of the {@linkplain Complex complex}.
     */
    @UML(identifier = "boundary", obligation = MANDATORY, specification = ISO_19107)
    SurfaceBoundary getBoundary();

    /**
     * Provides a mechanism for spanning the interior of the polygon. The spanning surface should
     * have no boundary components that intersect the boundary of the polygon, and there should be
     * no ambiguity as to which portion of the surface is described by the bounding curves for the
     * polygon. The most common spanning surface is an elevation model, which is not directly
     * described in this standard, although {@linkplain Tin tins} and {@linkplain GriddedSurface
     * gridded surfaces} are often used in this role.
     */
    @UML(identifier = "spanningSurface", obligation = OPTIONAL, specification = ISO_19107)
    List getSpanningSurface();

    /** Returns the patch which own this surface patch. */
    @UML(identifier = "surface", obligation = MANDATORY, specification = ISO_19107)
    PolyhedralSurface getSurface();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy