001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/model/spatialschema/SurfacePatch.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003     
004    This file is part of deegree.
005    Copyright (C) 2001-2006 by:
006    EXSE, Department of Geography, University of Bonn
007    http://www.giub.uni-bonn.de/deegree/
008    lat/lon GmbH
009    http://www.lat-lon.de
010     
011    This library is free software; you can redistribute it and/or
012    modify it under the terms of the GNU Lesser General Public
013    License as published by the Free Software Foundation; either
014    version 2.1 of the License, or (at your option) any later version.
015     
016    This library is distributed in the hope that it will be useful,
017    but WITHOUT ANY WARRANTY; without even the implied warranty of
018    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
019    Lesser General Public License for more details.
020     
021    You should have received a copy of the GNU Lesser General Public
022    License along with this library; if not, write to the Free Software
023    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
024     
025    Contact:
026     
027    Andreas Poth
028    lat/lon GmbH
029    Aennchenstr. 19
030    53115 Bonn
031    Germany
032    E-Mail: poth@lat-lon.de
033     
034    Prof. Dr. Klaus Greve
035    Department of Geography
036    University of Bonn
037    Meckenheimer Allee 166
038    53115 Bonn
039    Germany
040    E-Mail: greve@giub.uni-bonn.de
041     
042     
043     ---------------------------------------------------------------------------*/
044    
045    package org.deegree.model.spatialschema;
046    
047    import org.deegree.model.crs.CoordinateSystem;
048    
049    /**
050     *
051     * Defining the iso geometry <code>SurfacePatch</code> which is used
052     * for building surfaces. A surface patch is made of one exterior ring
053     * and 0..n interior rings. By definition there can't be a surface patch
054     * with no exterior ring.
055     * A polygon is a specialized surface patch.
056     *
057     * -----------------------------------------------------
058     *
059    * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
060     * @version $Revision: 6259 $ $Date: 2007-03-20 10:15:15 +0100 (Di, 20 Mär 2007) $
061     */
062    
063    public interface SurfacePatch extends GenericSurface {
064        
065        
066        /**
067         * The interpolation determines the surface interpolation mechanism
068         * used for this SurfacePatch. This mechanism uses the control
069         * points and control parameters defined in the various subclasses
070         * to determine the position of this SurfacePatch.
071         */
072        SurfaceInterpolation getInterpolation();
073        
074        /**
075         * returns the exterior ring of the surface
076         */
077        Position[] getExteriorRing();
078        
079        /**
080         * returns the interior rings of the surface
081         */
082        Position[][] getInteriorRings();
083        
084        /**
085         * returns the coordinate system of the surface patch
086         */
087        CoordinateSystem getCoordinateSystem();
088        
089        /**
090         * The Boolean valued operation "intersects" shall return TRUE if this Geometry
091         * intersects another Geometry. Within a Complex, the Primitives do not
092         * intersect one another. In general, topologically structured data uses shared
093         * geometric objects to capture intersection information.
094         */
095        boolean intersects(Geometry gmo);
096        
097        /**
098         * The Boolean valued operation "contains" shall return TRUE if this Geometry
099         * contains another Geometry.
100         */
101        boolean contains(Geometry gmo);
102        
103        /**
104         * The operation "centroid" shall return the mathematical centroid for this
105         * Geometry. The result is not guaranteed to be on the object.
106         */
107        public Point getCentroid();
108        
109        /**
110         * The operation "area" shall return the area of this GenericSurface.
111         * The area of a 2 dimensional geometric object shall be a numeric
112         * measure of its surface area Since area is an accumulation (integral)
113         * of the product of two distances, its return value shall be in a unit
114         * of measure appropriate for measuring distances squared.
115         */
116        public double getArea();
117        
118        /**
119         * @link aggregationByValue
120         * @clientCardinality 1..*
121         */
122    }
123    /* ********************************************************************
124    Changes to this class. What the people have been up to:
125    $Log$
126    Revision 1.6  2006/07/12 14:46:15  poth
127    comment footer added
128    
129    ********************************************************************** */