Interface CoordinateSequenceFilter

All Known Implementing Classes:
AdjacentVertexFinder.AdjacentVertexFilter, AffineTransformation, BufferCurveMaximumDistanceFinder.MaxMidpointDistanceFilter, CommonBitsRemover.Translater, CoordinatePrecisionReducerFilter, Debug.SegmentFindingFilter, DiscreteHausdorffDistance.MaxDensifiedByFractionDistanceFilter, NearestPointFinder.NearestPointFilter, SimpleMinimumClearance.ComputeMCCoordinateSequenceFilter, VertexLocater.NearestVertexFilter, VertexLocater.NearVerticesFilter

public interface CoordinateSequenceFilter
An interface for classes which process the coordinates in a CoordinateSequence. A filter can either record information about each coordinate, or change the value of the coordinate. Filters can be used to implement operations such as coordinate transformations, centroid and envelope computation, and many other functions. Geometry classes support the concept of applying a CoordinateSequenceFilter to each CoordinateSequences they contain.

For maximum efficiency, the execution of filters can be short-circuited by using the isDone() method.

CoordinateSequenceFilter is an example of the Gang-of-Four Visitor pattern.

Note: In general, it is preferable to treat Geometrys as immutable. Mutation should be performed by creating a new Geometry object (see GeometryEditor and GeometryTransformer for convenient ways to do this). An exception to this rule is when a new Geometry has been created via Geometry.copy(). In this case mutating the Geometry will not cause aliasing issues, and a filter is a convenient way to implement coordinate transformation.

Version:
1.7
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Performs an operation on a coordinate in a CoordinateSequence.
    boolean
    Reports whether the application of this filter can be terminated.
    boolean
    Reports whether the execution of this filter has modified the coordinates of the geometry.
  • Method Details

    • filter

      void filter(CoordinateSequence seq, int i)
      Performs an operation on a coordinate in a CoordinateSequence.
      Parameters:
      seq - the CoordinateSequence to which the filter is applied
      i - the index of the coordinate to apply the filter to
    • isDone

      boolean isDone()
      Reports whether the application of this filter can be terminated. Once this method returns false, it should continue to return false on every subsequent call.
      Returns:
      true if the application of this filter can be terminated.
    • isGeometryChanged

      boolean isGeometryChanged()
      Reports whether the execution of this filter has modified the coordinates of the geometry. If so, Geometry.geometryChanged() will be executed after this filter has finished being executed.

      Most filters can simply return a constant value reflecting whether they are able to change the coordinates.

      Returns:
      true if this filter has changed the coordinates of the geometry