## org.opengis.geometry.primitive
Interface Surface

All Superinterfaces:
  GenericSurface, Geometry, OrientablePrimitive, OrientableSurface, Primitive, TransfiniteSet

All Known Subinterfaces:
  PolyhedralSurface, Tin, TriangulatedSurface

    @UML(identifier="GM_Surface",
         specification=ISO_19107)
    public interface Surface

extends OrientableSurface, GenericSurface

Surface with a positive orientation. `Surface` is a subclass of `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 surface patches describe the interior structure of a `Surface`.

> NOTE: Other than the restriction on orientability, no other "validity" condition is required for GM_Surface.

Since:
  GeoAPI 1.0
Version:
  ISO 19107
See Also:
  `PrimitiveFactory.createSurface(List)`, `PrimitiveFactory.createSurface(SurfaceBoundary)`

Method Summary
`List<? extends SurfacePatch>` `getPatches()` Relates this `Surface` to a set of surface patches that shall be joined together to form this surface.

Methods inherited from interface OrientablePrimitive
`getOrientation, getPrimitive`

Methods inherited from interface Primitive
`getComplexes, getComposite, getContainedPrimitives, getContainingPrimitives, getProxy`

Methods inherited from interface Geometry
`clone, distance, getBoundary, getBuffer, getCentroid, getClosure, getConvexHull, getCoordinateDimension, getCoordinateReferenceSystem, getDimension, getDistance, getEnvelope, getMaximalComplex, getMbRegion, getPrecision, getRepresentativePoint, isCycle, isMutable, isSimple, toImmutable, transform, transform`

Methods inherited from interface TransfiniteSet
`contains, contains, difference, equals, intersection, intersects, symmetricDifference, union`

Methods inherited from interface GenericSurface
`getArea, getPerimeter, getUpNormal`

Method Detail

### getPatches

    @Association(value="Segmentation")
    @UML(identifier="patch",
         obligation=MANDATORY,
         specification=ISO_19107)
    List<? extends SurfacePatch> getPatches()

  Relates this `Surface` to a set of 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 coordinate dimension is 2, then the entire `Surface` is one logical patch defined by linear interpolation from the boundary.

  Returns:
    The list of surface patches. Should never be `null` neither empty.
  See Also:
    `SurfacePatch.getSurface()`, `Curve.getSegments()`

Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.