Class GeometryPrecisionReducer

java.lang.Object
org.locationtech.jts.precision.GeometryPrecisionReducer

public class GeometryPrecisionReducer extends Object
Reduces the precision of a Geometry according to the supplied PrecisionModel, ensuring that the result is topologically valid.
Version:
1.12
  • Field Details

    • targetPM

      private PrecisionModel targetPM
    • removeCollapsed

      private boolean removeCollapsed
    • changePrecisionModel

      private boolean changePrecisionModel
    • isPointwise

      private boolean isPointwise
  • Constructor Details

    • GeometryPrecisionReducer

      public GeometryPrecisionReducer(PrecisionModel pm)
  • Method Details

    • reduce

      public static Geometry reduce(Geometry g, PrecisionModel precModel)
      Convenience method for doing precision reduction on a single geometry, with collapses removed and keeping the geometry precision model the same, and preserving polygonal topology.
      Parameters:
      g - the geometry to reduce
      precModel - the precision model to use
      Returns:
      the reduced geometry
    • reducePointwise

      public static Geometry reducePointwise(Geometry g, PrecisionModel precModel)
      Convenience method for doing pointwise precision reduction on a single geometry, with collapses removed and keeping the geometry precision model the same, but NOT preserving valid polygonal topology.
      Parameters:
      g - the geometry to reduce
      precModel - the precision model to use
      Returns:
      the reduced geometry
    • setRemoveCollapsedComponents

      public void setRemoveCollapsedComponents(boolean removeCollapsed)
      Sets whether the reduction will result in collapsed components being removed completely, or simply being collapsed to an (invalid) Geometry of the same type. The default is to remove collapsed components.
      Parameters:
      removeCollapsed - if true collapsed components will be removed
    • setChangePrecisionModel

      public void setChangePrecisionModel(boolean changePrecisionModel)
      Sets whether the PrecisionModel of the new reduced Geometry will be changed to be the PrecisionModel supplied to specify the precision reduction.

      The default is to not change the precision model

      Parameters:
      changePrecisionModel - if true the precision model of the created Geometry will be the the precisionModel supplied in the constructor.
    • setPointwise

      public void setPointwise(boolean isPointwise)
      Sets whether the precision reduction will be done in pointwise fashion only. Pointwise precision reduction reduces the precision of the individual coordinates only, but does not attempt to recreate valid topology. This is only relevant for geometries containing polygonal components.
      Parameters:
      isPointwise - if reduction should be done pointwise only
    • reduce

      public Geometry reduce(Geometry geom)
    • reducePointwise

      private Geometry reducePointwise(Geometry geom)
    • fixPolygonalTopology

      private Geometry fixPolygonalTopology(Geometry geom)
    • changePM

      private Geometry changePM(Geometry geom, PrecisionModel newPM)
      Duplicates a geometry to one that uses a different PrecisionModel, without changing any coordinate values.
      Parameters:
      geom - the geometry to duplicate
      newPM - the precision model to use
      Returns:
      the geometry value with a new precision model
    • createEditor

      private GeometryEditor createEditor(GeometryFactory geomFactory, PrecisionModel newPM)
    • createFactory

      private GeometryFactory createFactory(GeometryFactory inputFactory, PrecisionModel pm)