org.geotools.geometry.jts.spatialschema.geometry.primitive
Class SurfacePatchImpl

java.lang.Object
  extended by org.geotools.geometry.jts.spatialschema.geometry.geometry.GenericSurfaceImpl
      extended by org.geotools.geometry.jts.spatialschema.geometry.primitive.SurfacePatchImpl
All Implemented Interfaces:
JTSGeometry, org.opengis.geometry.coordinate.GenericSurface, org.opengis.geometry.primitive.SurfacePatch
Direct Known Subclasses:
PolygonImpl

public abstract class SurfacePatchImpl
extends GenericSurfaceImpl
implements org.opengis.geometry.primitive.SurfacePatch, JTSGeometry

Defines a homogeneous portion of a surface. Each SurfacePatch shall be in at most one surface.

Version:
2.0
Author:
ISO/DIS 19107, OpenGIS® consortium

Constructor Summary
SurfacePatchImpl(org.opengis.geometry.primitive.SurfaceInterpolation interpolation, org.opengis.geometry.primitive.SurfaceBoundary boundary)
           
 
Method Summary
abstract  com.vividsolutions.jts.geom.Geometry calculateJTSPeer()
           
 double getArea()
          Returns the area of this GenericSurface.
 org.opengis.geometry.primitive.SurfaceBoundary getBoundary()
           
 org.opengis.geometry.primitive.SurfaceInterpolation getInterpolation()
          Determines the surface interpolation mechanism used for this SurfacePatch.
 com.vividsolutions.jts.geom.Geometry getJTSGeometry()
          Retrieves the equivalent JTS geometry for this object.
abstract  int getNumDerivativesOnBoundary()
          Specifies the type of continuity between this surface patch and its immediate neighbors with which it shares a boundary curve.
 double getPerimeter()
          Returns the sum of the lengths of all the boundary components of this GenericSurface.
 org.opengis.geometry.primitive.Surface getSurface()
          Returns the patch which own this surface patch.
 double[] getUpNormal(org.opengis.geometry.DirectPosition point)
          Returns a vector perpendicular to the GenericSurface at the direct position passed, which must be on this GenericSurface.
 void invalidateCachedJTSPeer()
          This method is invoked to cause the JTS object to be recalculated the next time it is requested.
 void setSurface(org.opengis.geometry.primitive.Surface surface)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SurfacePatchImpl

public SurfacePatchImpl(org.opengis.geometry.primitive.SurfaceInterpolation interpolation,
                        org.opengis.geometry.primitive.SurfaceBoundary boundary)
Method Detail

getSurface

public org.opengis.geometry.primitive.Surface getSurface()
Returns the patch which own this surface patch.
NOTE: In this specification, surface patches do not appear except in the context of a surface, and therefore this method should never returns null which would preclude the use of surface patches except in this manner. While this would not affect this specification, allowing null owner allows other standards based on this one to use surface patches in a more open-ended manner.

Specified by:
getSurface in interface org.opengis.geometry.primitive.SurfacePatch
Returns:
The owner of this surface patch, or null if none.
See Also:
Surface.getPatches()

setSurface

public void setSurface(org.opengis.geometry.primitive.Surface surface)

getInterpolation

public org.opengis.geometry.primitive.SurfaceInterpolation getInterpolation()
Determines the surface interpolation mechanism used for this SurfacePatch. This mechanism uses the control points and control parameters defined in the various subclasses to determine the position of this SurfacePatch.

Specified by:
getInterpolation in interface org.opengis.geometry.primitive.SurfacePatch
Returns:
The interpolation mechanism.

getNumDerivativesOnBoundary

public abstract int getNumDerivativesOnBoundary()
Specifies the type of continuity between this surface patch and its immediate neighbors with which it shares a boundary curve. The sequence of values corresponds to the rings in the surface boundary returned by getBoundary() for this patch. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C0" in mathematical texts. A value of 1 means that the functions are continuous and differentiable at the appropriate end point: "C1" continuity. A value of "n" for any integer means n-times differentiable: "Cn" continuity.

Specified by:
getNumDerivativesOnBoundary in interface org.opengis.geometry.primitive.SurfacePatch
Returns:
The type of continuity between this surface patch and its immediate neighbors.

getBoundary

public org.opengis.geometry.primitive.SurfaceBoundary getBoundary()
Specified by:
getBoundary in interface org.opengis.geometry.primitive.SurfacePatch
Returns:
See Also:
com.polexis.lite.spatialschema.geometry.primitive.SurfacePatchImpl#getBoundary()

getUpNormal

public final double[] getUpNormal(org.opengis.geometry.DirectPosition point)
Description copied from class: GenericSurfaceImpl
Returns a vector perpendicular to the GenericSurface at the direct position passed, which must be on this GenericSurface. The upward normal always points upward in a manner consistent with the boundary. This means that the exterior boundary of the surface is counterclockwise when viewed from the side of the surface indicated by the upNormal. Interior boundaries are clockwise. The side of the surface indicated by the upNormal is referred to as the "top." The function "upNormal" shall be continuous and the length of the normal shall always be equal to 1.0.
NOTE: The upNormal along a boundary of a solid always points away from the solid. This is a slight semantics problem in dealing with voids within solids, where the upNormal (for sake of mathematical consistency) points into the center of the voided region, which linguistically can be considered the interior of the void. What the confusion is here is that the basic linguistic metaphors used in most languages for "interior of solid" and for "interior of container" use "inward" in inconsistent manners from a topological point of view. The void "in" rock is not inside the rock in the same manner as the solid material that makes up the substance of the rock. Nor is the coffee "in" the cup the same "in" as the ceramic glass "in" the cup. The use of these culturally derived metaphors may not be consistent across all languages, some of which may use different prepositions for these two different concepts. This specification uses the linguistically neutral concept of "interior" derived from mathematics (topology).

Specified by:
getUpNormal in interface org.opengis.geometry.coordinate.GenericSurface
Specified by:
getUpNormal in class GenericSurfaceImpl
Parameters:
point -
Returns:
See Also:
com.polexis.lite.spatialschema.geometry.geometry.GenericSurfaceImpl#getUpNormal(org.opengis.geometry.coordinate.DirectPosition)

getPerimeter

public final double getPerimeter()
Description copied from class: GenericSurfaceImpl
Returns the sum of the lengths of all the boundary components of this GenericSurface. Since perimeter, like length, is an accumulation (integral) of distance, its return value shall be in a reference system appropriate for measuring distances.
NOTE: The perimeter is defined as the sum of the lengths of all boundary components. The length of a curve or of a collection of curves is always positive and non-zero (unless the curve is pathological). This means that holes in surfaces will contribute positively to the total perimeter.

Specified by:
getPerimeter in interface org.opengis.geometry.coordinate.GenericSurface
Specified by:
getPerimeter in class GenericSurfaceImpl
Returns:
See Also:
com.polexis.lite.spatialschema.geometry.geometry.GenericSurfaceImpl#getPerimeter()

getArea

public final double getArea()
Description copied from class: GenericSurfaceImpl
Returns the area of this GenericSurface. The area of a 2-dimensional geometric object shall be a numeric measure of its surface area (in a square unit of distance). Since area is an accumulation (integral) of the product of two distances, its return value shall be in a unit of measure appropriate for measuring distances squared, such as meters squared (m2).
NOTE: Consistent with the definition of surface as a set of direct positions, holes in the surfaces will not contribute to the total area. If the usual Green's Theorem (or more general Stokes' Theorem) integral is used, the integral around the holes in the surface are subtracted from the integral about the exterior of the surface patch.

Specified by:
getArea in interface org.opengis.geometry.coordinate.GenericSurface
Specified by:
getArea in class GenericSurfaceImpl
Returns:
The area.

getJTSGeometry

public com.vividsolutions.jts.geom.Geometry getJTSGeometry()
Retrieves the equivalent JTS geometry for this object. Note that this operation may be expensive if the geometry must be computed.

Specified by:
getJTSGeometry in interface JTSGeometry

invalidateCachedJTSPeer

public void invalidateCachedJTSPeer()
This method is invoked to cause the JTS object to be recalculated the next time it is requested. This method will be called by the underlying guts of the code when something has changed.

Specified by:
invalidateCachedJTSPeer in interface JTSGeometry

calculateJTSPeer

public abstract com.vividsolutions.jts.geom.Geometry calculateJTSPeer()


Copyright © 1996-2010 Geotools. All Rights Reserved.