Class VWSimplifier


  • public class VWSimplifier
    extends java.lang.Object
    Simplifies a Geometry using the Visvalingam-Whyatt area-based algorithm. Ensures that any polygonal geometries returned are valid. Simple lines are not guaranteed to remain simple after simplification. All geometry types are handled. Empty and point geometries are returned unchanged. Empty geometry components are deleted.

    The simplification tolerance is specified as a distance. This is converted to an area tolerance by squaring it.

    Note that in general this algorithm does not preserve topology - e.g. polygons can be split, collapse to lines or disappear holes can be created or disappear, and lines can cross.

    Known Bugs

    • Not yet optimized for performance
    • Does not simplify the endpoint of rings

    To Do

    • Allow specifying desired number of vertices in the output
    Version:
    1.7
    • Constructor Summary

      Constructors 
      Constructor Description
      VWSimplifier​(Geometry inputGeom)
      Creates a simplifier for a given geometry.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Geometry getResultGeometry()
      Gets the simplified geometry.
      void setDistanceTolerance​(double distanceTolerance)
      Sets the distance tolerance for the simplification.
      void setEnsureValid​(boolean isEnsureValidTopology)
      Controls whether simplified polygons will be "fixed" to have valid topology.
      static Geometry simplify​(Geometry geom, double distanceTolerance)
      Simplifies a geometry using a given tolerance.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • VWSimplifier

        public VWSimplifier​(Geometry inputGeom)
        Creates a simplifier for a given geometry.
        Parameters:
        inputGeom - the geometry to simplify
    • Method Detail

      • simplify

        public static Geometry simplify​(Geometry geom,
                                        double distanceTolerance)
        Simplifies a geometry using a given tolerance.
        Parameters:
        geom - geometry to simplify
        distanceTolerance - the tolerance to use
        Returns:
        a simplified version of the geometry
      • setDistanceTolerance

        public void setDistanceTolerance​(double distanceTolerance)
        Sets the distance tolerance for the simplification. All vertices in the simplified geometry will be within this distance of the original geometry. The tolerance value must be non-negative.
        Parameters:
        distanceTolerance - the approximation tolerance to use
      • setEnsureValid

        public void setEnsureValid​(boolean isEnsureValidTopology)
        Controls whether simplified polygons will be "fixed" to have valid topology. The caller may choose to disable this because:
        • valid topology is not required
        • fixing topology is a relative expensive operation
        • in some pathological cases the topology fixing operation may either fail or run for too long
        The default is to fix polygon topology.
        Parameters:
        isEnsureValidTopology -
      • getResultGeometry

        public Geometry getResultGeometry()
        Gets the simplified geometry.
        Returns:
        the simplified geometry