Release Date: 09/04/2024
Developer updates:
- Polygonal Coverages and Operations in JTS
- Validating Polygonal Coverages in JTS
- Simplifying Polygonal Coverages with JTS
- Fast Coverage Union in JTS
- JTS Topological Relationships - the Next Generation
- RelateNG Performance
Eclipse: LocationTech JTS Topology Suite 1.20.0 and release review / #794
New Features
- Add
CoverageValidatorCoveragePolygonValidator(#900) - Add
CoverageGapFinder(#900) - Add
CoverageUnion(#900) - Add
CoverageSimplifier(#911) - Add
OverlayNGsupport for simple GeometryCollection inputs (#915) - Add
Geometry.hasDimension(int dim)method {#944} - Add
ConcaveHull.alphaShapefunction (#952) - Add
OffsetCurveJoined mode (#956) - Add
PointLocation.isOnSegmentfunction (#1048) - Add
RelateNGAPI for improved topological relationship functionality and performance (#1052, #1055) - Add system property
jts.relate=ngto enable use of RelateNG inGeometrymethods (#1073)
Functionality Improvements
- Improve
TopologyPreservingSimplifierto prevent edge-disjoint line collapse (#925) - Improve
OffsetCurveto return more linework for some input situations (#956) - Reduce buffer curve short fillet segments (#960)
- Added ability to specify boundary for
LargestEmptyCircle(#973) - Improve
DouglaPeuckerSimplifierandTopologyPreservingSimplifierto handle ring endpoints (#1013) - Add
AnglefunctionssinSnapandcosSnapto avoid small errors, e.g. with buffer operations (#1016) - Improve Buffer input simplification for rings (#1022)
- Improve CoverageSimplifier with ring removal, smoothing, inner/outer and per-feature tolerances (#1060)
Bug Fixes
- Fix
WKBReaderandWKBWriterhandling of M measures when writing to WKB and reading from WKB (#734) - Fix
PreparedGeometryhandling of EMPTY elements (#904) - Fix
WKBReaderparsing of WKB containing multiple empty elements (#905) - Fix
LineSegment.orientationIndex(LineSegment)to correct orientation for non-collinear segments on right (#914) - Fix
DepthSegmentcompareTo method (#920) - Ensure
GeometryFixerdoes not change coordinate dimension (#922) - Improve
ConvexHullradial sort robustness (#927) - Improve robustness of Delaunay Triangulation frame size heuristic (#931)
- Fix
PreparedLineString.intersectsto handle mixed GCs correctly (#944) - Fix
QuadEdgeSubdivision.TriangleEdgesListVisitor(#945) - Fix
PolygonHoleJoinerto handle all valid inputs
(allowsPolygonTriangulator,ConstrainedDelaunayTriangulator, andConcaveHullOfPolygonsto work correctly) (#946) - Fix
OffsetCurvehandling of input with repeated points (#956) - Fix
OffsetCurvehandling zero offset distance (#971) - Fix
MaximumInscribedCircleandLargestEmptyCircleto avoid long looping for thin inputs (#978) - Fix
OffsetCurveto use a minimum QuadrantSegs value (#981) - Fix
HilbertEncoderY extent handling - Fix
Geometry.getCoordinateto return non-null coordinate for collections with empty first element (#987) - Fix
LargestEmptyCircleto handle polygonal obstacles (#988) - Make intersection computation more robust (#989)
- Fix
VariableBufferto handle zero vertex buffer distances correctly (#997) - Fix
IncrementalDelaunayTriangulatorto ensure triangulation boundary is convex (#1004) - Fix OverlayNG Area Check heuristic for difference (#1005)
- Fix
InteriorPointPointto handle empty elements - Fix
DistanceOpfor empty elements (#1010) - Fix predicates for MultiPoint with EMPTY (#1015)
- Fix
InteriorPointfor MultiLineString with EMPTY (#1023) - Fix TopologyPreservingSimplifier to prevent incorrect topology from jumping components (#1024)
- Fix OffsetCurve to ensure end segments are included (#1029)
- Fix
PointLocatorto respectBoundaryNodeRulefor single lines (#1031) - Fix
BufferOpInverted Ring Removal check (#1038) - Improve
VariableBuffersegment buffer cap generation (#1041) - Fix
TopologyPreservingSimplifierring endpoint removal indexing (#1059)
Performance Improvements
- Improve
Polygonizerperformance in some cases with many islands (#906) - Improve Convex Hull performance by avoiding duplicate uniquing (#985)
- Improve
HPRtreeperformance (#1012) - Improve performance of noding and overlay via
HPRtree(#1012) - Improve
DistanceOpperformance for Point-Point (#1049) - Improve
CoveragePolygonValidatorvia section performance optimization (#1053)