Class TLcdEllipsoidalAdvancedBinaryTopology

java.lang.Object
com.luciad.geometry.topology.ellipsoidal.TLcdEllipsoidalAdvancedBinaryTopology
All Implemented Interfaces:
ILcd2DAdvancedBinaryTopology

public class TLcdEllipsoidalAdvancedBinaryTopology extends Object implements ILcd2DAdvancedBinaryTopology
Implementation of ILcd2DAdvancedBinaryTopology on an ellipsoidal model. This implementation currently supports instances of the following interfaces:
  • ILcdPoint,
  • ILcdPolyline,
  • ILcdPolygon,
  • ILcdComplexPolygon,
  • ILcdArc,
  • ILcdCircularArc,
  • ILcdEllipse,
  • ILcdCircle,
  • ILcdBounds,
  • ILcdArcBand,
  • ILcdGeoBuffer,
  • ILcdVariableGeoBuffer.

Cartesian geometry (e.g. TLcdXYPolyline) is supported by this implementation. Straight lines are treated as geodesic lines (i.e the coordinates of a cartesian geometry are interpreted as lon/lat coordinates).

Performance

The current implementation caches (intermediate) results for ILcdShape instances which implement the ILcdCache interface. When performing repeated checks with the same shape or shapes, it is generally more efficient to reuse the same ILcd2DAdvancedBinaryTopology object, instead of creating a new instance for every check.

Since:
10.0
  • Constructor Details

    • TLcdEllipsoidalAdvancedBinaryTopology

      public TLcdEllipsoidalAdvancedBinaryTopology(ILcdEllipsoid aEllipsoid)
      Constructor for TLcdEllipsoidalAdvancedBinaryTopology
      Parameters:
      aEllipsoid - ellipsoid on which the binary topology relations are computed.
    • TLcdEllipsoidalAdvancedBinaryTopology

      public TLcdEllipsoidalAdvancedBinaryTopology(ILcdEllipsoid aEllipsoid, double aTolerance)

      Constructor for TLcdEllipsoidalAdvancedBinaryTopology allowing to specify a tolerance.

      In some cases, the result obtained when checking the topological relation between two shapes depends on the accuracy of the data used to represent both shapes.

      For example, you would expect that neighboring countries touch but not overlap. However, if the contours of the polygons used to represent both countries slightly cross at the common border (due to small errors in the data), the calculations would lead to the opposite result.

      This constructor allow you to set a tolerance value which is taken into account in the topology calculations. Points that lie within this tolerance value from each other are considered to be coincident.

      Parameters:
      aEllipsoid - ellipsoid on which the binary topology relations are computed.
      aTolerance - tolerance value (expressed in meters) used to determine the equality of two points in the topology calculations. This value should be larger than 0.01m.
  • Method Details

    • computeIntersectionMatrix

      public ILcdIntersectionMatrix computeIntersectionMatrix(ILcdShape aShape1, ILcdShape aShape2)
      Description copied from interface: ILcd2DAdvancedBinaryTopology
      Computes the intersection matrix of the two given shapes. Both shapes must be in the same coordinate system.
      Specified by:
      computeIntersectionMatrix in interface ILcd2DAdvancedBinaryTopology
      Parameters:
      aShape1 - the first shape
      aShape2 - the second shape
      Returns:
      the intersection matrix of the two given shapes
    • checkTopology

      public boolean checkTopology(ILcdShape aShape1, ILcdShape aShape2, ILcdIntersectionMatrixPattern aMatrixPattern)
      Description copied from interface: ILcd2DAdvancedBinaryTopology
      Checks whether the two given shapes satisfy the binary topology relation defined by the given matrix pattern. Both shapes must be in the same coordinate system.
      Specified by:
      checkTopology in interface ILcd2DAdvancedBinaryTopology
      Parameters:
      aShape1 - the first shape
      aShape2 - the second shape
      aMatrixPattern - the matrix pattern defining the binary topology relation to be checked
      Returns:
      true if the binary topology relation defined by aMatrixPattern holds true for aShape1 and aShape2, false otherwise.
    • getTolerance

      public double getTolerance()
      Returns the tolerance value (expressed in meters) used in the binary topology computations when checking the equality of two points.
      Returns:
      tolerance value (expressed in meters) used in the binary topology computations when checking the equality of two points.
    • setTolerance

      public void setTolerance(double aTolerance)
      Sets the tolerance value used in the binary topology computations when checking the equality of two points. The tolerance value should be expressed in meters. (The default value is 0.01m.)
      Parameters:
      aTolerance - tolerance value (expressed in meters) used in the binary topology computations.
    • getEllipsoid

      public ILcdEllipsoid getEllipsoid()
      Returns the ellipsoid on which the binary topology relations are computed
      Returns:
      ellipsoid on which the binary topology relations are computed.
    • setEllipsoid

      public void setEllipsoid(ILcdEllipsoid aEllipsoid)
      Sets the ellipsoid on which the binary topology relations are computed
      Parameters:
      aEllipsoid - ellipsoid on which the binary topology relations are computed.