Package org.meteoinfo.jts.operation
Class IsSimpleOp
- java.lang.Object
-
- org.meteoinfo.jts.operation.IsSimpleOp
-
public class IsSimpleOp extends java.lang.ObjectTests whether aGeometryis 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
Geometrytype as follows:- Polygonal geometries are simple by definition, so
isSimpletrivially returns true. (Note: this means that isSimple cannot be used to test for (invalid) self-intersections in Polygons. In order to check if a Polygonal geometry has self-intersections, useGeometry.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
Linealgeometries the evaluation of simplicity can be customized by supplying aBoundaryNodeRuleto define how boundary points are determined. The default is the SFS-standardBoundaryNodeRule.MOD2_BOUNDARY_RULE. Note that under the Mod-2 rule, closed LineStrings (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 ofLineStrings touch only at their endpoints, useIsSimpleOpwithBoundaryNodeRule.ENDPOINT_BOUNDARY_RULE. For example, this can be used to validate that a set of lines form a topologically valid linear network.- See Also:
BoundaryNodeRule
-
-
Constructor Summary
Constructors Constructor Description IsSimpleOp()Deprecated.use IsSimpleOp(Geometry)IsSimpleOp(Geometry geom)Creates a simplicity checker using the default SFS Mod-2 Boundary Node RuleIsSimpleOp(Geometry geom, BoundaryNodeRule boundaryNodeRule)Creates a simplicity checker using a givenBoundaryNodeRule
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description CoordinategetNonSimpleLocation()Gets a coordinate for the location where the geometry fails to be simple.booleanisSimple()Tests whether the geometry is simple.booleanisSimple(LineString geom)Deprecated.use isSimple()booleanisSimple(MultiLineString geom)Deprecated.use isSimple()booleanisSimple(MultiPoint mp)Deprecated.use isSimple()
-
-
-
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 givenBoundaryNodeRule- Parameters:
geom- the geometry to testboundaryNodeRule- 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 aLineStringis 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 aMultiLineStringgeometry 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
-
-