LocationTech JTS Topology Suite™ 1.17.0

API Changes

  • Change Polygon getExteriorRing and getInteriorRingN accessors to return LinearRing.
    • This is a binary incompatible change to the method signature. Recompilation is necessary. No source code changes are required.

Functionality Improvements

  • Added IndexedFacetDistance.isWithinDistance
  • Added OrdinateFormat to ensure that ordinate text output is accurate and consistent
  • Added Triangle.circumcentreDD
  • Added DD.determinant methods
  • Added Envelope methods getDiameter, copy, disjoint (#483)
  • Added Intersection class, refactored library to use it (#468)
  • Added CascadedPolygonUnion union-by-buffer on error capability (#470)
  • Added HalfEdge support for direction points (#479)
  • Added CoordinateList.toCoordinateArray(isForward) (#482)
  • Addded HPRtree Hilbert Packed R-tree (#494)
  • Added VariableBuffer class for computing varying-distance buffers (#495)
  • Added LineSegment.reflect method (#495)
  • Added MaximumInscribedCircle algorithm (#530)
  • Added LargestEmptyCircle algorithm (#530)

Performance Improvements

  • Improve performance of UniqueCoordinateFilter (#422)
  • Improve performance of Polygonizer (#431)
  • Avoid use of ArrayList in MonotoneChain builders
  • Add DistanceOp line-line envelope short-circuit optimizations (#534)

Bug Fixes

  • Fix PackedCoordinateSequence.Float construction methods (#379, #381)
  • Fix bug in Quadtree.ensureExtent (#416)
  • Fix bugs in LinearLocation endpoint handling (#421)
  • Fix bug in MinimumBoundingCircle maximum diameter algorithm, and provide method for it
  • Improve robustness of CascadedPolygonUnion by adding OverlapUnion
  • Fix bug in HalfEdge.insert method which caused CCW order not to be preserved in some cases
  • Fix generation of Voronoi diagrams for cases with sites in a square (#447)
  • Fix use of clipping envelope in VoronoiDiagramBuilder
  • Fix infinite loop on empty input in IndexedPointInAreaLocator and SortedPackedIntervalRTree (#462)
  • Fix WKT parsing in Turkish locale (#456)
  • Improve accuracy of LineSegment.lineIntersection (#468)
  • Fix Distance3DOp coordinate ordering (#480)
  • Fix Geometry.reverse() to have consistent behaviour and to copy all fields (#513)
  • Fix MinimumBoundingCircle.farthestPoints to work correctly (#522 and #533)
  • Fix DistanceOp handling of geometry collections with empty components (#524)

JTS TestBuilder

Functionality Improvements

  • Add a UI to run external commands
  • Allow creating additional view layers
  • Add map view title, legend and border options
  • Support points in Reveal Topology mode

JTS TestRunner

Functionality Improvements

  • Allow test files/dirs to be specified as free args
  • Only load `.xml` files from directories


  • Added command-line utility to run JTS operations
Release Date
Release Type
Minor release