LocationTech JTS Topology Suite 1.20.0

New Features

  • Add CoverageValidator CoveragePolygonValidator
  • Add CoverageGapFinder
  • Add CoverageUnion
  • Add CoverageSimplifier
  • Add OverlayNG support for simple GeometryCollection inputs
  • Add Geometry.hasDimension(int dim) method
  • Add ConcaveHull.alphaShape function
  • Add OffsetCurve Joined mode
  • Add PointLocation.isOnSegment function
  • Add RelateNG API for improved topological relationship functionality and performance

Functionality Improvements

  • Improve TopologyPreservingSimplifier to prevent edge-disjoint line collapse 
  • Improve OffsetCurve to return more linework for some input situations 
  • Reduce buffer curve short fillet segments 
  • Added ability to specify boundary for LargestEmptyCircle 
  • Improve DouglaPeuckerSimplifier and TopologyPreservingSimplifier to handle ring endpoints 
  • Add Angle functions sinSnap and cosSnap to avoid small errors, e.g. with buffer operations 
  • Improve Buffer input simplification for rings 
  • Improve CoverageSimplifier with ring removal, smoothing, inner/outer and per-feature tolerances

Bug Fixes

  • Fix WKBReader and WKBWriter handling of M measures when writing to WKB and reading from WKB
  • Fix PreparedGeometry handling of EMPTY elements 
  • Fix WKBReader parsing of WKB containing multiple empty elements 
  • Fix LineSegment.orientationIndex(LineSegment) to correct orientation for non-collinear segments on right 
  • Fix DepthSegment compareTo method 
  • Ensure GeometryFixer does not change coordinate dimension 
  • Improve ConvexHull radial sort robustness 
  • Improve robustness of Delaunay Triangulation frame size heuristic 
  • Fix PreparedLineString.intersects to handle mixed GCs correctly 
  • Fix QuadEdgeSubdivision.TriangleEdgesListVisitor 
  • Fix PolygonHoleJoiner to handle all valid inputs (allows PolygonTriangulator, ConstrainedDelaunayTriangulator, and ConcaveHullOfPolygons to work correctly) 
  • Fix OffsetCurve handling of input with repeated points 
  • Fix OffsetCurve handling zero offset distance 
  • Fix MaximumInscribedCircle and LargestEmptyCircle to avoid long looping for thin inputs 
  • Fix OffsetCurve to use a minimum QuadrantSegs value 
  • Fix HilbertEncoder Y extent handling
  • Fix Geometry.getCoordinate to return non-null coordinate for collections with empty first element 
  • Fix LargestEmptyCircle to handle polygonal obstacles 
  • Make intersection computation more robust 
  • Fix VariableBuffer to handle zero vertex buffer distances correctly 
  • Fix IncrementalDelaunayTriangulator to ensure triangulation boundary is convex 
  • Fix OverlayNG Area Check heuristic for difference 
  • Fix InteriorPointPoint to handle empty elements
  • Fix DistanceOp for empty elements 
  • Fix predicates for MultiPoint with EMPTY 
  • Fix InteriorPoint for MultiLineString with EMPTY 
  • Fix TopologyPreservingSimplifier to prevent incorrect topology from jumping components 
  • Fix OffsetCurve to ensure end segments are included 
  • Fix PointLocator to respect BoundaryNodeRule for single lines 
  • Fix BufferOp Inverted Ring Removal check 
  • Improve VariableBuffer segment buffer cap generation 
  • Fix TopologyPreservingSimplifier ring endpoint removal indexing

Performance Improvements

  • Improve Polygonizer performance in some cases with many islands 
  • Improve Convex Hull performance by avoiding duplicate uniquing 
  • Improve HPRtree performance 
  • Improve performance of noding and overlay via HPRtree 
  • Improve DistanceOp performance for Point-Point 
  • Improve CoveragePolygonValidator via section performance optimization 
Release Date
Release Type
Minor release