Class TLcdS57Face

java.lang.Object
com.luciad.format.s57.TLcdS57Face
All Implemented Interfaces:
ILcdBounded, ILcdCurve, ILcdPointList, ILcdPointList2, ILcdPolygon, ILcdRing, ILcdShape, ILcd2DEditablePointList, ILcd2DEditablePolygon, ILcd2DEditableShape, ILcdCache, ILcdCloneable, ILcdInvalidateable, Serializable, Cloneable

Represents an face in the S-57 domain model. An S-57 face is a simple polygon geometry, and is part of an area feature.
Since:
11.0
See Also:
  • Constructor Details

    • TLcdS57Face

      public TLcdS57Face(int aFaceId, TLcdS57Edge[] aEdges, int[] aEdgeOrientations, int[] aEdgeUsages, int[] aEdgeMasks)
      Creates a new S-57 Face geometry with the specified properties.
      Parameters:
      aFaceId - an ID for this face, unique within the model.
      aEdges - the edges defining the geometry of this Line feature.
      aEdgeOrientations - array containing for each edge the orientation in which it should be traversed. See getEdgeOrientation(int) for more information on allowable values.
      aEdgeUsages - array containing for each edge the usage of the edge. See getEdgeUsage(int) for more information on allowable values.
      aEdgeMasks - array containing for each edge the mask of the edge. See getEdgeMask(int) for more information on allowable values.
  • Method Details

    • getId

      public int getId()
      Returns the ID of this edge, unique among all faces within the model.
      Returns:
      the ID of this edge, unique among all faces within the model.
    • getEdgeCount

      public int getEdgeCount()
      Returns the number of edges this area consists of.
      Returns:
      the number of edges this area consists of.
    • getEdge

      public TLcdS57Edge getEdge(int aIndex)
      Returns the edge that is part of this area, at the given index.
      Parameters:
      aIndex - the edge that is part of this area, at the given index.
      Returns:
      the edge at the given index.
    • getEdgeOrientation

      public int getEdgeOrientation(int aIndex)
      Returns the orientation of the edge that is part of this face, at the given index. The orientation indicates in which direction the edge should be traversed to iterate over all points of this face in forward direction. One of TLcdS57Constants.ORIENTATION_FORWARD or TLcdS57Constants.ORIENTATION_REVERSE.
      Parameters:
      aIndex - the orientation of the edge that is part of this face, at the given index.
      Returns:
      the orientation of the edge at the given index.
    • getEdgeUsage

      public int getEdgeUsage(int aIndex)
      Returns the usage of the edge that is part of this face, at the given index. The usage indicates whether the edge is part of the outer or inner boundary of an face. One of TLcdS57Constants.USAGE_EXTERIOR, TLcdS57Constants.USAGE_INTERIOR or TLcdS57Constants.USAGE_EXTERIOR_TRUNCATED.
      Parameters:
      aIndex - the usage of the edge that is part of this face, at the given index.
      Returns:
      the usage of the edge at the given index.
    • getEdgeMask

      public int getEdgeMask(int aIndex)
      Returns the mask of the edge that is part of this face, at the given index. The mask indicates whether the edge should be rendered or not. In some cases, e.g. for areas which are truncated by cell borders, the edges on the cell border should not be rendered. One of TLcdS57Constants.MASK_MASK, TLcdS57Constants.MASK_SHOW or TLcdS57Constants.MASK_NOT_APPLICABLE.
      Parameters:
      aIndex - the mask of the edge that is part of this face, at the given index.
      Returns:
      the mask of the edge at the given index.
    • invalidateObject

      public void invalidateObject()
      Description copied from interface: ILcdInvalidateable
      Invalidates all cached values of this object. Call this method whenever one or more of this object's compositing values has been changed, to notify this object it needs to recompute its cached values.
      Specified by:
      invalidateObject in interface ILcdInvalidateable
    • getCachedObject

      public Object getCachedObject(Object aKey)
      Description copied from interface: ILcdCache
      Looks up and returns the cached Object corresponding to the given key.
      Specified by:
      getCachedObject in interface ILcdCache
      Parameters:
      aKey - the key Object that was used for storing the cache Object.
      Returns:
      the cached Object, or null if there is no Object corresponding to the given key.
    • insertIntoCache

      public void insertIntoCache(Object aKey, Object aObject)
      Description copied from interface: ILcdCache
      Inserts a cache Object corresponding to the given key Object.
      Specified by:
      insertIntoCache in interface ILcdCache
      Parameters:
      aKey - the key Object that will be used to identify the Object. The key must therefore be a unique identifier, typically the caller itself: insertIntoCache(this, ...).
      aObject - the Object to be cached.
    • removeCachedObject

      public Object removeCachedObject(Object aKey)
      Description copied from interface: ILcdCache
      Looks up and removes the cached Object corresponding to the given key.
      Specified by:
      removeCachedObject in interface ILcdCache
      Parameters:
      aKey - the key Object that was used for storing the cache Object.
      Returns:
      the cached Object, or null if there was no Object corresponding to the given key.
    • clearCache

      public void clearCache()
      Description copied from interface: ILcdCache
      Clears the cache.
      Specified by:
      clearCache in interface ILcdCache
    • getInterpolation

      public String getInterpolation()
      Description copied from interface: ILcdCurve
      Returns the interpolation method used by this curve.

      A set of predefined constants are defined in this interface, which are used by the default ILcdCurve implementations provided by LuciadLightspeed.

      Custom implementations can define their own constants, and use them to interpret the interpolation of the curve.

      Specified by:
      getInterpolation in interface ILcdCurve
      Returns:
      the interpolation method used by this curve.
    • computePointSFCT

      public void computePointSFCT(double aParam, ILcd3DEditablePoint aPointSFCT)
      Description copied from interface: ILcdCurve
      Computes a point of the curve, defined by the given parameter.
      Specified by:
      computePointSFCT in interface ILcdCurve
      Parameters:
      aParam - a value of the closed interval [0,1]
      aPointSFCT - the point to store the computed curve point in
    • getEndTangent2D

      public double getEndTangent2D()
      Description copied from interface: ILcdCurve
      Returns the angle of the curve's tangent at the end point, in degrees counterclockwise from the direction at 3 o'clock.

      The tangent orientation is from the end point, away from the curve before it.

      This is the same as getTangent2D(1).

      Specified by:
      getEndTangent2D in interface ILcdCurve
      Returns:
      the curve's angle in the end point
    • getLength2D

      public double getLength2D(double aParam1, double aParam2)
      Description copied from interface: ILcdCurve
      Returns the length between two points of the curve, defined by the given parameters.
      • When aParam1 == aParam2, the length is 0.
      • When aParam1 == 0 and aParam2 == 1, the length is the whole length of the curve.
      • When aParam1 > aParam2, the length is (aParam1 to 1) + (0 to aParam2).
      Specified by:
      getLength2D in interface ILcdCurve
      Parameters:
      aParam1 - a value of the closed interval [0,1]
      aParam2 - a value of the closed interval [0,1]
      Returns:
      the length of the curve.
    • getLineSegmentIntersectionCount

      public int getLineSegmentIntersectionCount(ILcdPoint aP1, ILcdPoint aP2)
      Description copied from interface: ILcdCurve
      Returns the number of intersections between this curve and a line segment defined by the two specified points.

      This information can be used to perform containment calculations, if this curve is closed or if this curve is part of a composite closed curve. By determining the number of intersections between this curve and a line segment starting from a given point in a fixed direction, one can determine whether a point is located within the closed curve by using the even-odd rule.

      Specified by:
      getLineSegmentIntersectionCount in interface ILcdCurve
      Parameters:
      aP1 - the first point of the line segment
      aP2 - the second point of the line segment
      Returns:
      the number of intersections between the curve and the line segment
    • getStartTangent2D

      public double getStartTangent2D()
      Description copied from interface: ILcdCurve
      Returns the angle of the curve's tangent at the start point, in degrees counterclockwise from the direction at 3 o'clock.

      The tangent orientation is from the start point towards the rest of the shape.

      This is the same as getTangent2D(0).

      Specified by:
      getStartTangent2D in interface ILcdCurve
      Returns:
      the curve's angle in the start point
    • getStartPoint

      public ILcdPoint getStartPoint()
      Description copied from interface: ILcdCurve
      Retrieves the start point of the curve.

      This is equivalent to computePointSFCT(0).

      Specified by:
      getStartPoint in interface ILcdCurve
      Returns:
      the start point of the curve
    • getEndPoint

      public ILcdPoint getEndPoint()
      Description copied from interface: ILcdCurve
      Retrieves the end point of the curve.

      This is equivalent to computePointSFCT(1).

      Specified by:
      getEndPoint in interface ILcdCurve
      Returns:
      the end point of the curve
    • getTangent2D

      public double getTangent2D(double aParam)
      Description copied from interface: ILcdCurve
      Returns the angle of the curve's tangent in the point defined by the given parameter, in degrees counterclockwise from the direction at 3 o'clock.

      The tangent orientation is from the point at parameter aParam towards the rest of the shape.

      Specified by:
      getTangent2D in interface ILcdCurve
      Parameters:
      aParam - a value of the closed interval [0,1]
      Returns:
      the curve's angle in the point defined by the given parameter
    • setOrientation

      public void setOrientation(int aOrientation)
      Description copied from interface: ILcd2DEditablePolygon
      Sets the orientation of this ILcd2DEditablePolygon.
      Specified by:
      setOrientation in interface ILcd2DEditablePolygon
      Parameters:
      aOrientation - ILcd2DEditablePolygon.CLOCKWISE, ILcd2DEditablePolygon.COUNTERCLOCKWISE or ILcd2DEditablePolygon.INVALID_ORIENTATION.
    • move2DPoint

      public void move2DPoint(int aIndex, double aX, double aY)
      Description copied from interface: ILcd2DEditablePointList
      Moves the specified point of this ILcd2DEditablePointList to the given point in the 2D space. Only the first two dimensions of the ILcdShape are considered. The third dimension is left unchanged.
      Specified by:
      move2DPoint in interface ILcd2DEditablePointList
      Parameters:
      aIndex - a valid index in the list of points.
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
    • removePointAt

      public void removePointAt(int aIndex)
      Description copied from interface: ILcd2DEditablePointList
      Removes the point at the given index from this ILcd2DEditablePointList.
      Specified by:
      removePointAt in interface ILcd2DEditablePointList
      Parameters:
      aIndex - a valid index in the list of ILcdPoint objects.
    • insert2DPoint

      public void insert2DPoint(int aIndex, double aX, double aY)
      Description copied from interface: ILcd2DEditablePointList
      Inserts a point at the given index into this ILcd2DEditablePointList.
      Specified by:
      insert2DPoint in interface ILcd2DEditablePointList
      Parameters:
      aIndex - a valid new index in the list of points.
      aX - the x coordinate of the new point.
      aY - the y coordinate of the new point.
    • move2D

      public void move2D(double aX, double aY)
      Description copied from interface: ILcd2DEditableShape
      Moves this ILcd2DEditableShape to the given point in the 2D space. The focus point is used as the handle by which the shape is moved. Only the first two dimensions of the ILcdShape are considered. The third dimension is left unchanged.
      Specified by:
      move2D in interface ILcd2DEditableShape
      Parameters:
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
    • translate2D

      public void translate2D(double aDeltaX, double aDeltaY)
      Description copied from interface: ILcd2DEditableShape
      Translates this ILcd2DEditableShape from its current position over the given translation vector in the 2D space. Only the first two dimensions of the ILcdShape are considered. The third dimension is left unchanged.
      Specified by:
      translate2D in interface ILcd2DEditablePointList
      Specified by:
      translate2D in interface ILcd2DEditableShape
      Parameters:
      aDeltaX - the x coordinate of the translation vector.
      aDeltaY - the y coordinate of the translation vector.
    • move2D

      public void move2D(ILcdPoint aPoint)
      Description copied from interface: ILcd2DEditableShape
      Moves this ILcd2DEditableShape to the given point in the 2D space. The focus point is used as the handle by which the shape is moved. Only the first two dimensions of the ILcdShape and the ILcdPoint are considered. The third dimension is left unchanged.
      Specified by:
      move2D in interface ILcd2DEditableShape
      Parameters:
      aPoint - the ILcdPoint to move to.
      See Also:
    • translate2DPoint

      public void translate2DPoint(int aIndex, double aDeltaX, double aDeltaY)
      Description copied from interface: ILcd2DEditablePointList
      Translates the specified point of this ILcd2DEditablePointList from its current position over the given translation vector in the 2D space. Only the first two dimensions of the points are considered. The third dimension is left unchanged.
      Specified by:
      translate2DPoint in interface ILcd2DEditablePointList
      Parameters:
      aDeltaX - the x coordinate of the translation vector.
      aDeltaY - the y coordinate of the translation vector.
    • getOrientation

      public int getOrientation()
      Description copied from interface: ILcdPolygon
      Returns the orientation of this ILcdPolygon: ILcdPolygon.CLOCKWISE or ILcdPolygon.COUNTERCLOCKWISE.
      Specified by:
      getOrientation in interface ILcdPolygon
      Returns:
      the orientation of this ILcdPolygon: ILcdPolygon.CLOCKWISE or ILcdPolygon.COUNTERCLOCKWISE. This method should not return INVALID_ORIENTATION, which is only to be used for resetting the orientation so that it can be recalculated.
    • getPointSFCT

      public final void getPointSFCT(int aIndex, ILcd3DEditablePoint aPointSFCT)
      Description copied from interface: ILcdPointList
      Stores the coordinates of the point at aIndex in the given point.
      Specified by:
      getPointSFCT in interface ILcdPointList
      Parameters:
      aIndex - the index of the point for which to retrieve the coordinates.
      aPointSFCT - the side-effect parameter in which to store the coordinates of the requested point.
    • getX

      public double getX(int aIndex)
      Description copied from interface: ILcdPointList
      Returns the X coordinate of the point at aIndex.
      Specified by:
      getX in interface ILcdPointList
      Parameters:
      aIndex - the index of the point for which to return the X coordinate.
      Returns:
      the X coordinate of the point at aIndex.
    • getY

      public double getY(int aIndex)
      Description copied from interface: ILcdPointList
      Returns the Y coordinate of the point at aIndex.
      Specified by:
      getY in interface ILcdPointList
      Parameters:
      aIndex - the index of the point for which to return the Y coordinate.
      Returns:
      the Y coordinate of the point at aIndex.
    • getZ

      public double getZ(int aIndex)
      Description copied from interface: ILcdPointList
      Returns the Z coordinate of the point at aIndex.
      Specified by:
      getZ in interface ILcdPointList
      Parameters:
      aIndex - the index of the point for which to return the Z coordinate.
      Returns:
      the Z coordinate of the point at aIndex.
    • getPoint

      public ILcdPoint getPoint(int aIndex) throws IndexOutOfBoundsException
      Description copied from interface: ILcdPointList
      Returns the ILcdPoint at a given index.
      Specified by:
      getPoint in interface ILcdPointList
      Parameters:
      aIndex - a valid index in the list of ILcdPoint objects.
      Returns:
      the ILcdPoint at the given index.
      Throws:
      IndexOutOfBoundsException - if the given index is out of bounds.
    • getPointCount

      public int getPointCount()
      Description copied from interface: ILcdPointList
      Returns the number of ILcdPoint objects in the list.
      Specified by:
      getPointCount in interface ILcdPointList
      Returns:
      the number of ILcdPoint objects in the list.
    • contains2D

      public boolean contains2D(ILcdPoint aPoint)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given ILcdPoint in the 2D space. Only the first two dimensions of the ILcdShape and the ILcdPoint are considered.
      Specified by:
      contains2D in interface ILcdShape
      Parameters:
      aPoint - the ILcdPoint to test.
      Returns:
      the boolean result of the containment test.
      See Also:
    • contains2D

      public boolean contains2D(double aX, double aY)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given point in the 2D space. Only the first two dimensions of the ILcdShape are considered.
      Specified by:
      contains2D in interface ILcdShape
      Parameters:
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
      Returns:
      the boolean result of the containment test.
    • contains3D

      public boolean contains3D(ILcdPoint aPoint)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given ILcdPoint in the 3D space.
      Specified by:
      contains3D in interface ILcdShape
      Parameters:
      aPoint - the ILcdPoint to test.
      Returns:
      the boolean result of the containment test.
      See Also:
    • contains3D

      public boolean contains3D(double aX, double aY, double aZ)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given point in the 3D space.
      Specified by:
      contains3D in interface ILcdShape
      Parameters:
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
      aZ - the z coordinate of the point.
      Returns:
      the boolean result of the containment test.
    • getFocusPoint

      public ILcdPoint getFocusPoint()
      Description copied from interface: ILcdShape
      Returns the focus point of this ILcdShape.
      Specified by:
      getFocusPoint in interface ILcdShape
      Returns:
      the focus point of this ILcdShape.
    • getBounds

      public ILcdBounds getBounds()
      Description copied from interface: ILcdBounded
      Returns the ILcdBounds by which the geometry of this ILcdBounded object is bounded.

      If the geometry does not allow retrieving valid bounds (for example a polyline with 0 points) the return value is unspecified. It is highly recommended to return an undefined bounds. You can create undefined bounds using the default constructors of TLcdLonLatBounds or TLcdXYBounds.

      Specified by:
      getBounds in interface ILcdBounded
      Returns:
      the ILcdBounds by which the geometry of this ILcdBounded object is bounded.
    • clone

      public Object clone()
      Description copied from interface: ILcdCloneable

      Makes Object.clone() public.

      When for example extending from java.lang.Object, it can be implemented like this:
      
       public Object clone() {
         try {
           return super.clone();
         } catch ( CloneNotSupportedException e ) {
           // Cannot happen: extends from Object and implements Cloneable (see also Object.clone)
           throw new RuntimeException( e );
         }
       }
       
      Specified by:
      clone in interface ILcdCloneable
      Overrides:
      clone in class Object
      See Also: