JTS Topology Suite version 1.13

## com.vividsolutions.jts.operation
Class IsSimpleOp

    java.lang.Object
      com.vividsolutions.jts.operation.IsSimpleOp

    public class IsSimpleOp

extends java.lang.Object

Tests whether a `Geometry` is simple. In general, the SFS specification of simplicity follows the rule:

- A Geometry is simple if and only if the only self-intersections are at boundary points.

Simplicity is defined for each `Geometry` type as follows:

- Polygonal geometries are simple by definition, so `isSimple` trivially returns true. (Note: this means that `isSimple` cannot be used to test for (invalid) self-intersections in `Polygon`s. In order to check if a `Polygonal` geometry has self-intersections, use `Geometry.isValid()`).
- Linear geometries are simple iff they do not self-intersect at interior points (i.e. points other than boundary points). This is equivalent to saying that no two linear components satisfy the SFS `Geometry.touches(Geometry)` predicate.
- Zero-dimensional (point) geometries are simple if and only if they have no repeated points.
- Empty geometries are always simple, by definition

For `Lineal` geometries the evaluation of simplicity can be customized by supplying a `BoundaryNodeRule` to define how boundary points are determined. The default is the SFS-standard `BoundaryNodeRule.MOD2_BOUNDARY_RULE`. Note that under the `Mod-2` rule, closed `LineString`s (rings) will never satisfy the `touches` predicate at their endpoints, since these are interior points, not boundary points. If it is required to test whether a set of `LineString`s touch only at their endpoints, use `IsSimpleOp` with `BoundaryNodeRule.ENDPOINT_BOUNDARY_RULE`. For example, this can be used to validate that a set of lines form a topologically valid linear network.

Version:
  1.7
See Also:
  `BoundaryNodeRule`

Constructor Summary
`IsSimpleOp()` Deprecated. use IsSimpleOp(Geometry)
`IsSimpleOp(Geometry geom)` Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
`IsSimpleOp(Geometry geom, BoundaryNodeRule boundaryNodeRule)` Creates a simplicity checker using a given `BoundaryNodeRule`

Method Summary
`Coordinate` `getNonSimpleLocation()` Gets a coordinate for the location where the geometry fails to be simple.
`boolean` `isSimple()` Tests whether the geometry is simple.
`boolean` `isSimple(LineString geom)` Deprecated. use isSimple()
`boolean` `isSimple(MultiLineString geom)` Deprecated. use isSimple()
`boolean` `isSimple(MultiPoint mp)` Deprecated. use isSimple()

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### IsSimpleOp

    public IsSimpleOp()

  Deprecated. use IsSimpleOp(Geometry)

  Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule

### IsSimpleOp

    public IsSimpleOp(Geometry geom)

  Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule

  Parameters:
    `geom` - the geometry to test

### IsSimpleOp

    public IsSimpleOp(Geometry geom,
                      BoundaryNodeRule boundaryNodeRule)

  Creates a simplicity checker using a given `BoundaryNodeRule`

  Parameters:
    `geom` - the geometry to test
    `boundaryNodeRule` - the rule to use.

Method Detail

### isSimple

    public boolean isSimple()

  Tests whether the geometry is simple.

  Returns:
    true if the geometry is simple

### getNonSimpleLocation

    public Coordinate getNonSimpleLocation()

  Gets a coordinate for the location where the geometry fails to be simple. (i.e. where it has a non-boundary self-intersection). `isSimple()` must be called before this method is called.

  Returns:
    a coordinate for the location of the non-boundary self-intersection or null if the geometry is simple

### isSimple

    public boolean isSimple(LineString geom)

  Deprecated. use isSimple()

  Reports whether a `LineString` is simple.

  Parameters:
    `geom` - the lineal geometry to test
  Returns:
    true if the geometry is simple

### isSimple

    public boolean isSimple(MultiLineString geom)

  Deprecated. use isSimple()

  Reports whether a `MultiLineString` geometry is simple.

  Parameters:
    `geom` - the lineal geometry to test
  Returns:
    true if the geometry is simple

### isSimple

    public boolean isSimple(MultiPoint mp)

  Deprecated. use isSimple()

  A MultiPoint is simple iff it has no repeated points

JTS Topology Suite version 1.13